我有一个字符串类实现为类模板,如:
template <class T>
class HGStringBasic
{
//...
public:
//...
HGStringBasic& operator += (const T* rhs)
{
//...
}
template <class U, std::enable_if_t<std::is_same<U, char>::value>* = nullptr>
HGStringBasic& operator += (const U* rhs)
{
//...
}
//...
}
代码符合 C++ 11 标准。目标是实现一个重载的运算符 += (const char),它仅在模板的类 T 是例如“wchar_t”时使用。
我想知道,如果编译器不理解 C++11,我如何能达到相同的结果。
更新:
对不起,我是 stackoverlow 的新手,我还没有看到,我的代码没有完全显示在代码块中。到目前为止,我已经更新了我的代码。我还从模板函数运算符 += () 中纠正了模板参数列表中的一个错误,TartanLlama 你绝对正确,is_same<T, char>
必须是is_same<U, char>
.