En C++ 0x, se puede crear una constexpr std :: tuple, p. Ej. comoCómo consultar un constexpr std :: tuple en tiempo de compilación?
#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);
One también puede consultar una std :: tuple en el tiempo de ejecución, p. a través de
int i2 = std::get<0>(tup);
Pero no es posible consultar en tiempo de compilación, por ejemplo,
constexpr int i2 = std::get<0>(tup);
arrojará un error de compilación (al menos con la última g ++ instantánea 2011-02-19).
¿Hay alguna otra manera de consultar un constexpr std :: tuple en tiempo de compilación?
Y si no, ¿hay alguna razón conceptual por la que no se debe consultar?
(Soy consciente de evitar el uso de std :: tupla, por ejemplo, mediante el uso de impulso :: MPL o impulsar :: fusión en su lugar, pero de alguna manera suena mal en no utilizar la clase tupla en la nueva norma .. .).
Por cierto, ¿alguien sabe por qué
constexpr std::tuple<int, float, double> tup(i, f, d);
compila bien, pero
constexpr std::tuple<int, float, double> tup(10, 2.4f, -10.4);
no
?
¡Muchas gracias de antemano! - lars
En n3225.pdf, solo el constructor predeterminado está marcado constexpr. Quizás es demasiado pronto para usar esta característica? – UncleBens