将函数模板参数视为rvalue参考,而不是转发[重复]

问题描述 投票:0回答:1
template<typename T> void foo(T&& t);

here

t
是转发参考。

可以强迫签名作为rvalue参考,同时保持模板参数扣除?

template<typename T> void foo(std::type_identity_t<T>&& t);

没关系,因为它会抑制模板参数扣除。

c++ templates rvalue-reference
1个回答
0
投票
您能做的就是添加和专门为LVALUE和额外的超载,

delete

那个超负荷

template<typename T> void foo(T& t) = delete;
上面的模板是LVALUE的更好匹配,因此将选择它而不是转发参考版本。
您可以在这个live示例中看到此功能。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.