[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
405: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 08:35:54.88 ID:yYuYqoCz0 すみません。教えて下さい。 template<class T, class U>void (T& x, const U& y) { x=y; ... } double ←complex<double> の代入がコンパイルエラーとなるconceptの書き方あるんでしょうか? complex<double> ← doubleの代入ではエラーが出てほしくないです。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/405
406: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 09:05:25.59 ID:yYuYqoCz0 あ、上では関数名fが抜けてましたね.concept使わずとも template<class T> void f(complex<T>& x, const T& y)とすればいいでしょうけど、 y=xのときはどうかとか、あるいは complex<double>←float の代入はokにしたいとか、 いろいろ考えているとテンプレート関数なのに関数のオーバーロードが増えてしまって面倒だなと思ったものですから。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/406
407: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 09:23:02.26 ID:yYuYqoCz0 y=xのときは忘れてください。(f(complex<T>& y, const T& x)とすればいいだけ)。どういう状況のためにconceptが必要なのか要点がまとまっていませんね。失礼しました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/407
409: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 11:11:32.60 ID:yYuYqoCz0 && は右辺値参照ではなくてandの意味なんですね。std::is_same<double,T>はdouble型とT型が一致するかどうかを調べるヘルパー変数テンプレート、::value は trueかfalseのいずれかの値をとる定数ですか。static_assertは自分でエラーメッセージを作れるのがいいですね。完全にわかっていないですが、勉強します。ヒントありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/409
414: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 14:40:14.03 ID:yYuYqoCz0 いろいろとありがとうございます。参考になりました。 template<class T, class U> void f(T& x, U& y) { if constexpr ( !(std::is_same<T,double>::value && std::is_same<U, std::complex<T>>::value) ) static_assert(false,"ワシャ許さんぞ!!"); y=x; } template <class T, class U> void g(T& x, U& y) { static_assert( (std::is_same<T,double>::value && std::is_same<U, std::complex<T>>::v alue),"ワシャ許さんぞ!!" ); y=x; } int main() { using namespace std; double x=3.14159265358979; complex<double> z; f(x,z); g(z,x); // 順番変えたり、xをfloatにするとエラー cout<<z<<endl; しかし、コンパイル時にifがつかえるんですねえ。凄いな、constexpr http://mevius.5ch.net/test/read.cgi/tech/1698705458/414
415: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 15:09:12.28 ID:yYuYqoCz0 std::is_same<T,double>::valueの代わりにstd::same_as<T,double>でも良いみたいですね. http://mevius.5ch.net/test/read.cgi/tech/1698705458/415
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.038s