3
看完後You don't know const and mutable我有點困惑,以後如何正確處理mutable
。 雖然我認爲const
的情況是非常安全的,因爲人們會默認爲物理只讀(減去舊的邏輯例外),正確處理mutable
令我困惑。 例如使用新的線程條件下似乎是錯誤的:可變函子仍然「有效」使用
int main() {
int n;
[=]() mutable {n = 10;}();
return n;
}
我會假設,在這種情況下,n
將不得不被包裹成一個std::atomic
或n
副本在併發寫入的保護其他方式!?
你正在談論哪個'n'?在'main'中聲明的變量或lambda中的副本? – Henrik
新的'mutable'條件只適用於顯式標記的對象,在這種情況下,'n'的* copy *。 – abergmeier
拉姆達的'mutable'是一個與成員不同的'mutable'。它只是表示成員'operator()'不*標記爲'const'。 – Xeo