The code you've provided violates the spec and technically shouldn't compile:
12.1 Constructors
1 Constructors do not have names. A special declarator syntax is used to declare or define the constructor. The syntax uses:
— an optional decl-specifier-seq in which each decl-specifier is either a function-specifier or constexpr,
— the constructor’s class name, and
— a parameter list
in that order. In such a declaration, optional parentheses around the constructor class name are ignored.
(function-specifier means one of inline
, virtual
, or explicit
--see 7.1.2/1--but virtual constructors are disallowed by 12.1/4)
That said, Microsoft Visual C++ 2012 and 2013 (at a minimum) accept it. This appears to be a bug in those compilers.
Update: Microsoft is aware of this issue, but has (understandably) decided not to bother fixing it.
Bug report