2

次の方法でペア オブジェクトを作成できない理由:

pair<int,int> p1 = {0,42}
4

2 に答える 2

8

C++03 では使用する必要があります

std::make_pair(0, 42);

ペアは単純なデータ構造ではないためです。またはペアのコンストラクターを呼び出すことにより、つまり

std::pair<int, int> p1(0, 42);

C++11で

pair<int, int> p1 = {0, 42}

大丈夫だ。

于 2012-08-16T09:30:43.797 に答える
4

C++03 では初期化子リスト構文は許可されていません。これは が集計std::pairではないためです。したがって、有効な初期化方法はコンストラクター呼び出しです。

C++ 標準 (C++03 8.5.1 §1) からの正式な定義:

集合体は、ユーザーが宣言したコンストラクター (12.1)、プライベートまたは保護された非静的データ メンバー (条項 11)、基本クラス (条項 10)、および仮想関数 (10.3) を持たない配列またはクラス (条項 9) です。 )。

詳細な説明については、FAQをお読みください。

の導入により、C++11 で変更が加えられましたstd::initializer_list

于 2012-08-16T09:47:16.343 に答える