Здесь: https://web.archive.org/web/20171213133641/http://www.comeaucomputing.com:80/...
Есть пример:
What Are Compound Literals?
struct xyz { int i; int j; };
// skip
void baz(struct xyz* dummy_arg) { }
int main()
{
// skip
// Note the literal need not always just be an array
p = &(int){ 1 }; // ok, but be careful
// skip
// Pass addr of literals:
baz(&(struct xyz){ 456, 789 });
}
Даже не пытаясь проверять, что будет в C++ и веря цитате:
https://stackoverflow.com/questions/28116467/are-compound-literals-standard-c
In C++, a compound literal designates a temporary object, which only lives until the end of its full-expression. As a result, well-defined C code that takes the address of a subobject of a compound literal can be undefined in C++.
Таки непонятно, какое будет у структуры, адрес которой передан в baz время жизни (в C)? Она будет убрана из stack'а при выходе из scope main?