The following sections specifies the GCC compiler extensions that are not supported by C/C++test. The limitations apply to the supported GCC-based compilers, as well as custom GCC compiler builds. See http://gcc.gnu.org/onlinedocs for more information about GNU compiler extensions.
Arrays of Variable Length as Arguments to Functions
void tester (int len, char data[len][len])
{
} |
Virtual Function With Overridden Return Type
class A
{
public:
virtual void* a();
};
class B:
public A
{
public:
virtual B* a(); // Return type changed from void* to (compatible) B*.
// It is ok in GCC but EDG will complain
}; |
Restricting Pointer Aliasing for Member functions
class T
{
public:
void fn();
};
void T::fn () __restrict__ // EDG won't compile this
{
} |
Function Attributes
void fatal () __attribute__ ((noreturn));
void fatal () { }
typedef void voidfn ();
volatile voidfn fatal; // EDG: declaration is incompatible with
// "void fatal()" |
Friend Declarations
class A;
namespace N {
class B {
friend class A; // In GCC it refers to N::A (which has not been
// declared yet), but EDG refers to ::A
int _private;
};
class A {
void foo()
{
B b;
b._private = 0; // EDG inaccessible field.
}
};
} |
Same as for GCC 5.x.
Same as for GCC 5.x.
Same as for GCC 5.x.
Some C++20 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
C++23 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
C++23 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
C++23 features are not supported.
Same as for GCC 5.x.
Some C++20 features are not supported.
C++23 features are not supported.