当尝试使用以下代码遍历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标准?
答案 0 :(得分:1)
您忘记了#include <tuple>