Как объяснить разницу, когда я компилирую версии #if 0 и #if 1 следующего кода:
#include <cstdlib>
struct A
{
explicit A() = default; // explicitly defaulted or deleted constructors are allowed for aggregates (since C++11)
#if 1
private :
#endif
int i;
};
int
main()
{
A a = {};
return EXIT_SUCCESS;
}
- для
#if 0все в порядке, компиляция успешна. - для
#if 1сбой компиляции с сообщением об ошибке:ошибка: выбранный конструктор явственен при копировании-инициализации
В чем разница для выражения A a = {}; в зависимости от того, является ли A аггрегатом или нет?


