[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
754: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:55:35.41 ID:xz+hBXXy0 オーバーロード解決のルールは大雑把には ・候補の中で実引数と完璧に型が一致するものがあればそれが選ばれる。 ・完璧な一致がないが暗黙の型変換を適用したら一致するという候補があればそれが選ばれる。 ということになってる。 実際には変換の中にも優先順位がごちゃごちゃあってかなり複雑なんだけど……。 で、組み込みの単項 + が受け取りうる型は何かというと算術型、スコープなし列挙型、またはポインタ型の三つ。 https://timsong-cpp.github.io/cppwp/n3337/expr.unary#op-7 キャプチャなしのクロージャ型は関数ポインタへの変換関数を持っている。 つまり暗黙の型変換が可能。 https://timsong-cpp.github.io/cppwp/n3337/expr.prim.lambda#6 クロージャからポインタへ暗黙の型変換をすれば単項 + に一致するからそれが選ばれる。 そういうメカニズムだと私は理解してるんだけど間違いがあったら誰か指摘してね。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/754
755: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:58:44.63 ID:xz+hBXXy0 単項 + の話題がウケたみたいなのでオマケで * の話もしようかな。 単項 * にクロージャを渡した場合は関数の参照になる。 つまり *[](){} としたら型は void(&)() ってことね。 式中に参照が現れたら参照が指す先の型に変換されて、関数指示子が現れたら関数ポインタに変換されるので多くの状況では最終的に関数ポインタになっちゃうんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/755
759: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 11:44:46.70 ID:xz+hBXXy0 >>756 これは言語仕様の話なので言語仕様に沿わないことがあるなら単にコンパイラのバグってだけだ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/759
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.043s