有没有办法在 C++ 编译器中禁用复制省略
Is there a way to disable copy elision in c++ compiler
在c++98中,下面的程序需要调用拷贝构造函数。
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "default" ; }
A(int i) { cout << "int" ; }
A(const A& a) { cout << "copy"; }
};
int main ()
{
A a1;
A a2(0);
A a3 = 0;
return 0;
}
如果在上述情况下显式声明复制构造函数(编译器会出错),这一点就很明显了。但是当复制构造函数未声明为显式时,我看不到它的输出。我想那是因为复制省略。有什么方法可以禁用复制省略或标准是否强制要求这样做?
在c++98中,下面的程序需要调用拷贝构造函数。
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "default" ; }
A(int i) { cout << "int" ; }
A(const A& a) { cout << "copy"; }
};
int main ()
{
A a1;
A a2(0);
A a3 = 0;
return 0;
}
如果在上述情况下显式声明复制构造函数(编译器会出错),这一点就很明显了。但是当复制构造函数未声明为显式时,我看不到它的输出。我想那是因为复制省略。有什么方法可以禁用复制省略或标准是否强制要求这样做?