相关疑难解决方法(0)

一个VS2010的bug?允许将非const引用绑定到rvalue而不发出警告?

string foo() { return "hello"; }
int main() 
{
    //below should be illegal for binding a non-const (lvalue) reference to a rvalue
    string& tem  = foo();   

    //below should be the correct one as only const reference can be bind to rvalue(most important const)
    const string& constTem = foo();   
}
Run Code Online (Sandbox Code Playgroud)
  1. GCC是一个很好的给出编译错误:std::string&从类型的临时类型无效初始化类型的非const引用std::string
  2. VS2008不算太差至少它给出了一个编译警告:警告C4239:初始化'::使用非标准扩展转换从std::stringstd::string &非const引用可以仅被绑定到一个左值
  3. 这有问题的一个 - VS2010(SP1)很好没有任何错误或警告,为什么?? !! 我知道VS2010中的rvalue引用可以用来绑定rvalue但是我没有使用&&,而是在演示代码中,我只是使用非const左值引用!

可以用somone帮我解释一下VS2010的行为吗?这是一个错误!?谢谢

c++ reference visual-studio-2010 rvalue lvalue

9
推荐指数
2
解决办法
2892
查看次数

我应该在 C++ 中使用“const”关键字吗

我是 C++ 的新手,遇到了const关键字。我在网上查了一下,读到主要用途是防止在整个程序中更改值。我在下面有这两个片段

const int size = 56;
Run Code Online (Sandbox Code Playgroud)

与使用相比

int size = 56;
Run Code Online (Sandbox Code Playgroud)

为什么我应该使用一个?使用它背后的想法是什么。

c++ constants

0
推荐指数
1
解决办法
113
查看次数

标签 统计

c++ ×2

constants ×1

lvalue ×1

reference ×1

rvalue ×1

visual-studio-2010 ×1