[英]Partial template specialisation
我正在尝试专门化以下模板化 class 的构造函数
enum class A { a1, a2 };
enum class B { b1, b2 };
template<typename A, typename B>
class test
{
public:
test(A a, B b) {}
};
我将如何专门构造构造函数以获取特定的 B 值,例如 B::b1? 我以前没有尝试过,以下没有用。
template<typename A>
class test<A, B::b1> {};
有人可以指出我正确的方向吗? 谢谢!
模板test
的第二个参数只接受一个类型(如B
),而不是一个值( B::b1
)。 test<A, B::b1>
无论你做什么来专门化test
,它总是格式错误的。
但是,您可以构建从值到类型的映射,例如:
enum class A { a1, a2 };
enum class B { b1, b2 };
template<typename A, typename B>
class test{
public:
test(A a, B b) {}
};
template<typename T, T v>
class tag{};
template<typename A, typename T, T v>
class test<A, tag<T, v>>{};
using example = test<A, tag<B, B::b1>>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.