In C++0x, one can create a constexpr std::tuple, e.g. like
#include
constexpr int i = 10;
constexpr float f = 2.4f;
constexpr double d = -10.4;
Now, std::get<> is a constexpr function. The following code compiles for me if I use gcc c++ 11 or above.
constexpr int i2 = std::get<0>(tup);
constexpr std::tuple tup(10, 2.4f, -10.4);
Furthermore, you can generate a list of numbers at compile time by using make_index_sequence (c++14 or above) and access the tuple.
constexpr auto size = std::tuple_size::value;
for_sequence(std::make_index_sequence{}, [&](auto i){
constexpr auto property = std::get(tup);
std::cout<
constexpr void for_sequence(std::integer_sequence, F&& f) {
using unpack_t = int[];
(void)unpack_t{(static_cast(f(std::integral_constant{})), 0)..., 0};
}