У меня есть код:
class A {
public:
A() = default;
private:
int i = 1;
};
int main() {
const A a;
return 0;
}
Он компилируется отлично на g++ (см. ideone), но с ошибкой: clang++ с ошибкой:
инициализация по умолчанию объекта const типа 'const A' требует созданного пользователем конструктора по умолчанию
Я сообщил об этой проблеме в LLVM bug-tracker и получил ее INVALID.
Я вижу совершенно бессмысленно пытаться убедить разработчиков clang. С другой стороны, я не вижу причины такого ограничения.
Может ли кто-нибудь посоветовать, если С++ 11 Standard так или иначе подразумевает, что этот код недействителен? Или я должен просто сообщить об ошибке g++? Или, может быть, существует достаточная свобода в языковых правилах для обработки этого кода во многих отношениях?