This is assertion removal. The assertion was saying that a function's return value is always a temporary object - which is not true when copy elision is happening, C++17 mandatory copy elision in particular (we don't support other forms of copy elision yet, but we have no choice but to support this one).
Details
Details
Diff Detail
Diff Detail
Event Timeline
lib/StaticAnalyzer/Core/ExprEngine.cpp | ||
---|---|---|
480 | I'm a bit confused as to what is going on here; maybe a short comment would be helpful? |
I'm a bit confused as to what is going on here; maybe a short comment would be helpful?
What I don't understand is that we go through that branch when construction context is supplied only to completely ignore it [..because we know better?..]