静的マップを初期化しようとしています。私が収集した他の質問からは、ヘッダーファイルの外側で行う必要があり、C++ 11では一様な初期化を行うことができます。私は別の静的メンバを使用しようとする。しかし、私は問題を得る:静的メンバーを使用して静的マップを初期化する
がfoo.h:
#include <map>
class TestSuite {
static constexpr int x = 3;
static std::map<int, int> v;
};
foo.cpp:次に
#include "foo.h"
std::map<int, int> TestSuite::v = {{x, 5}};
int main() {
TestSuite t;
}
私はエラーに取得
In function `__static_initialization_and_destruction_0(int, int)':
foo.cpp:(.text+0x4b): undefined reference to `TestSuite::x'
collect2: error: ld returned 1 exit status
はうまくいくようですが、どのコンパイラを使用しますか? – IceFire
5.2、6.1の新機能でなければならない – acornellier