g ++ uses the name change scheme (and other implementation details) specified by Itanium ABI .
In the section on manipulating constructors and destructors, we see:
<ctor-dtor-name> ::= C1
::= C2
::= C3
::= D0
::= D1
::= D2
- A “full object constructor”, including
C1, is a regular constructor directly used during initialization. - " ",
C2, . "" , , , , . - " ",
C3, , operator new. , , g++ . - " ",
D0, operator delete. , operator delete , . - " ",
D1, C1 . - " ",
D2, C2 .
, , , C1 C2 , ++, . , demangling .
, std::allocator<T> , , , g++ - .