定数式での std::string の使用
通常、定数式で std::string を使用することはできません。その理由は、std::string には自明ではないデストラクターがあり、その使用がコンパイル時に解決される定数式の要件と互換性がないためです。
C 20 Solution
ただし、C 20 では、限定的な例外が導入されました。 std::string が定数の評価が終了する前に破棄された場合、定数式で使用できます。例:
constexpr std::size_t n = std::string("hello, world").size();
この例では、std::string が定数式内で作成および破棄されるため、その使用は許可されます。
代替ソリューション (C 17)以降)
定数式で使用する std::string の実用的な代替手段は次のとおりです。 std::string_view。 string_view は、文字シーケンスへの不変の非所有参照です。 std::string と同様の機能を提供しますが、デストラクターがないため、定数式に適しています:
constexpr std::string_view sv = "hello, world";
以上がstd::string は C の定数式で使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。