【发布时间】:2015-10-21 16:28:02
【问题描述】:
我有一个字符串类实现为类模板,如:
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>。
【问题讨论】:
-
这
std::enable_if是否有效?我原以为失败会很困难,因为T不在函数声明的直接上下文中。 -
你完全正确,在这种情况下 is_same
必须是 is_same
标签: c++ c++11 c++builder-xe visual-c++-2013