我正在尝试创建一个名称空间变量,其值是给定类的模板参数(类型,非类型和模板模板)的数量。考虑以下代码:
template<class C>
inline constexpr size_t template_parameters_count = 666;
template<template<typename...> class C, typename... Ts>
inline constexpr size_t template_parameters_count<C<Ts...>> = sizeof...(Ts);
template<typename, typename, typename>
struct A {};
template<typename, typename, typename, bool>
struct B {};
template<typename, typename, typename, bool, template<typename...> typename>
struct C {};
template_parameters_count<A<int, int, int>>
是3。
template_parameters_count<B<int, int, int, true>>
是666,但我希望是4。
template_parameters_count<B<int, int, int, true, A>>
是666,但我希望是5。
我该怎么办?