Re: Как написать Any с uniform initialization
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 28.11.19 11:31
Оценка:
Здравствуйте, 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, а не шаблонный конструктор, тебе не надо в этом случае переопределять копирование и перемещение.
Sic luceat lux!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.