How to query a constexpr std::tuple at compile time?

后端 未结 3 1339
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-14 18:14

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;         


        
3条回答
  •  余生分开走
    2020-12-14 18:40

    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};
    }
    

提交回复
热议问题