// MSC: error C2440: 'initializing' : cannot convert from 'T *' to 'T (&)[4]' // gcc: cannot convert from 'main::T *' to 'main::T (&)[4] int main( void ) { // without func it works volatile int x = 0; struct T {}; T a[4]; T b[4]; T (&u)[4] = x ? x++, a : b; // IC says struct T (&v)[4] = x ? x++, a : b; // ok T (&w)[4] = x ? (x++, a) : b; // ok T (&z)[4] = x ? a : b; // ok, gcc & MSC still complain }