相关疑难解决方法(0)

统一类型和非类型模板参数

我有一个类型特征,检查给定类型是否是给定类模板的实例:

template <template <typename...> class C, typename T>
struct check_is_instance_of : std::false_type { };

template <template <typename...> class C, typename ...Ts>
struct check_is_instance_of<C, C<Ts...>> : std::true_type { };

template <template <typename...> class C, typename T>
struct is_instance_of : check_is_instance_of<C, std::remove_cv_t<T>> { };
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于非类型模板参数,因为它们不会被可变参数模板参数"捕获",因此

is_instance_of<std::integral_constant, std::true_type>
Run Code Online (Sandbox Code Playgroud)

产生编译错误.有没有办法编写一个is_instance_of适用于任意数量的类型和非类型模板参数的实现?

c++ template-meta-programming

9
推荐指数
1
解决办法
332
查看次数

标签 统计

c++ ×1

template-meta-programming ×1