in the following example, gcc should report it is using a C++0x extension: struct ValueInt { ValueInt(int v = 0) : ValueLength(v) {} operator int () const { return ValueLength; } private: int ValueLength; }; int main(int, char *[]) { int *a = new int[ ValueInt(10) ]; return 0; } According to the 98 standard: implicitly calling the conversion function operator int() is a g++ and C++0x extension (see http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#299) that is not in the current C++ standard. Thanks !
That isn't an <extension> but an ISO Core DR, whose resolution is implemented (apparently). In such cases (hundreds) we definitely don't warn. By the way, Intel and Comeau behave exactly like GCC.