Muss ich wirklich einen vom Benutzer bereitgestellten Konstruktor für const-Objekte implementieren?

Ich habe den Code:

class A {
  public:
    A() = default;

  private:
    int i = 1;
};

int main() {
  const A a;
  return 0;
}

Es kompiliert gut auf g ++ (sieheideone), schlägt aber auf clang ++ mit Fehler fehl:

Die Standardinitialisierung eines Objekts vom Typ const 'const A' erfordert einen benutzerdefinierten Standardkonstruktor

Ich habe dieses Problem am gemeldetLLVM Bug-Tracker und habe es UNGÜLTIG.

Ich halte es für absolut sinnlos, die Clang-Entwickler zu überzeugen. Auf der anderen Seite sehe ich keinen Grund für eine solche Einschränkung.

Kann mir jemand raten, ob der C ++ 11 Standard impliziert, dass dieser Code ungültig ist? Oder sollte ich einfach einen Fehler an g ++ melden? Oder gibt es genug Freiheit in den Sprachregeln, um mit diesem Code auf viele Arten umgehen zu können?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage