§3.10第9节说“非类右值始终具有cv非限定类型”。这让我想知道......intfoo(){return5;}constintbar(){return5;}voidpass_int(int&&i){std::cout根据标准,非类类型没有constrvalue这样的东西,但bar()更喜欢绑定(bind)到constint&&。这是编译器错误吗?编辑:显然,this也是一个constrvalue:)编辑:这个问题似乎在g++4.5.0中得到修复,现在两行都打印“rvalue”。 最佳答案 委员会似乎已经意识到标准的这一部分存在问
长期以来,我一直认为三元运算符总是返回一个右值。但令我惊讶的是,事实并非如此。在下面的代码中,我没有看到foo的返回值和三元运算符的返回值之间的区别。#includeintg=20;intfoo(){returng;}intmain(){inti=2,j=10;foo()=10;//notOk((i 最佳答案 i和j都是glvalues(有关详细信息,请参阅thisvaluecategoryreference)。那么如果你读到thisconditionaloperatorreference我们就到了这一点:4)IfE2andE3ar
长期以来,我一直认为三元运算符总是返回一个右值。但令我惊讶的是,事实并非如此。在下面的代码中,我没有看到foo的返回值和三元运算符的返回值之间的区别。#includeintg=20;intfoo(){returng;}intmain(){inti=2,j=10;foo()=10;//notOk((i 最佳答案 i和j都是glvalues(有关详细信息,请参阅thisvaluecategoryreference)。那么如果你读到thisconditionaloperatorreference我们就到了这一点:4)IfE2andE3ar
在clang的C++11statuspage中遇到了一个名为“*this的右值引用”的提议。.我已经阅读了很多关于右值引用并理解它们的内容,但我认为我不知道这一点。我也无法使用这些术语在网络上找到很多资源。页面上有提案文件的链接:N2439(将move语义扩展到*this),但我也没有从那里得到太多示例。这个功能是关于什么的? 最佳答案 首先,“*this的引用限定符”只是一个“营销声明”。*this的类型永远不会改变,请参阅这篇文章的底部。不过用这种措辞更容易理解。接下来,下面的代码根据函数的“隐式对象参数”的ref-qualif
在clang的C++11statuspage中遇到了一个名为“*this的右值引用”的提议。.我已经阅读了很多关于右值引用并理解它们的内容,但我认为我不知道这一点。我也无法使用这些术语在网络上找到很多资源。页面上有提案文件的链接:N2439(将move语义扩展到*this),但我也没有从那里得到太多示例。这个功能是关于什么的? 最佳答案 首先,“*this的引用限定符”只是一个“营销声明”。*this的类型永远不会改变,请参阅这篇文章的底部。不过用这种措辞更容易理解。接下来,下面的代码根据函数的“隐式对象参数”的ref-qualif