Недавно Почему объект const требует, чтобы пользовательский конструктор по умолчанию? был отмечен дубликат Почему С++ требует созданный по умолчанию конструктор по умолчанию для построения объекта const?. Я использую coliru и rextexter, чтобы проверить различные версии gcc (g++ - 4.7, g++ - 4.8, g++ - 4.9) и clang (3.4 и 3.5), чтобы узнать, было ли это поведение введено в новых версиях компилятора. Здесь у нас есть два тестовых примера, взятых из обоих вопросов:
class A {
public:
    void f() {}
};
int main()
{
    A a;       // OK
    const A b; // ERROR
    a.f();
    return 0;
}
и
struct B{
  B():x(42){}
  int doSomeStuff() const{return x;}
  int x;
};
struct A{
  A(){}//other than "because the standard says so", why is this line required?
  B b;//not required for this example, just to illustrate
      //how this situation isn't totally useless
};
int main(){
  const A a;
}
ошибки clang:
 error: default initialization of an object of const type 'const A' requires a user-provided default constructor
  A const a;
          ^
ожидается, но не gcc, и MSVC также не работает. Я думал, что, возможно, я схожу с ума, потому что в стандартных цитатах ясно сказано:
§ 8.5
6 Для инициализации объекта типа T по умолчанию:
- если T является (возможно, cv-квалифицированным) классом типа (раздел 9), конструктор по умолчанию для T называется (и инициализация плохо сформирована, если T не имеет доступный конструктор по умолчанию);
[...]
Если программа вызывает инициализация по умолчанию объекта типа const, T, T должен быть типом класса с предоставленным пользователем конструктором по умолчанию.
11 Если для объекта не задан инициализатор, объект по умолчанию инициализируется; [...]
Язык, не содержащий POD, присутствующий во втором вопросе, кажется, отсутствует в n3337, поэтому, возможно, мне не хватает чего-то, что могло измениться. Это ошибка, дубликат или я что-то упускаю?
