Я сталкиваюсь с проблемой дизайна, рассмотрите следующий код: < /p>
Код: Выделить всё
template
class some_class {
public:
template
some_class(T_&& value) : value_(std::forward(value)) {}
private:
T value_;
};
Мы можем создать тип значения t, такой как oce_class или ссылочный тип some_class , neome_class удерживает владение вектором в первом использовании, а не во второй. Мы не можем четко выяснить владение Value_ В таких случаях эта двусмысленность усложняет управление жизнью объекта, особенно в крупных проектах. Я спрашиваю: «Это хорошая практика для разработки такого класса шаблонов, который позволяет пользователю решать владение с помощью аргумента шаблона». < /P>
сравнить со следующим кодом: < /p>
Код: Выделить всё
template
class some_class {
public:
...
private:
std::decay_t value_;
};
В такой дизайне oke_class ясно удерживает владение Value_, и тот, кто использует некоторую_КЛАСС, может безопасно оставить управление временем Value_ to_class.>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... y-template