をinitializer_list使用してテンプレート機能私はこのようなstd::initializer_list
の最小値を計算する簡単な関数を書いた:C++ - パラメータとして
template<typename T>
inline T min(const std::initializer_list<T>& values) {
T minValue = values[0];
for (const auto& v : values)
if (v < minValue) minValue = v;
return minValue;
}
をしかし、私は次のエラーを取得:
error C2027: use of undefined type 'T'
error C2226: syntax error: unexpected type 'std::initializer<_Elem>'
error C2988: unrecognizable template declaration/definition
error C2059: syntax error: ')'
error C2143: syntax error: missing ';' before 'identifier'
I std::vector
でstd::initializer_list
を変更しようとしましたが、エラーはありませんでした。これは、std::initializer_list
をパラメータとしてテンプレート関数を定義できないということですか?私はstd::initializer_list
は何operator[]
を持っていない、documentationで見るのVisual Studio 2013
[mcve]を入力してください。 'initializer_list'には' operator [] 'はありません。また、['std :: min'](http://en.cppreference.com/w/cpp/algorithm/min)も存在することに注意してください。 – Barry
@Barryこれには、これらのエラーを示す正確なコードがあります。 'min()'関数を呼び出さなくても – DimChtz
[本当に](http://coliru.stacked-crooked.com/a/7acf72dcbc94641c) – jaggedSpire