In C++0x kann man ein constexpr std::tuple erstellen, z. B. wie
#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);
Man kann ein std::tuple auch zur Laufzeit abfragen, z.B. über
int i2 = std::get<0>(tup);
Es ist jedoch nicht möglich, sie zur Kompilierungszeit abzufragen, z. B.,
constexpr int i2 = std::get<0>(tup);
wird einen Kompilierungsfehler auslösen (zumindest mit dem neuesten g++ Snapshot 2011-02-19).
Gibt es eine andere Möglichkeit, ein constexpr std::tuple zur Kompilierungszeit abzufragen?
Und wenn nicht, gibt es einen konzeptionellen Grund, warum man sie nicht abfragen sollte?
(Ich weiß, dass man die Verwendung von std::tuple vermeiden kann, z. B. durch Verwendung von boost::mpl oder boost::fusion, aber irgendwie klingt es falsch, die Tupel-Klasse nicht zu verwenden im neuen Standard zu verwenden...).
Übrigens, weiß jemand, warum
constexpr std::tuple<int, float, double> tup(i, f, d);
kompiliert gut, aber
constexpr std::tuple<int, float, double> tup(10, 2.4f, -10.4);
nicht?
Vielen Dank im Voraus! - lars