This declaration is ill-formed according to the last sentence of [dcl.init] ยง8.5/7, "If a program calls for the default initialization of an object of a const-qualified type T, T shall be a class type with a user-provided default constructor": struct a {} const o; There is actually a very nice diagnostic implemented by r179170 and PR42844, but it's only activated when the class has an uninitialized member, per the notes of CWG DR 253. However those notes aren't normative and Clang diagnoses the error, http://stackoverflow.com/q/21900237/153285 .
This is by design, because as DR 253 shows, the normative standard is flawed.
From cwg253 (https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#253): [Adopted at the November, 2016 meeting as part of paper P0490R0.] But I can't tell if it was a adopted as a defect report or just implemented as part of C++17.