MGL共通プリプロセッサマクロ#

概要#

MGLが定義するプリプロセッサマクロのうち、共通で使用される宣言と定義です。

プリプロセッサマクロ#

名前

内容

バージョン

MGL_MAYBE_CONSTEXPR

環境に応じてconstexprになるマクロ

1.1.14+


MGL_MAYBE_CONSTEXPR#

宣言#

#if __cplusplus >= 202302L
    #define MGL_MAYBE_CONSTEXPR constexpr
#else
    #define MGL_MAYBE_CONSTEXPR
#endif

説明#

環境に応じてconstexprとなるマクロの定義です。

C++23以降の環境では標準ライブラリの多くにconstexprが付与された事、定数式化の制限が緩和された事などの理由により、より多くの関数を定数式にできるようになりました。一方で、MGLはC++17に準拠しているために定数式にできない関数が多数あり、それらがC++23以降の環境においてネックとなる場合がありました。

この問題を解決するため、MGLではC++23以降であれば定数式にできる関数に対してconstexprの代わりにMGL_MAYBE_CONSTEXPRを付与しています。

C++20までの環境においては、このマクロは空となり何の効力も持ちません。

注釈

MGL 1.1.4までにも同名のマクロが存在しており、これはMSVCとClangの定数式化の際を埋める目的で用いられていました。

バージョン情報#

MGL 1.1.14
  • C++23以降とそれ以前の差異を埋める目的で再リリース

MGL 1.1.5
  • 一旦廃止

MGL 1.0.0
  • MSVCとClangの差異を埋める目的でリリース