В 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;
}
Это очевидно, если вы объявите конструктор копирования явным образом в вышеприведенном случае (ошибки компилятора отсутствуют).Но я не вижу выходных данных конструктора копирования, когда он не объявлен как явный.Я предполагаю, что это из-за копирования.Есть ли способ отключить копирование elision или стандарт требует это?