Здравствуйте, Molchalnik, Вы писали:
M>В общем так. написал аналог std::any, свой, собственный (когда ещё std::any не было на моей платформе). Назовём его Any. Проблема в том, чтобы можно было инициализировать std::vector<Any> через фигурные скобочки. Но это нифига не выходит, потому что нужно вводть шаблонный конструктор, а он заменяет собой конструктор копирования по умолчанию. Как задавить? Пока я додумался только до friendly шаблонного класса со специализациями, который вызывает нужную функцию инициализации.
Я совсем не понял проблему и что тебе не нравится. Попробуй убрать вот так:
struct Any {
Any( ) {printf("\ndefault");}
template <typename Tn> Any( Tn && ) {printf("\ntemplate");}
};
конструкция
template <typename Tn> Any( Tn && ) {printf("\ntemplate");}
Это prefect forwarding, а не шаблонный конструктор, тебе не надо в этом случае переопределять копирование и перемещение.