Solution pour les attributs C++11 (Compilateurs C++ améliorés par Clang)
Remonter à Fonctionnalités C++11 - Index
Les compilateurs C++ améliorés par Clang ne prennent pas en charge les attributs C++11 deprecated, final (C++) et noreturn (qui sont pris en charge par les compilateurs de précédente génération (BCC32 et BCCOSX)).
Cette rubrique explique comment travailler autour de les attributs manquants deprecated et final (C++) lors de l'utilisation des compilateurs améliorés par Clang. Il n'y a pas de solution pour l'attribut noreturn.
Solution pour l'attribut deprecated
Vous pouvez utiliser #pragma obsolete
comme solution pour l'attribut deprecated. Voici un court exemple de code pour une fonction deprecated.
Dans les compilateurs C++ de précédente génération
int f(int a)[[deprecated]]{
//code here
}
Dans les compilateurs C++ améliorés par Clang:
int f(int a){
#pragma obsolete f
//code here
}
Solution pour l'attribut final
Dans les compilateurs C++ améliorés par Clang, le mot clé final
a été introduit, en fournissant la même fonctionnalité que l'attribut C++11 final (C++).
Voici un court exemple d'utilisation du mot clé final
.
Dans les compilateurs C++ de précédente génération
class A {
virtual int f()[[Final (C++)]];
};
class B : public A {
int f(); // error, 'f' is marked 'final' and cannot be overridden
};
Dans les compilateurs C++ améliorés par Clang:
class A {
virtual int f() final;
};
class B : public A {
int f(); //error, declaration of 'f' overrides 'final' function
};