如果语言构造被定义为产生函数的隐式调用,则语言构造的使用被认为是用于此定义目的的表达式。
但是,这句话的意图并不清楚。我最好的猜测是,它在这里是为了确保正确的排序并确保在任何隐式函数调用完成之前不会破坏临时对象,但是,我看不到这将适用并改变某些代码的含义的情况。例如:
struct S { };
const S& f() { return {}; }
在这里,return
语句将被视为表达式,操作数{}
也将被视为表达式,因此是return
语句的子表达式。这是句子的意图吗?这还适用于哪些地方并产生有意义的影响?