[過去ログ] C++相談室 part156 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
408(6): 2021/06/19(土)11:19 ID:xVp2TfT/(1/4) AAS
それ多分特殊化じゃなくてオーバーロード?(違ってたらすまん
hogeの<T>を受け取る奴で実体化した後にmyclass受け取る奴が出てくることになる
myclass版の前方宣言をfile1.hpp(fugaより前)に書くか、fugaの実装をfile2.hppのインクルードより後にすればいける、と思う
409(1): はちみつ餃子 ◆8X2XSCHEME 2021/06/19(土)14:35 ID:/f53/cxR(1/2) AAS
>>406
それは >>408 が指摘する通りオーバーロードになってる。
オーバーロードの解決方法は複雑なんで私もちょっと自信はないんだけど、
オーバーロードの候補の内で実引数の型と完全に同一 (または実引数の型に cv 修飾したもの) のものがあれば、
それの優先度はテンプレート引数のマッチより高いので曖昧さは生じずに解決できるのが正しい。
そんで >>408 がいう
> hogeの<T>を受け取る奴で実体化した後にmyclass受け取る奴が出てくることになる
というのはたぶん関係ないと思う。
Two phase name lookup のルールが適用されるはずだから fuga 内での hoge の呼出しは
その時点では解決を試みられず、 main 内での fuga の呼出しが有った時に
省7
412: 2021/06/19(土)18:01 ID:xVp2TfT/(2/4) AAS
>>406>>408
うろ覚えだったのでスマンコ
というか自分がその手の順序依存を経験したのはVC2008-2015あたりまでだった気がする
最近のだとC++標準への準拠の設定(コンパイルオプション/Zc:twoPhaseとか)も影響するはず
414: 2021/06/19(土)18:48 ID:xVp2TfT/(4/4) AAS
/permissive-
やった(VS2017
2015以前なら>>408のような対策するしかないと思う
427(1): 2021/06/20(日)10:22 ID:Q4Tfx6ZF(2/3) AAS
>>408は試してみた?
428: 2021/06/20(日)10:33 ID:76n7YcAv(2/2) AAS
>>427
はい
>>408様の仰る「fuga の実装を後に書く」というのが、>>406に書いた「下の方にコピペしたら」というのです
そして、それらのことを踏まえて、>>415に書いたような疑問を持ちました
ところで嘘というのはどういうものでしょうか
なにか矛盾しますでしょうか
429: 2021/06/20(日)11:18 ID:Q4Tfx6ZF(3/3) AAS
hogeの実装(関数の中身)を実際は書いてなかったとか、何か事実と違うことがあるんじゃないかと思った
だけ
>>415に書いてある理由なら、同じコンパイラであればどこか妥協するしかない気が
fugaの前方宣言だけはfile1に残して、実装を別のヘッダにして後からインクルードするとかは?(>>408で言ったのはそういうことなんだけど
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s