繁体   English   中英

无法绑定&#39;std :: basic_istream <char> &#39;左右&#39;std :: basic_istream <char> &amp;&amp;”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM