C++ 如何将特性作为模板结构的参数传递?

C++ 如何将特性作为模板结构的参数传递?,c++,templates,struct,arguments,typetraits,C++,Templates,Struct,Arguments,Typetraits,假设我有这样的东西 template<typename T1, typename T2> struct my_struct { using type = typename T1<T2>::type; }; 模板 结构我的结构 { 使用type=typename T1::type; }; 在main函数中,我希望能够使用test=typename my_struct::type编写其中test将等于float,因为remove_const_t返回float 如何

假设我有这样的东西

template<typename T1, typename T2>
struct my_struct
{
    using type = typename T1<T2>::type;
};
模板
结构我的结构
{
使用type=typename T1::type;
};
在main函数中,我希望能够使用test=typename my_struct::type编写
其中test将等于float,因为
remove_const_t
返回float


如何实现这一点?

您需要模板参数

语法将是:

template<template <typename> class C, typename T>
struct my_struct
{
    using type = typename C<T>::type;
};
模板
结构我的结构
{
使用type=typename C::type;
};
您需要一个模板,以便可以将模板传递到
my_struct
。那看起来像

template<template<typename> typename T1, typename T2>
struct my_struct
{
    using type = typename T1<T2>::type;
};
模板
结构我的结构
{
使用type=typename T1::type;
};
然后你会像这样使用它

using test = typename my_struct<is_integral, float>::type;
使用test=typename my_struct::type;

@disasterdrummer,应该可以工作。