[英]convert enum class too std::tuple
如果可能的话,我希望能够根据作为模板参数传递的枚举值创建一个 std::tuple,而不使用全局变量。
#include <tuple>
enum class Type
{
eInt,
eFloat,
eDouble
};
template <Type... type>
class Test
{
public:
private:
std::tuple < ? > m_data;
};
int main()
{
Test<Type::eDouble, Type::eInt> t1; // m_data = std::tuple<double, int>
Test<Type::eInt, Type::eFloat> t2; // m_data = std::tuple<int, float>
}
第一步,弄清楚如何将一个常量转换为一种类型:
template <Type> struct MakeType {};
template <> struct MakeType<Type::eInt> {using type = int;};
template <> struct MakeType<Type::eFloat> {using type = float;};
// ...
这使您可以执行例如MakeType<Type::eInt>::type
来获取int
。
现在您可以执行std::tuple<typename Maketype<T>::type...>
(其中T
是模板参数包,为了清晰起见,从type
重命名)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.