繁体   English   中英

也将枚举类转换为 std::tuple

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM