【发布时间】:2017-08-11 10:20:51
【问题描述】:
我通过创建枚举类定义了一个元组及其索引:
/** parameter { key ; value1 ; value1 ; } */
using Parameter = std::tuple<unsigned, unsigned, unsigned>;
enum class ParameterKey : std::size_t {
KEY = 0,
VALUE1 = 1,
VALUE2 = 2
};
现在我想从这个元组中获取一个值:
const auto& key = std::get<ParameterKey::KEY>(*parameterPointer);
我认为int 到std::size_t 的隐式转换是由: std::size_t 语法保证的:
enum class ParameterKey : std::size_t {
....
}
但我收到此错误
error: no matching function for call to ‘get<KEY>(std::tuple<unsigned int, unsigned int, unsigned int>&)’
这很好用,但是太啰嗦了:
const auto& key = std::get<static_cast<unsigned>(ParameterKey::KEY)>(*parameterPointer);
【问题讨论】:
-
没有从枚举类到任何东西的隐式转换,您可以创建自己的
get。 -
好的,但是
: std::size_t语法的目的是什么? -
@sukovanej 指定underlying_type
标签: c++ tuples std enum-class