https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97624
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- C++20 produces: $ xg++ -c 97624.C -Wall -W -pedantic -std=c++20 97624.C: In function ‘void bar(Tagged&& ...)’: 97624.C:10:9: warning: ISO C++ does not allow C99 designated initializers [-Wpedantic] 10 | [Tagged::tag] = tagged.value ... | ^ 97624.C:10:38: error: ‘...’ not allowed in designated initializer list [-Wtemplate-body] 10 | [Tagged::tag] = tagged.value ... | ^~~ 97624.C: In instantiation of ‘void bar(Tagged&& ...) [with Tagged = {Tag<0, const char*>}]’: 97624.C:17:5: required from here 17 | bar(O{"ICE"}); | ~~~^~~~~~~~~~ 97624.C:10:18: error: incomplete type ‘Tagged’ used in nested name specifier 10 | [Tagged::tag] = tagged.value ... | ^~~ 97624.C:9:21: error: name used in a GNU-style designated initializer for an array 9 | const char* v[sizeof...(Tagged)] = { | ^ 97624.C:9:21: warning: unused variable ‘v’ [-Wunused-variable]