Информация об изменениях

Сообщение Re: Как написать Any с uniform initialization от 28.11.2019 7:56

Изменено 28.11.2019 7:57 Igore

Re: Как написать Any с uniform initialization
Здравствуйте, Molchalnik, Вы писали:

M>В общем так. написал аналог std::any, свой, собственный (когда ещё std::any не было на моей платформе). Назовём его Any. Проблема в том, чтобы можно было инициализировать std::vector<Any> через фигурные скобочки. Но это нифига не выходит, потому что нужно вводть шаблонный конструктор, а он заменяет собой конструктор копирования по умолчанию. Как задавить? Пока я додумался только до friendly шаблонного класса со специализациями, который вызывает нужную функцию инициализации.


M>upd. набрал пример на колиру второпях — исправил.

Добавь
Any( Any& )  {printf("\ncopy2");}
Re: Как написать Any с uniform initialization
Здравствуйте, Molchalnik, Вы писали:

M>В общем так. написал аналог std::any, свой, собственный (когда ещё std::any не было на моей платформе). Назовём его Any. Проблема в том, чтобы можно было инициализировать std::vector<Any> через фигурные скобочки. Но это нифига не выходит, потому что нужно вводть шаблонный конструктор, а он заменяет собой конструктор копирования по умолчанию. Как задавить? Пока я додумался только до friendly шаблонного класса со специализациями, который вызывает нужную функцию инициализации.


M>upd. набрал пример на колиру второпях — исправил.

Добавь
Any( Any& )  {printf("\ncopy2");}

И раз в заголовке uniform, то
Any x1{ x0 };

правильно работает