我正在尝试这样做。
int flag = 0;
if(big.size() <= small.size())
flag = 1; //use float
tuple<long, float> tup (1234.5678, 12341234.1234);
auto foo = get<flag>(tup);
但我得到错误:
error: the value of 'flag' is not usable in a constant expression
cout << get<flag>(tup);
- 和 -
note: 'int flag' is not const
int flag = 0;
答案 0 :(得分:0)
由于flag
的值在编译时是未知的,因此不能使用模板参数。
你需要使用类似的东西:
tuple<long, float> tup (1234.5678, 12341234.1234);
if ( flag )
{
auto foo = get<1>(tup);
}
else
{
auto foo = get<0>(tup);
}