【发布时间】:2023-03-17 15:04:01
【问题描述】:
我偶然发现了一个关于模板和泛型类型的问题。
我想做的是:
template <typename T>
Log& operator<<(const T &stream) {
buffer_.stream << stream;
if(stream == "\n") //Pseudocode
write(buffer_);
return *this;
}
基本上我想检查泛型参数流是否等于“\n”,但编译器不断抛出错误。我尝试了强制转换(静态),但编译器也不喜欢这样。
有什么建议吗?
【问题讨论】:
-
你如何使用这个功能,或者你想如何使用这个功能?你把什么传递给函数?您可能需要对字符串或字符进行非泛型重载。
-
发布错误和您所做的事情,而不是省略相关信息(编译器错误)和源(您已用“伪代码”替换的内容),这显然是一个好主意。
-
模板不允许您编写使用该类型无法正常编写的代码。
-
您的编译器是否支持 C++11? (即,相对较新的 gcc 或 clang 版本?)