Eclipse:エラー「XXXX」はタイプソリューションを指定していません



Eclipse Error Xxxx Does Not Name Type Solution



このエラーに対応して、 私の特定のエラーは、「constexpr」がタイプに名前を付けていないことです 、しかし、このエラーが表示されないように、constに変更しました。根本原因を突き止めるために情報収集を始めました。

理由1:さまざまなC ++バージョンの場合:

constexprは、C ++ 11によって提案されたキーワードです。 、その意味は14バージョンとは多少異なります。
C ++ 11でconstexprによって指定された関数の戻り値とパラメーターは、リテラルであることが保証されている必要があります。また、戻りコードは1行だけである必要があります。これにより、関数設計者はさらに多くの制限を得ることができます。戻りリテラル値を計算するための戻り三項演算子+再帰。
C ++ 14では、戻り値とパラメーターがリテラル値であることを確認するだけで済みます。より柔軟な計算を容易にするために、より多くのステートメントを関数本体に追加できます。
constとconstexprの違いは何ですか?
constは「定数」を表しません。これは変数の単なる変更であり、この変数は初期化のみが可能であり、直接変更することはできないことをコンパイラーに通知します(実際、スタックオーバーフローなどを介して行うことができます。モード変更)。この変数の値は、実行時またはコンパイル時に指定できます。



constexprは、変数、関数、およびコンストラクターを変更するために使用できます。上記の要素のいずれかがconstexprによって変更されると、コンパイラに「コンパイル時に定数値を取得して最適化できる式として大胆に扱ってください」と伝えるのと同じです。
以下で詳細に分析しましょう C ++のバージョンに関連している可能性があることがわかりました。後で、Eclipseの属性構成を確認してください。 構成を変更する必要があることがわかりました。
以下のとおりであります:
画像

画像
主な理由は、次のC ++バージョンが構成されていないことです。以下の構成に従い、後で次の構成を追加してください std = c ++ 11
画像
実行時にエラーを報告しなくなりました。



理由2:ヘッダーファイルへの繰り返しの呼び出し

ただし、C ++コンパイルでは、このエラーの別の理由、つまり繰り返しの呼び出しがある可能性があります。
具体的な参考資料

エラー:「xxx」は、前方宣言とC ++ヘッダーファイルが含まれているために発生したタイプを指定していません (共有してくれたブロガーに感謝します)