§5.3.1一元运算符,第3节
一元&运算符的结果是指向其操作数的指针.操作数应为左值或限定ID.
在这种情况下,"应该"究竟是什么意思?这是否意味着取一个临时的地址是错误的?我只是想知道,因为g ++只给我一个警告,而comeau拒绝编译以下程序:
#include <string>
int main()
{
&std::string("test");
}
Run Code Online (Sandbox Code Playgroud)
g ++ 警告:taking address of temporary
comeau 错误:expression must be an lvalue or a function designator
有人有微软编译器或其他编译器,可以测试这个程序吗?提前致谢.
我已经使用std::move和std::forwardC++中.我的问题是:这些功能如何通过标准库实际实现?
如果左值是你可以获得的地址,而右值绝对不是左值,你怎么能实际实现这些引用呢?
这些新设施是否允许以下内容:
auto x = &(3);
Run Code Online (Sandbox Code Playgroud)
或类似的东西?你能获得一个不仅仅是std::move/ forward返回左值的右值的引用吗?
希望这些问题有意义.我无法在Google上找到有关完美转发的教程,等等.