マクロの最も一般的なユースケースは何ですか？また、特定の状況では、なぜそれらがconstexprよりも依然として好まれているのですか？
constexpr上のマクロの一般的なユースケースは次のとおりです。
* ConstexprがC ++ 11で定義されているため、Pre C ++ 11コードとの互換性。
* boost.preprocessorなど、プリプロセッサを頻繁に使用するライブラリとの互換性
*さまざまな機能を有効または無効にするために、プリプロセッサの定義を必要とするライブラリ。
*ビルドオプションを許可する：Cmakeおよびその他のコンパイラを許可すると、プリプロセッサを設定できます。コードの外側に定義し、構築時に異なるオプションを許可します。代わりに、これらをConstexpr変数に設定するには、cmakeのconfigure_fileを追加する必要があり、他のビルドシステムでは利用できない場合があります。
*オペレーティングシステムに応じて異なるライブラリを含む。一部のC ++ライブラリはUNIXのみであり、Windowsでの作業に代わるものが必要です。constexprは関数と変数の値を設定するために使用されるため、これには使用できません。
*システムに応じて異なるタイプの設定：一部のアーキテクチャは、Charの代わりにWindowsやWChar、Ulong vs Ulonglongなど、さまざまなタイプでより頻繁に動作する場合があります。