首頁 > 後端開發 > C++ > std::string 可以用在 C 中的常數表達式中嗎?

std::string 可以用在 C 中的常數表達式中嗎?

DDD
發布: 2024-11-24 04:09:11
原創
680 人瀏覽過

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

在常數表達式中使用 std::string

通常無法在常數表達式中使用 std::string。原因是 std::string 有一個不平凡的析構函數,使其使用與編譯時解析常數表達式的要求不相容。

C 20 解

然而,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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板