次の最小限の例は、次のようにコンパイルされg++ -std=c++11 -Wall tuple.cpp -o tuple
ます。
#include <tuple>
#include <iostream>
template<int i>
char get_elem_i(std::tuple<char, char> t)
{
return std::get<i>(t);
}
int main()
{
std::tuple<char, char> t('H','i');
char c = get_elem_i<0>(t);
std::cout << "The char is: " << c << std::endl;
}
現在、インデックスを指定するテンプレートを使用したくありません (正確な理由: 自動的に推定されるテンプレートがあり、それらすべてを指定する必要はありません)。だから私の最初の試みは:
char get_elem_i(int i, std::tuple<char, char> t)
{
return std::get<i>(t);
}
これはコンパイルできないことを理解しています。i
コンパイル時に認識されるコンパイラを保証する方法はありますか? たぶん、このようなものですか?
char get_elem_i(compile_time_known int i, std::tuple<char, char> t)