У меня есть такой шаблон:
template<typename T>
struct foo {
T m_t;
foo(T t) : m_t(t) {}
};
Проблема в том, что я хочу поддерживать как мелкие/обычные типы, так и огромные типы (например, матрицы) для T
. Рекомендуете ли вы написать список инициализаторов конструктора, как этот
foo (T t) : m_t(std::move(t)) {}
и требуют, чтобы тип T
всегда поддерживал конструкцию перемещения даже для меньших типов? Есть ли лучшие способы?