首頁 > 後端開發 > C++ > GCC 對非 Constexpr 標準函式庫函數的 Constexpr 處理是合格擴充嗎?

GCC 對非 Constexpr 標準函式庫函數的 Constexpr 處理是合格擴充嗎?

Susan Sarandon
發布: 2024-11-30 01:49:09
原創
734 人瀏覽過

Is GCC's Constexpr Treatment of Non-Constexpr Standard Library Functions a Conforming Extension?

將非 Constexpr 標準函式庫函數視為 Constexpr 符合標準的編譯器擴充嗎?

目前的 C 標準要求將標準函式庫函數宣告為僅當明確需要時才使用 constexpr。然而,早期的草案另有建議。

C 11 和標準草案

在 C 11 的開發過程中,一項旨在明確允許將非 constexpr 標準函式庫函數視為constexpr。 GCC 決定以嚴格一致性模式支援此功能是基於此草案。

C 14 中共識的轉變

但是,共識在 C 14 的開發過程中發生了變化。該提案進行了修訂,最終標準規定,除非明確要求,否則禁止實現聲明任何標準庫函數 constexpr。

此變更源自於對跨實作的不同行為的擔憂,因為 SFINAE 可以利用此產生不同的結果相同程式碼的結果。

一致性GCC

GCC 目前在這種情況下的實現是一個不合格的擴展,因為它違反了 C 14 標準。為了實現一致性,GCC 需要在嚴格一致性模式下發出警告或停用此功能。

內在函數

與標準函式庫函數不同,編譯器內在函數不受此限制規則,因為它們不在標準範圍內。因此,將內在函數視為 constexpr 通常是允許的。

以上是GCC 對非 Constexpr 標準函式庫函數的 Constexpr 處理是合格擴充嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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