私は列挙型クラスを作成することにより、タプルとそのインデックスを定義している:C++のenumクラスの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