假设我有一些模板类
template <typename T>
struct Dummy {
// ...
};
而且我想重载一个函数'foo',以便它接受它的左值或右值引用。我可以使用以下一些IsDummy
特征来做到这一点:
template <typename A>
std::enable_if<IsDummy<A>::value, void>
foo(A &&dummy)
{
// ....
}
IIRC 在一些 C++11 草案中是合法的
template <typename A>
foo(Dummy<A> &&dummy)
{
// ....
}
将同时接受左值和值引用。
现在我的问题:
a) 在某些草案中允许这样做是否正确?
b) 为什么要删除此功能/错误?我想我在某处读到这是由于与“概念”的冲突。
但是,我再也找不到合适的参考资料了。有人有更好的记忆或书签吗?