Мне действительно нужно реализовать предоставленный пользователем конструктор для const объектов?
У меня есть код:
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 и получил его недействительным.
Я вижу абсолютно бессмысленным пытаться убедить разработчиков лжи. С другой стороны, я не вижу причины такого ограничения.
Кто-нибудь может посоветовать, если Стандарт C ++ 11 как-то подразумевает, что этот код является недействительным? Или я должен просто сообщить об ошибке в g ++? Или может быть в языковых правилах достаточно свободы, чтобы обрабатывать этот код разными способами?