[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
754: はちみつ餃子◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:55:35.41 ID:xz+hBXXy0(1/3) AAS
オーバーロード解決のルールは大雑把には
 ・候補の中で実引数と完璧に型が一致するものがあればそれが選ばれる。
 ・完璧な一致がないが暗黙の型変換を適用したら一致するという候補があればそれが選ばれる。
ということになってる。
実際には変換の中にも優先順位がごちゃごちゃあってかなり複雑なんだけど……。

で、組み込みの単項 + が受け取りうる型は何かというと算術型、スコープなし列挙型、またはポインタ型の三つ。
外部リンク:timsong-cpp.github.io

キャプチャなしのクロージャ型は関数ポインタへの変換関数を持っている。 つまり暗黙の型変換が可能。
外部リンク:timsong-cpp.github.io

クロージャからポインタへ暗黙の型変換をすれば単項 + に一致するからそれが選ばれる。
そういうメカニズムだと私は理解してるんだけど間違いがあったら誰か指摘してね。
755
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:58:44.63 ID:xz+hBXXy0(2/3) AAS
単項 + の話題がウケたみたいなのでオマケで * の話もしようかな。
単項 * にクロージャを渡した場合は関数の参照になる。
つまり *[](){} としたら型は void(&)() ってことね。

式中に参照が現れたら参照が指す先の型に変換されて、関数指示子が現れたら関数ポインタに変換されるので多くの状況では最終的に関数ポインタになっちゃうんだけど。
759: はちみつ餃子◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 11:44:46.70 ID:xz+hBXXy0(3/3) AAS
>>756
756(1): デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv) [sage] 2025/03/17(月) 10:46:49.46 ID:qCQLpZeYp(1) AAS
要するに副作用って事か
環境によってとかオプティマイズ如何で違った動きになる事は無いのかなぁ
これは言語仕様の話なので言語仕様に沿わないことがあるなら単にコンパイラのバグってだけだ。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s