まとめ: >>323-324の状況において、特殊化は次のように手段を使い分けねばならない
(1) 3日目のtr_pos(Foo, Bar)の追加は、関数テンプレートの特殊化ではエラーになるので関数のオーバーロードで特殊化する必要がある。
(理由)
tr_pos(Foo, Bar)は以下の関数テンプレート全てに当てはまってしまい、コンパイラが特殊化対象を特定できない。
tr_pos<T, U>(T, U), tr_pos<U>(Foo, U), tr_pos(U, Bar)
(2) 4日目のtr_pos(Foo, Foo)の追加は、関数テンプレートを>>327のように型パラメータ<T, U>を全て指定して明示的特殊化するなら逝ける
(理由)
関数引数にBarが現れないことから、tr_pos<U>(U, Bar)は特殊化対象から外れる。
型パラメータ<T, U>を両方明示することにより、tr_pos<U>(Foo, U)も特殊化対象から外れる。
==> 残るtr_pos<T, U>(T, U)が特殊化対象の関数テンプレートであるとコンパイラが判断できる。
(3) 一方、4日目のやつを暗黙的特殊化で行おうとするとビルドエラーで失敗する。
(>>332でも述べたが、上記(1)と同じことになる。
T::get()やU::set()を持たないクラスであるFooやBarを無理やりtr_pos()というシグネチャで他と統一的に扱おうとした結果スゲー薄氷を踏むようなプログラミングになっていた、
ことがわかった、、
C++相談室 part143
■ このスレッドは過去ログ倉庫に格納されています
333デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 01:21:35.16ID:BYU8+sPJ0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【W杯C組結果】スコットランド0-3ブラジル/モロッコ4-2ハイチ [征夷大将軍★]
- 【岐阜】“終わりの会”の最中に…中学校で男性教師(41)が生徒に顔を複数回殴られ出血し搬送 2年生の14歳少年を現行犯逮捕 各務原 [ぐれ★]
- 【米紙報道】高市首相「コングレッショナルフェロー(官職)」経歴詐称疑惑… ★4 [BFU★]
- 【速報】W杯C組前半終了:スコットランド0-2ブラジル/モロッコ2-2ハイチ [征夷大将軍★]
- 【地震】青森県で震度6強の地震 「北海道・三陸沖後発地震注意」発表か 気象庁が分析中 モーメント・マグニチュード7.0以上なら [ぐれ★]
- ベネズエラでM7.5地震 M7.2直後、ビル倒壊か [首都圏の虎★]
- 【MLB】ツインズ vs ドジャース ★5
- 【MLB】ツインズ vs ドジャース ★6
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★171【メキシコ/カナダ/アメリカ】
- MLB総合★50
- 〓たかせん〓 5
- 西武線
- 高市さんが色々ズレててイケてないのは神戸大とかいう駅弁大出身の田舎者だからじゃない?やっぱり総理は旧帝か首都圏私立だよね。 [358195575]
- 山之内すずさんが日高市まで歩く、3日で箱根まで歩く [245325974]
- 【速報】1位通過でモロッコ、2位通過でブラジルとの対戦が確定 [369521721]
- 坊主クビAKB48花田藍衣「私一人では死なん。他のAKBメンバーがセックスしてる証拠出すぞ」 [977790669]
- ダブパン斬首ハウス🏡
- 青森で震度6強 [253992206]