Мне действительно нужно реализовать предоставленный пользователем конструктор для 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 ++? Или может быть в языковых правилах достаточно свободы, чтобы обрабатывать этот код разными способами?

Ответы на вопрос(3)

Ваш ответ на вопрос