Сообщение 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. набрал пример на колиру второпях — исправил.
Добавь
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. набрал пример на колиру второпях — исправил.
Добавь
И раз в заголовке uniform, то
правильно работает
M>В общем так. написал аналог std::any, свой, собственный (когда ещё std::any не было на моей платформе). Назовём его Any. Проблема в том, чтобы можно было инициализировать std::vector<Any> через фигурные скобочки. Но это нифига не выходит, потому что нужно вводть шаблонный конструктор, а он заменяет собой конструктор копирования по умолчанию. Как задавить? Пока я додумался только до friendly шаблонного класса со специализациями, который вызывает нужную функцию инициализации.
M>upd. набрал пример на колиру второпях — исправил.
Добавь
Any( Any& ) {printf("\ncopy2");}
И раз в заголовке uniform, то
Any x1{ x0 };
правильно работает