Чтение о универсальных ссылках заставило меня задаться вопросом: как я могу построить шаблон класса таким образом, чтобы он сохранялся по ссылке, если это возможно, или по значению если это необходимо?
То есть, могу ли я сделать что-то вроде этого
template <class T>
class holder {
T obj_m; // should be a reference if possible...
public:
holder(T t) :obj_m { t } {}
}
auto
hold_this(T && t) { return holder<T>(t); }
За исключением того, что если hold_this()
задано lvalue, держатель будет удерживать ссылку, а если задано r-значение, то держатель сделает копию?