2015-10-05 55 views
2

我想將整數添加到complex<double>但我不能。下面是相關的代碼部分:無法將整數添加到std :: complex <double>

using dcomplex = std::complex<double>; 

    dcomplex j = dcomplex(0,1); 
// dcomplex r = 1+j;//this line is not compiling 
    dcomplex r = 1.0+j;//ok 

我明白爲什麼j+=1不編譯,因爲超載內complexoperator+=並沒有隱式轉換int->double。但是operator+在複雜內部沒有超載(我沒有在那裏找到它)。所以它在其他地方超載(在哪裏?我找不到它),並且因爲int應該隱式轉換爲double。但事實並非如此。爲什麼?

+0

_「沒有隱式轉換int-> double」_你確定嗎? –

+0

[奇怪的相關](http://stackoverflow.com/q/32944584/560648) –

回答

2

cppreferencestd::complex::operator+重載是

template< class T > 
complex<T> operator+(const complex<T>& lhs, const complex<T>& rhs); 

template< class T > 
complex<T> operator+(const complex<T>& lhs, const T& rhs); 

template< class T > 
complex<T> operator+(const T& lhs, const complex<T>& rhs); 

當類型推演情況有衝突,因爲它計算Tdoubleint。由於T不能同時產生錯誤。

相關問題