標準算術運算符(如*
和+
)按預期的方式在像atomic<int>
這樣的類上運行。但是,我無法在<atomic>
頭文件中找到它們的定義,也沒有在標準中引用它們。何處/如何定義原子< T >的算術運算符?
它們是在什麼地方隱式定義的,還是我只是看錯了地方?
例如,下面代碼中調用的乘法函數定義在哪裏?
#include <iostream>
#include <atomic>
using namespace std;
int main() {
atomic<int> i(42);
atomic<float> f(6.66);
cout << i * f;
//cout << operator*(i, f); //error: ‘operator*’ not defined
return 0;
}
對於其他人閱讀這個問題有什麼關於here去的一個很好的討論。
謝謝,我從來沒有遇到過這些'運算符T()'函數。他們是否有技術名稱?我想看看他們的標準。 –
@ andrew.punnett不客氣。你需要「轉換功能」 - 見12.3和12.3.2。乾杯。 –
謝謝,我想他們非常類似於重載的C風格的演員功能。 –