模板专业化:仅接受某些类型的C ++模板(重新访问)

时间:2016-06-29 18:47:19

标签: c++ templates template-specialization

我想制作一个简单的消息模板类,如下所示。我从chosen answer posted here逐字逐句地跟随结构。但是,这似乎在Visual Studio 2013中中断。

template<typename T> Message;

template<> Message <std::vector<uint8_t>>
{
public:

};

template<> Message <std::string>
{

};

IntelliSense告诉我Message is not a template

在前向声明中class之前放置Message会导致稍微好一点但同样令人讨厌的IntelliSense错误:expected and identifier在每个模板的左括号{之后。< / p>

template<typename T> class Message;

template<> Message <std::vector<uint8_t>>
{
public:

};

template<> Message <std::string>
{

};

我应该注意,以上所有代码当前都放在头文件中。

1 个答案:

答案 0 :(得分:1)

您还需要在模板专精中加入class关键字。我不知道为什么链接的答案不会这样做。

template<typename T> class Message;

template<> class Message <std::vector<uint8_t>>
{
public:

};

template<> class Message <std::string>
{

};