Pre*_*nik 4 c++ arrays enums templates c++11
我发现有一个类基本上就像std::array是一些枚举的类,但是很方便.我想这不是很难想象如何实现它,让我们说它有这样的签名:
Run Code Online (Sandbox Code Playgroud)class enum_array <typename EnumT, typename ValueT, size_t N>
另一方面,在尝试实现所有标准std::array相关函数时,我注意到std::get为这样的类模板编写重载函数并不那么容易.
首先,我认为将std::get上述枚举的值作为模板参数是很自然的,因此大多数问题都出现了:
1)如果我想在课外定义这样的功能,我必须做以下事情:
Run Code Online (Sandbox Code Playgroud)namespace std { template <EnumT Index, typename EnumT, typename ValueT, size_t N> EnumT &get (enum_array<EnumT, ValueT, N> &val)
但是,EnumT当指定第一个模板参数时,问题引起的问题仍然未知,因此该模板实际上形成了错误
如果我放在EnumT Index参数列表的第二个或更多位置,那么就存在一个问题,我无法真正指定这个参数,并且必须在其中指定其他东西,这看起来不像普通的std::get调用std::array.
2)如果我定义get的内部函数enum_array类作为友元函数一切都会貌似除了罚款的事实,那么它会被放置在同一个命名空间中的类enum_array属.把它放进去namespace std并不是最好的设计.
所以我的问题是:可以std::get用我用C++模板机制为这样的类提到的方式重载enum参数吗?
(想要指出这个问题主要是出于好奇而引起的std::get,std::array在我看来,事后并不是最有用的功能)
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |