以下代碼顯示如何使用constexpr operator++()
(預增量)(live demo)。現在我想知道是否有什麼用於宣佈後增量運算符爲constexpr
。我認爲這樣的操作員沒有副作用,並且以與示例中類似的方式使用。 (如果這是過於抽象。我打算延長我的bitset2類,並想知道是否會有任何好處,如果遞增運算符是constexpr
)是否有任何constexpr操作符的應用程序++(int)(後遞增)
struct S {
constexpr S(int i) : m_i(i) {}
constexpr S & operator++() {
++m_i;
return *this;
}
int m_i;
};
int main() {
constexpr auto s1= ++S{3};
std::cout << s1.m_i << '\n'; // output: 4
}
'return bar;'。爲什麼你在循環中加倍引用'item'?你沒有移動任何東西...... – JHBonarius
@ J.H.Bonarius修復了缺失的返回語句。不,我沒有移動任何東西,但基於範圍的循環正在生成一個臨時通過解引用我通過r值參考捕獲的迭代器而不是複製該值。它可以用其他幾種方式書寫。 –
是的,你的例子說服我。我將它應用到我最初的例子([link](https://wandbox.org/permlink/6k8Vuq1rVl0yM1M9))。刪除後綴增量操作符的'constexpr'將不會編譯。 –