В 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);
нет?
Заранее большое спасибо!- ларс