[英]Overloading operator>>: cannot bind ‘std::basic_istream<char>’ lvalue to ‘std::basic_istream<char>&&’
[英]cannot bind 'std::basic_istream<char>' lvalue to 'std::basic_istream<char>&&'
我有这个c ++代码片段在visual studio中工作正常,但在gcc中出错。 欢迎任何有关如何使其工作的建议?
template <typename ConvertType>
inline bool Parse(const std::string& input, ConvertType& output)
{
std::stringstream stream(input);
stream.imbue(std::locale::classic());
return (stream >> output) != NULL;
}
我收到此错误:
./Configuration/Option.h:32:38: error: cannot bind 'std::basic_istream' lvalue to 'std::basic_istream&&' /usr/include/c++/4.6/istream:852:5: error: initializing argument 1 of 'std::basic_istream& std::operator>>(std::basic_istream&&, _Tp&) [with _CharT = char, _Traits = std::char_traits, _Tp = Color]'
(stream >> output)
返回(stream >> output)
的引用,无法与NULL
进行比较。 你可以简单地回来
return (stream >> output);
它将通过调用operator void*() const
(C ++ 11中的explicit operator bool() const
fail()
来测试流,它调用fail()
函数来测试操作是否成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.