无法将"std::<char>basic_istream"左值绑定到"std::basic_istream<char>&&"

cannot bind 'std::basic_istream<char>' lvalue to 'std::basic_istream<char>&&'

本文关键字:std basic istream char gt lt 绑定      更新时间:2023-10-16

我有这个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:错误:无法将"std::basic_istream"左值绑定到"std::basic_istream&&"/usr/include/c++/4.6/iStream:852:5:错误:初始化参数 'std::basic_istream& std::operator>>(std::basic_istream&&, _Tp&( [使用 _CharT = char, _Traits = std::char_traits, _Tp = Color]'

(stream >> output)返回对流的引用,并且无法与NULL进行比较。您可以简单地返回

return (stream >> output);

它将通过调用operator void*() const(C++11 中的explicit operator bool() const(来测试流fail()该函数调用函数来测试操作是否成功。