template<typename T>
class BlockingQueue
{
std::queue<T> container_;
template< typename U >
void push(U&& value)
{
static_assert(std::is_same<T, typename std::remove_reference<U>::type>::value,"Can't call push without the same parameter as template parameter's class");
container_.push(std::forward<U>(value));
}
};
我希望 BlockingQueue::push 方法能够处理 T 类型对象的右值和左值引用,以将其转发到 std::queue::push
正确的版本。是像上面的代码那样做,还是在我的BlockingQueue
类中提供两个版本的 push 方法?一个用于左值,一个用于右值