在C++0x中,可以创建一个constexpr std::tuple,比如:
#include <tuple>
constexpr int i = 10;
constexpr float f = 2.4f;
constexpr double d = -10.4;
constexpr std::tuple<int, float, double> tup(i, f, d);
还可以在运行时查询std::tuple,例如通过
int i2 = std::get<0>(tup);
但是不可能在编译时查询它,例如:
constexpr int i2 = std::get<0>(tup);
最新的g++快照(2011-02-19)会抛出编译错误。
还有其他方法可以在编译时查询constexpr std::tuple吗?
如果没有,是否有概念上的原因导致不能查询它?
(我知道要避免使用std::tuple,例如改用boost::mpl或boost::fusion,但是不使用新标准中的tuple类似乎不太对...)
顺便问一句,有人知道为什么吗?
constexpr std::tuple<int, float, double> tup(i, f, d);
编译通过,但是
constexpr std::tuple<int, float, double> tup(10, 2.4f, -10.4);
不是吗?
非常感谢! - lars