デフォルトの引数値として静的データメンバーを使用する場合、static initialization order fiascoについて心配する必要はありますか?たとえば:静的データメンバーはC++のデフォルト引数として安全ですか?
class Thing {
static double const default_blarg; // initialized in another file
void run(double blarg=default_blarg);
};
私はrun
にデフォルト引数が初期化されるときdefault_blarg
は、リンク時に、主に、不特定の時点で初期化されますが、私はわからない知っています。 default_blarg
が初期化される前のある時点で、クラス・インタフェースの一部としてデフォルト値を安全に公開するために、どのような方法を使用すればよいでしょうか?静的データメンバーにconstexpr
を使用すると安全ですか?
default_blarg
がconstでない(これが理由です)場合、これは非常に混乱する挙動を引き起こす可能性があることに注意してください。また、非静的なデータメンバーを使用しようとしていません。