繁体   English   中英

部分模板专业化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM