如何获取 C++ 中类型的“嵌套”模板参数的数量?
我想写一个函数GetNumberOfTypes<T>()
返回 T
的模板参数数量:
constexpr int a = GetNumberOfTypes<int>(); //a == 0
constexpr int b = GetNumberOfTypes<std::vector<int>>(); //b == 1
constexpr int c = GetNumberOfTypes<std::tuple<int,int>>(); //c == 2
这可以通过某种方式实现吗?我搞乱了 sizeof...
,但我真的不知道我在做什么......
最佳答案
你可能(以某种方式)通过特化来做到这一点:
template <typename T>
struct TemplateArity : std::integral_constant<std::size_t, 0>
{};
template <template <typename...> class C, typename ...Ts>
struct TemplateArity<C<Ts...>> : std::integral_constant<std::size_t, sizeof...(Ts)>
{};
我们不能以通用方式混合类型、非类型和模板-模板参数,因此 std::array
不会被处理。
关于c++ - 在c++中获取模板类型的 'nested'模板参数的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67090484/