ホームページ  >  記事  >  バックエンド開発  >  std::string は C の定数式で使用できますか?

std::string は C の定数式で使用できますか?

DDD
DDDオリジナル
2024-11-24 04:09:11635ブラウズ

Can std::string Be Used in Constant Expressions in C  ?

定数式での 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。