C++0x 属性の回避策(Clang ベースの C++ コンパイラ)

提供: Appmethod Topics
移動先: 案内検索

C++0x 対応機能:インデックス への移動

C++0x 属性 deprecatedfinal (C++)noreturn は、Clang ベースの C++ コンパイラではサポートされていません。

このページでは、64 ビット C++ コンパイラの使用時に、欠けている属性 deprecated および final (C++) の対処方法について説明します。 noreturn 属性については、対処方法はありません。

deprecated 属性の回避策

#pragma obsolete を、deprecated 属性の回避策として使用することができます。以下は、廃止予定の関数のための、簡単なサンプル コードです。

BCC32 の場合:

int f(int a)<nowiki>[[deprecated]]</nowiki>{
        // ここにコードを記述
}

Clang ベースの C++ コンパイラの場合:

int f(int a){
        #pragma obsolete f
        // ここにコードを記述
}

final 属性の回避策

Clang ベースの C++ コンパイラでは、final キーワードが導入されており、C++0x final (C++) 属性と同様の機能を提供しています。

以下は、final キーワードを使用した簡単な使用例です。

BCC32 の場合:

class A {
        virtual int f()<nowiki>[[final]]</nowiki>;
};
class B : public A {
        int f(); // エラー、'f' は 'final' にマークされオーバーライドできない
};

Clang ベースの C++ コンパイラの場合:

class A {
        virtual int f() final;
};
class B : public A {
        int f(); // エラー、'f' の宣言は、'final' 関数をオーバーライドする
};

関連項目