Использование оператора постинкремента в списке инициализации

Можно ли использовать оператор постинкремента с аргументами списка инициализации? Например что-то вроде этого:

template <class T> struct MyClass
{
MyClass(T& val): myvar(val++) {/*body*/}
protected: T myvar;
};

И повлияет ли изменение в теле конструктора на изменение?

2

Решение

Да, ты можешь. myvar член будет иметь значение val до приращения.

Мы должны учитывать, что val будет иметь тип, поддерживающий оператор постинкремента.

template <class T> struct MyClass
{
MyClass(T val): myvar(val++) {/*body*/}
//          ^
protected:
T myvar;
};

MyClass<int> foo( 1 );

// Here myvar will have the value 1

И не забудьте тип val перешел к MyClass конструктор.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]