Workaround für C++0x-Attribute (Clang-basierte C++-Complier)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++0x-Features - Index


Die C++0x-Attribute deprecated, final (C++) und noreturn werden von den Clang-basierten C++-Compilern nicht unterstützt.

Auf dieser Seite sind Workarounds für die fehlenden Attribute deprecated und final (C++) bei der Verwendung des 64-Bit-C++-Compilers beschrieben. Es gibt kein Workaround für das Attribut noreturn.

Workaround für das Attribut deprecated

Für das Attribut deprecated können Sie als Workaround #pragma obsolete verwenden. Im Folgenden finden Sie ein kurzes Beispiel für eine deprecated-Funktion.

In BCC32:

int f(int a)[[deprecated]]{
 	//code here
 }

In Clang-basierten C++-Compliern:

int f(int a){
        #pragma obsolete f
        //code here
}

Workaround für das Attribut final

In Clang-basierten C++-Compliern wird das Schlüsselwort final eingeführt, das dieselbe Funktionalität wie das C++0x-Attribut final (C++) bereitstellt.

Im Folgenden finden Sie ein kurzes Beispiel für die Verwendung des Schlüsselwortes final.

In BCC32:

class A {
        virtual int f()[[final]];
};

class B : public A {
        int f(); // error, 'f' is marked 'final' and cannot be overridden
};

In Clang-basierten C++-Compliern:

class A {
        virtual int f() final;
};

class B : public A {
        int f(); //error, declaration of 'f' overrides 'final' function
};

Siehe auch