使用容器转发引用
forwarding reference with containers
有可能给 std::vector<T>
例如通过转发引用来发挥作用吗?
我知道
template<typename T>
void f(const std::vector<T>&&){} // is rvalue
template<typename T>
void f(const std::vector<T>&){} // is lvalue
但是我如何为左值和右值创建函数(使用 std::vector 作为参数)?
我想你想要
// traits for detecting std::vector
template <typename> struct is_std_vector : std::false_type {};
template <typename T, typename A>
struct is_std_vector<std::vector<T, A>> : std::true_type {};
template<typename T>
std::enable_if_t<is_std_vector<std::decay_t<T>>::value>
f(T&&); // Take any std::vector
有可能给 std::vector<T>
例如通过转发引用来发挥作用吗?
我知道
template<typename T>
void f(const std::vector<T>&&){} // is rvalue
template<typename T>
void f(const std::vector<T>&){} // is lvalue
但是我如何为左值和右值创建函数(使用 std::vector 作为参数)?
我想你想要
// traits for detecting std::vector
template <typename> struct is_std_vector : std::false_type {};
template <typename T, typename A>
struct is_std_vector<std::vector<T, A>> : std::true_type {};
template<typename T>
std::enable_if_t<is_std_vector<std::decay_t<T>>::value>
f(T&&); // Take any std::vector