c – 获取右值的地址
作者:互联网
class MyClass {
public: MyClass(int a) : a(a) { }
int a;
};
#include <iostream>
void print(MyClass* a) { std::cout << a->a << std::endl; }
int main() {
print(&static_cast<MyClass&&>(MyClass(1337)));
return 0;
}
这不适用于GCC 4.6,而它曾用于以前的版本.
现在它说:获取xvalue(rvalue reference)的地址.
有没有办法安全地将右值的地址传递给另一个函数?
解决方法:
is: there is anyway to securely pass an rvalue reference (a.k.a. address of temporary) to another function without boringly storing it in a variable just to do that?
是的,就像下一个例子一样:
#include <iostream>
class MyClass {
public: MyClass(int a) : a(a) { }
int a;
};
void print(MyClass&& a) { std::cout << a.a << std::endl; }
int main() {
print( MyClass(1337) );
}
标签:rvalue,c,c11,gcc 来源: https://codeday.me/bug/20190826/1730194.html