В С++ 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 вместо этого, но почему-то кажется неправильным не использовать класс кортежа в новом стандарте...).
Кстати, кто-нибудь знает, почему
constexpr std::tuple<int, float, double> tup(i, f, d);
компилируется отлично, но
constexpr std::tuple<int, float, double> tup(10, 2.4f, -10.4);
нет?
Большое спасибо! - lars