【发布时间】:2013-05-07 17:21:43
【问题描述】:
以下最小示例使用 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)
【问题讨论】: