迭代元组类型

时间:2020-04-01 10:28:37

标签: c++ templates tuples stdtuple

当尝试使用以下代码遍历std :: tuple类型时,在clang和gcc中出现编译器错误: error: implicit instantiation of undefined template 'std::tuple_element<0, std::tuple<int, float, char> >'

MSVC编译正常。

#include <array>
#include <iostream>

template <typename Tuple, size_t Index = 0>
inline void iterate_tuple_types() {
    using Element = typename std::tuple_element<Index, Tuple>::type;
    if constexpr (Index + 1 < std::tuple_size<Tuple>::value) {
        iterate_tuple_types<Tuple, Index + 1>();
    }
}

int main() {
    using t = std::tuple<int, float, char>;
    iterate_tuple_types<t>();
}

哪种编译器符合c ++ 20标准?

1 个答案:

答案 0 :(得分:1)

您忘记了#include <tuple>

相关问题