我希望有一个通用的模板类,该类允许用户传递容器使用:
template<class Container>
struct Sum
{
Container m_terms;
...
Run Code Online (Sandbox Code Playgroud)
其他类将从中派生,例如,
class MySum : public Sum<std::vector<int>>
{
...
Run Code Online (Sandbox Code Playgroud)
要么
class MySum4 : public Sum<std::array<int, 4>>
{
...
Run Code Online (Sandbox Code Playgroud)
容器需要从构造函数初始化。我最初的想法是使用std::initializer_list,例如
MySum ms{1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)
这将需要添加以下构造函数:
template<class Container>
struct Sum
{
Container m_terms;
Sum(std::initializer_list<typename Container::value_type> const& il) :
m_terms(il) { }
...
Run Code Online (Sandbox Code Playgroud)
class MySum : public Sum<std::vector<int>>
{
using Sum<std::vector<int>>::Sum;
...
Run Code Online (Sandbox Code Playgroud)
但是我又如何才能使MySum4正常工作?一个array不采取std::initializer_list<>。
这是显示编译器错误的更完整的代码:https : //wandbox.org/permlink/CZW3YaKdInwZZD8e
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |