- C++相談室 part124 [無断転載禁止]©2ch.net
10 :デフォルトの名無しさん (jp 0Haf-e5NB)[]:2016/04/04(月) 20:11:57.58 ID:jBujPHQXH - >>7 >>9
ごめん。complex<U>→complex<double> だった。 template <class T, class U> std::complex< decltype(std::declval<T>()*std::declval<U>() )> operator * (const std::complex<T>& z1, const std::complex<U>& z2) { return std::complex< decltype(std::declval<T>()*std::declval<U>() )> (z1.real()*z2.real()-z1.imag()*z2.imag(), z1.real()*z2.imag()+z1.imag()*z2.real() ); } は準備してるけど、これがなくてもコンパイル通る。ところが template <class T> std::complex<T> operator * (int d, const std::complex<T>& z) { return std::complex<T>(d*real(z), d*imag(z)); } がないと、 エラー C2893 関数テンプレート 'matrix<unknown-type> operator *(const U &,const matrix<T> &)' の特定に失敗しました エラー C2784 'matrix<unknown-type> operator *(const matrix<T> &,const matrix<U> &)': テンプレート 引数を'const matrix<T> &' に対して 'const std::complex<float>' から減少できませんでした ・・・みたいなのがわんさか出る.
| - C++相談室 part124 [無断転載禁止]©2ch.net
11 :デフォルトの名無しさん (jp 0Haf-e5NB)[]:2016/04/04(月) 20:15:55.07 ID:jBujPHQXH - matrix<float> af(3,3);
matrix<complex<double>> b(3,3); af*bの演算やると、VC++2015では 警告 C4244 '引数': 'double' から 'int' への変換です。データが失われる可能性があります。 mat_test3 c:\users\ayabe\desktop\mat_test3\mat_test3\matrix_.h 203 がでる.gcc(TDM gcc 5.1.0)では警告すらでずにdoubleからintへの型キャストが起こる。
| - C++相談室 part124 [無断転載禁止]©2ch.net
12 :デフォルトの名無しさん (jp 0Haf-e5NB)[]:2016/04/04(月) 20:31:24.66 ID:jBujPHQXH - template <class T> std::complex<T> operator * (int d, const std::complex<T>& z)
{ return std::complex<T>(d*real(z), d*imag(z)); } ↓訂正 template <class T> std::complex<T> operator * (const std::complex<T>& z, int d) { return std::complex<T>(d*real(z), d*imag(z)); } まあ,decltypeはもう使わないからいいか。お騒がせしました。
| - C++相談室 part124 [無断転載禁止]©2ch.net
14 :デフォルトの名無しさん (jp 0Haf-e5NB)[]:2016/04/04(月) 20:41:55.46 ID:jBujPHQXH - しかし、何でintなんですか?(デフォルト?)
それと結果の型をどうやって定義するんですか? MPLかなんか知らんけど、そんなことするくらいならBlitz++を開発した 人のプリプロセッサ命令使うわ
| - C++相談室 part124 [無断転載禁止]©2ch.net
16 :デフォルトの名無しさん (jp 0Haf-e5NB)[]:2016/04/04(月) 21:16:48.03 ID:jBujPHQXH - それだけか? 何にも知らないくせに
あんたみたいな奴に上から目線で言われたくない。馬鹿
|
|