考虑到(x | r | l | pr | gl)值,我想到了以下问题:
考虑以下两个变量声明:
X x = ...;
和
X&& x = ...;
并承担了...
做不提供的x值.
任何人都可以想到代码没有使用decltype
,这会产生什么影响?在这两种情况下,(x)
都会通过左值型X
,不是吗?
也许人为的例子,但有
struct X { X() = default; X(const X&) = delete; X operator =(const X&) = delete; X(X&&) = delete; X operator =(X&&) = delete; }; X makeX() {return {};}
以下编译
X&& x = makeX();
而后续则没有
X x = makeX();