gpt4 book ai didi

c++ - 错误 : cannot bind ‘std::basic_ostream’ lvalue to ‘std::basic_ostream&&’ sl << ss;

转载 作者:行者123 更新时间:2023-12-02 09:54:45 26 4
gpt4 key购买 nike

我的 friend 给我发了一个代码,他说在 Windows 中成功编译。我在linux上尝试过,但未能给出以下错误。下面是代码的最小可验证示例。

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
std::stringstream ss, sl;
sl << ss;
}

但它给了
error: cannot bind ‘std::basic_ostream’ lvalue to ‘std::basic_ostream&&’
sl << ss;

为什么它在 Windows 中有效,但在 linux 中无效,为什么会发生此错误?

最佳答案

由于 C++11,此代码无法编译,因为 operator<< 没有匹配的重载具有 std::stringstream 类型的两个操作数.

但是,在 C++11 之前,std::ostream提供implicit conversion to void * ,因此可以调用以下重载:

basic_ostream& operator<<( const void* value );

如果流有错误,输出将与输出空指针相同,否则输出一些未指定的非空指针值。

可能您的 friend 使用了旧的编译器,或者以旧的兼容模式运行的编译器。

关于c++ - 错误 : cannot bind ‘std::basic_ostream’ lvalue to ‘std::basic_ostream&&’ sl << ss;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61164655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com