Можно ли использовать оператор постинкремента с аргументами списка инициализации? Например что-то вроде этого:
template <class T> struct MyClass
{
MyClass(T& val): myvar(val++) {/*body*/}
protected: T myvar;
};
И повлияет ли изменение в теле конструктора на изменение?
Да, ты можешь. 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
конструктор.
Других решений пока нет …