2017-08-20 32 views

回答

6

P0031解釋爲什麼它沒有提出constexpr比較:

目前比較和swap/fill可以與算法的幫助 從<algorithm>頭實現。與 標記比較constexpr將打破該能力,並可能導致性能下降 。

例如,==可以在std::equal方面來實現,其中 - 在適當的情況下 - 可以調用高度優化 - 丁決然-不可─constexprmemcmp。在==上編制constexpr將排除此優化,而無需特殊的編譯器幫助。

+2

丹尼爾克魯格說:這可能會解決何時/如果提案通過[P0202](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0202r1.html)。 – einpoklum

-1

基本原理可能是這樣的:如果包含的類型的==也是constexpr,則陣列的==只能是constexpr

由於容器無法執行該操作,因此它不能(通常)提供operator==() constexpr

+1

對於任何模板參數做任何事情的模板化constexpr函數,第一句都是正確的。而且 - 這些可以很好地做成「constexpr」......所以不是這樣。 (PS - 不是我的downvote。) – einpoklum

+1

我很難想到一個模板化的constexpr函數,值得這個名字,並處理非constexpr類型的成員... –

相關問題