1

完美的转发很棒。但是,如果我不想完美地转发而只是重载,我该怎么办呢?

template<typename T> void foo(T&& ref);
template<typename T> void foo(const T& ref); 

不起作用,因为第一个重载将调用完美转发。我真的很喜欢与第一个是普通左值引用非常相似的行为——其中 T 始终是值类型。

4

1 回答 1

3
#include <type_traits>

template<typename T>
typename std::enable_if
<
    !std::is_reference<T>::value,
    void
>::type
foo(T&& ref) {}

template<typename T> void foo(const T& ref) {}
于 2011-08-16T15:35:59.510 回答