Я только вчера узнал, что указание параметров для элементов списка инициализаций является необязательным. Однако каковы правила того, что происходит в этом случае?
В приведенном ниже примере инициализируется ptr до 0, переключается на false и Bar по умолчанию построено? Я предполагаю, что этот вопрос является своего рода избыточным, потому что в списках инициализаторов мало смысла, если неопределенные значения аргументов == undefined.
Могу ли я также указать на раздел стандарта С++, в котором указано поведение в случае элементов списка инициализаций, не заданных аргументами?
class Bar
{
Bar() { }
};
class SomeClass;
class AnotherClass
{
public:
SomeClass *ptr;
bool toggle;
Bar bar;
AnotherClass() : ptr(), toggle(), bar() { }
// as opposed to...
// AnotherClass() : ptr(NULL), toggle(false), bar(Bar()) { }
};