模板類我有一個字符串類實現爲像類模板:過載操作者+ =與標準:: enable_if元函數
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,我該如何實現相同的結果。
更新: Sry我是新來的stackoverlow,我還沒有看到,我的代碼沒有完全顯示在代碼塊中。現在我已經更新了我的代碼了。 我也更正了模板函數操作符+ =()中的模板參數列表中的一個錯誤,您絕對是正確的TartanLlama,is_same<T, char>
必須是is_same<U, char>
。
這是否'的std :: enable_if'甚至工作?我認爲失敗會很困難,因爲'T'不在函數聲明的直接上下文中。 – TartanLlama
你是絕對正確的,is_same必須is_same 在這種情況下 –
Christian