StaticConstructor:
static this ( ) ;
static this ( ) FunctionBody
StaticDestructor:
static ~ this ( ) MemberFunctionAttributesopt ;
static ~ this ( ) MemberFunctionAttributesopt FunctionBody
SharedStaticConstructor:
shared static this ( ) ;
shared static this ( ) FunctionBody
SharedStaticDestructor:
shared static ~ this ( ) MemberFunctionAttributesopt ;
shared static ~ this ( ) MemberFunctionAttributesopt FunctionBody
According to the grammar static and shared static destructors can have attributes, but constructors cannot.
The compiler, as well as the contributors to std.socket, seem to be unaware of this fact: https://github.com/D-Programming-Language/phobos/blob/5978ca7831443cec69430da6b3ccd315aae1878c/std/socket.d#L303
Comment #1 by github-bugzilla — 2016-02-10T18:35:50Z