インライン静的クラスメンバー用のClang / LLVM9および10SIGSEGV。バグ?

パーマンド

inline staticClangでクラスメンバーを使用すると、メンバーが別のクラス/構造体である場合に予期しない動作が発生しますhttps//godbolt.org/z/mbH6k7

// std=c++17
#include <iostream>

struct A {
    double a = 42;
    A() { std::cout << "A()" << std::endl; }
};

inline static A a{}; // No problem

namespace N {
    inline static A a{}; // No problem
}

struct B {
    B() { std::cout << "B()" << std::endl; }
    inline static double d; // No problem with built-in types
    A& a1 = N::a; // No problem
    inline static A a2 = N::a; // No problem
    inline static A a3{}; // <-- Problem here!
};

B b1;
inline static B b2;

int main() {
    return 0;
}

期待される出力、Clang 8.0.0、gcc、msvcで動作します:

A()
A()
A()
B()
B()

Clang 9.0.0以降の実際の出力:139 (SIGSEGV)

これはバグですか、それとも何が欠けていますか?

AndyG

これは私にはかなりカットアンドドライのバグのように聞こえます:

[class.static.data]ごと

インライン静的データメンバーは、クラス定義で定義でき、中括弧または等しい初期化子を指定できます

あなたのコードはこれに準拠しています:

struct B {
    // ...
    inline static A a3{};
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

基本クラスのプライベート静的メンバー

分類Dev

Javaの静的ネストクラスのプライベートメンバー

分類Dev

プライベート静的クラスメンバー

分類Dev

クラスの静的メンバーをインポートする方法は?

分類Dev

グローバルインスタンスを持つクラスの静的メンバーの破棄

分類Dev

クラス定義でのインライン静的メンバー関数の戻り値の型の推定

分類Dev

静的クラス非静的メンバー

分類Dev

静的メンバー変数(ポインター)のコンストラクターとデストラクタ

分類Dev

インスタンスごとに異なるテンプレートクラスの静的constexprメンバー?

分類Dev

静的インラインメンバーの初期化順序

分類Dev

Applicationクラスの静的メンバーのバインディングプロパティ

分類Dev

同じタイプの静的メンバーからのクラス内初期化

分類Dev

Xamarinバインディングカテゴリの戻りエラー:静的クラスでインスタンスメンバーを宣言できません

分類Dev

デバイスコードのCUDAクラス静的メンバーのイディオム?

分類Dev

C ++で静的メンバーを持つクラスのコンパイルエラー

分類Dev

値のタイプのオブジェクトを取得するパターンをクラスの非静的メンバーに適用できますか?

分類Dev

Python:サブクラスの静的メンバーをオーバーライドする

分類Dev

グローバルクラスの静的メンバー

分類Dev

匿名静的インスタンスからのプライベートインスタンスメンバーアクセス

分類Dev

静的クラスのメンバーはJavaで静的ですか?

分類Dev

C ++の静的クラスメンバー変数と静的変数

分類Dev

非静的クラスの静的メンバー?

分類Dev

静的および非静的メンバーデータの初期化とコンストラクターの順序

分類Dev

テンプレートクラスの静的メンバー

分類Dev

静的クラスの列挙へのデータバインディング

分類Dev

プライベートタイプの静的constメンバー

分類Dev

イニシャライザの静的メンバーのみ

分類Dev

プライベート継承、基本クラスの静的メンバーへの参照を返す

分類Dev

シングルトン-実装。静的クラスメンバーと静的メンバー変数の使用

Related 関連記事

  1. 1

    基本クラスのプライベート静的メンバー

  2. 2

    Javaの静的ネストクラスのプライベートメンバー

  3. 3

    プライベート静的クラスメンバー

  4. 4

    クラスの静的メンバーをインポートする方法は?

  5. 5

    グローバルインスタンスを持つクラスの静的メンバーの破棄

  6. 6

    クラス定義でのインライン静的メンバー関数の戻り値の型の推定

  7. 7

    静的クラス非静的メンバー

  8. 8

    静的メンバー変数(ポインター)のコンストラクターとデストラクタ

  9. 9

    インスタンスごとに異なるテンプレートクラスの静的constexprメンバー?

  10. 10

    静的インラインメンバーの初期化順序

  11. 11

    Applicationクラスの静的メンバーのバインディングプロパティ

  12. 12

    同じタイプの静的メンバーからのクラス内初期化

  13. 13

    Xamarinバインディングカテゴリの戻りエラー:静的クラスでインスタンスメンバーを宣言できません

  14. 14

    デバイスコードのCUDAクラス静的メンバーのイディオム?

  15. 15

    C ++で静的メンバーを持つクラスのコンパイルエラー

  16. 16

    値のタイプのオブジェクトを取得するパターンをクラスの非静的メンバーに適用できますか?

  17. 17

    Python:サブクラスの静的メンバーをオーバーライドする

  18. 18

    グローバルクラスの静的メンバー

  19. 19

    匿名静的インスタンスからのプライベートインスタンスメンバーアクセス

  20. 20

    静的クラスのメンバーはJavaで静的ですか?

  21. 21

    C ++の静的クラスメンバー変数と静的変数

  22. 22

    非静的クラスの静的メンバー?

  23. 23

    静的および非静的メンバーデータの初期化とコンストラクターの順序

  24. 24

    テンプレートクラスの静的メンバー

  25. 25

    静的クラスの列挙へのデータバインディング

  26. 26

    プライベートタイプの静的constメンバー

  27. 27

    イニシャライザの静的メンバーのみ

  28. 28

    プライベート継承、基本クラスの静的メンバーへの参照を返す

  29. 29

    シングルトン-実装。静的クラスメンバーと静的メンバー変数の使用

ホットタグ

アーカイブ