C++ 如何用double专门化模板类?
我编写了一个依赖于给定类型和可变类型的模板类,如下所示:C++ 如何用double专门化模板类?,c++,templates,c++14,variadic-templates,template-specialization,C++,Templates,C++14,Variadic Templates,Template Specialization,我编写了一个依赖于给定类型和可变类型的模板类,如下所示: template<typename ConstType,typename...Inputs> class ConstantTensor; 我也有这方面的专长: template<typename ConstType,typename...Inputs> class X< ConstantTensor< ConstType ,Inputs...>> { public: using type=
template<typename ConstType,typename...Inputs>
class ConstantTensor;
我也有这方面的专长:
template<typename ConstType,typename...Inputs>
class X< ConstantTensor< ConstType ,Inputs...>>
{
public:
using type=right_type;
}
问题是
constexpr auto delta=Constant<Scalar>(2.0);
现在您得到了类型
是字符
--编辑--
OP问道
有没有一种简单/优雅的方法可以在不重复代码的情况下处理常量和非常量这两种情况 我不知道它是否优雅,但在我看来它足够简短:你可以使用一种自我继承来添加以下部分专门化
template <typename T>
class X<T const> : public X<T>
{ };
模板
X类:公共X类
{ };
因此
X
继承自X
无法复制;请,你能添加一个完整的,但最小的,重现问题的例子吗?我希望现在更清楚,我写的代码中没有错误。有没有一个简单/优雅的方法来处理这两种情况,常量和非常量,而不重复代码?@Garo-answer-improved;希望这有帮助。这不是同一节课,但我还是很矮,所以我想说这完全是好的,谢谢!
constexpr auto delta=Constant<Scalar>(2.0);
template<typename ConstType,typename...Inputs>
class X<ConstantTensor<ConstType,Inputs...> const>{ // <-- added const
public:
using type=char;
};
template <typename T>
class X<T const> : public X<T>
{ };