Вы можете эмулировать такое поведение следующим образом:
boolean x = boolean();
или, в более общем смысле,
T x = T();
Это инициализирует по умолчанию x
, если такая инициализация по умолчанию существует. Тем не менее, простое написание T x
никогда не даст результата для локальных переменных, независимо от того, что вы делаете.
Вы также можете использовать place-new для вызова «конструктора», даже для POD:
T x;
new (&x) T();
Обратите внимание, что этот код создает неопределенное поведение для не POD-типов (в частности, для типов, имеющих нетривиальный деструктор). Чтобы этот код работал с пользовательскими типами, сначала нужно вызвать деструктор объекта:
T x;
x.~T();
new (&x) T();
Этот синтаксис может также использоваться для POD (гарантируется §§5.2.4 / 12.4.15), поэтому приведенный выше код может использоваться без разбора для любого типа.