C ++ 11。如何从没有const的元组中获取元素

时间:2017-01-02 18:13:10

标签: c++11 tuples

我正在尝试这样做。

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;

1 个答案:

答案 0 :(得分:0)

由于flag的值在编译时是未知的,因此不能使用模板参数。

你需要使用类似的东西:

tuple<long, float> tup (1234.5678, 12341234.1234); 
if ( flag )
{
   auto foo = get<1>(tup);
}
else
{
   auto foo = get<0>(tup);
}