我已經定義了一個元組及其指數通過創建一個枚舉類:C++枚舉類的std ::爲size_t隱式轉換
/** 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'。 – Holt
好的,但':std :: size_t'語法的目的是什麼? – sukovanej
@sukovanej指定[underlying_type](http://en.cppreference.com/w/cpp/types/underlying_type) – Caleth