Have I lost my mind? Was this always permitted?
#include
int main()
{
auto& os = std::cout;
auto write = []()
{
os
There's an open clang report that cover the case of implicit capture of references by lambda expressions, this is not limited to std::cout
but to references variable that are found to refer to constant expressions.
For more reference, the backing defect report on the CWG is CWG-1472
EDIT:
Based on @Rakete1111 comment, I should have pointed out explicitly that clang is right in accepting the code, which is the result of applying the CWG defect mentioned above. The report was reopened because of diagnosis location not because they were wrong about the acceptance