当使用 gcc 和标志尝试以下示例时,-Waggregate-return
警告:function call has aggregate value
触发:
struct Element {
// ... stuff ...
}
Container<Element> elements(10);
for_each(begin(elements),end(elements),[](Element& e){
// ... modify elements ...
});
据我所知,-Waggregate-return
标志“警告是否定义或调用了返回结构或联合的任何函数”,因为如果我理解正确,您可能会通过返回足够大的对象来溢出堆栈。
但是,for_each
返回lambda 的类型,其类型为void
。为什么会触发警告?我错过了什么?如何改进我的代码?