我通过创建一个枚举类定义了一个元组及其索引:
/** 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
to的隐式转换是由语法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);