gprentice Messages: 260 Registered: November 2005 Location: New Zealand
Experienced Member
Yep it's a clang bug and a dark corner of C++.
As mentioned in that article, the standard defines a pseudo destructor (5.2.4 ) one form of which looks like this
::opt nested-name-specifier opt type-name :: ~ type-name
where the first :: and the nested-name-specifier are optional and type-name is a non-class type. The only effect is the evaluation of the post-fix expression before the arrow.
There's no such thing as a constructor for a fundamental type but the standard defines (5.2.3 / 2) that the expression T() for simple type specifier T creates an rvalue of the specified type whose value is determined by default initialization.