模板特化:只接受某些类型的 C++ 模板(重访)
Template specialization: C++ templates that only accept certain types (revisited)
我想制作一个简单的消息模板class如下。我逐字地遵循了 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
.
在前向声明中 Message
之前放置 class
会稍微好一点,但同样令人讨厌的 IntelliSense 错误:expected and identifier
在每个模板的左大括号 {
之后.
template<typename T> class Message;
template<> Message <std::vector<uint8_t>>
{
public:
};
template<> Message <std::string>
{
};
我应该注意到以上所有代码目前都放在一个头文件中。
您还需要在模板专业化中包含 class
关键字。我不知道为什么链接的答案不这样做。
template<typename T> class Message;
template<> class Message <std::vector<uint8_t>>
{
public:
};
template<> class Message <std::string>
{
};
我想制作一个简单的消息模板class如下。我逐字地遵循了 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
.
在前向声明中 Message
之前放置 class
会稍微好一点,但同样令人讨厌的 IntelliSense 错误:expected and identifier
在每个模板的左大括号 {
之后.
template<typename T> class Message;
template<> Message <std::vector<uint8_t>>
{
public:
};
template<> Message <std::string>
{
};
我应该注意到以上所有代码目前都放在一个头文件中。
您还需要在模板专业化中包含 class
关键字。我不知道为什么链接的答案不这样做。
template<typename T> class Message;
template<> class Message <std::vector<uint8_t>>
{
public:
};
template<> class Message <std::string>
{
};