add cpp version dcl singleton