【发布时间】:2023-03-28 18:20:02
【问题描述】:
例如,简单的恒等函子:
template <typename T>
class identity
{
public:
constexpr auto operator ()(T && i) -> decltype(std::forward<T>(i))
{
return std::forward<T>(i);
}
};
返回值哪个更好(C++14 和更新版本):
-
-> decltype(std::forward<T>(i))或 -> decltype(auto)
或者它们是一样的吗?
【问题讨论】:
-
你可以只拥有
auto而没有-> decltype -
或者如果你坚持
decltype语义,就decltype(auto)。 -
@JakeFreeman 具有价值语义
-
decltype(auto) operator () ...也是有效的。 -
顺便说一句,您应该知道
i不是转发参考。所以这也是需要考虑的事情。