オーバーテクノロジー:How to know which functhion is actually called among Overloaded Function set at the Compilation Time?

真夜中に、闇のC++erはおそろしいサバトを開催していたようです…
5
前へ 1 2 ・・ 6 次へ
若年寄(もう若くない) @kikairoya

戻り値の型まで指定させていいならできるか? [宮崎産を食べよう]

2010-06-04 22:58:57
普通のC++使い、銀天すばる @SubaruG

@decimalbloat なるほど、つまりコンパイルエラーにはならずに単に候補から外される、と。

2010-06-04 23:00:00
若年寄(もう若くない) @kikairoya

だめだなあ [宮崎産を食べよう]

2010-06-04 23:00:55
若年寄(もう若くない) @kikairoya

暗黙の変換を考えると無理があるような気がしてきた [宮崎産を食べよう]

2010-06-04 23:01:52
普通のC++使い、銀天すばる @SubaruG

decltype 中での置換失敗が SFINAE に則って処理されるなら、ある関数呼び出しが有効かどうかをメタ関数として情報取得出来る…ハズ。

2010-06-04 23:02:40
普通のC++使い、銀天すばる @SubaruG

それこそ関数を呼び出す必要なんてなくて、特定の関数ポインタ型にキャストしてやればいいんだし。

2010-06-04 23:03:23
普通のC++使い、銀天すばる @SubaruG

(特定の関数が存在することを確かめたければ)

2010-06-04 23:03:47
若年寄(もう若くない) @kikairoya

MPLしようにもオーバーロード解決されて無い関数へのポインタは型が無いからなあ [宮崎産を食べよう]

2010-06-04 23:04:33
普通のC++使い、銀天すばる @SubaruG

@kikairoya 普通の関数とかメタ関数とかで汎用的に作るのは無理ですよね。その都度SFINAEを書く汚いコードになりそう。

2010-06-04 23:06:11
普通のC++使い、銀天すばる @SubaruG

型の世界ではなく式の世界でやってしまえばいい。

2010-06-04 23:06:40
若年寄(もう若くない) @kikairoya

ぬーDeductionしたいのにnested typedefがほしい [宮崎産を食べよう]

2010-06-04 23:08:00
Yak! @yak_ex

@kikairoya で、overload set から実際に呼ばれる関数を…に繋がった訳です。

2010-06-04 23:08:22
普通のC++使い、銀天すばる @SubaruG

テンプレートではなく、式と decltype を使ってメタプログラミングすれば、多重定義された関数も綺麗に扱えると妄想。

2010-06-04 23:11:55
Yak! @yak_ex

SFINAE に対する(実質的な拡大で解決された) DR ってどれだっけって委員会のページ探してもすぐ分からなかったけど gcc のページ経由で発見。 http://bit.ly/aInuoN っていうか N3092 の 14.8.2 に decltype の例が載ってますね。

2010-06-04 23:13:44
若年寄(もう若くない) @kikairoya

テンプレートでも受けられないしdecltypeも効かないし・・・ [宮崎産を食べよう]

2010-06-04 23:16:07
若年寄(もう若くない) @kikairoya

だめだなー、decayやらimplicit conversionやらを解決できない [宮崎産を食べよう]

2010-06-04 23:18:05
若年寄(もう若くない) @kikairoya

おてあげ・・・ [宮崎産を食べよう]

2010-06-04 23:21:57
若年寄(もう若くない) @kikairoya

むー、オーバーロードしてるとfunctionにもそのままは入れられないのか [宮崎産を食べよう]

2010-06-04 23:24:19
Yak! @yak_ex

正確な関数の型を知るのは難しそう。実用的には正確な関数の型は必要なくて特定の引数の型で呼び出せる関数があるかが分かれば OK だと思うので decltype で SFINAE かければ良さそうって感じでしょうか。

2010-06-04 23:25:15
若年寄(もう若くない) @kikairoya

何をパラメータにSFINAEすればいいんだろう [宮崎産を食べよう]

2010-06-04 23:27:14
若年寄(もう若くない) @kikairoya

だめだなー、ここは@Cryolite先生が颯爽と現れるのを待つか [宮崎産を食べよう]

2010-06-04 23:30:43
普通のC++使い、銀天すばる @SubaruG

いろいろ試したけど、うまく template の dependent name にするのが大変。

2010-06-04 23:39:35
普通のC++使い、銀天すばる @SubaruG

当然だけど、SFINAEは dependent name でしか働かない。

2010-06-04 23:49:20
普通のC++使い、銀天すばる @SubaruG

潜在的なエラーを見つけるためには極めて打倒で、 two phase lookup は大事。 VC は爆発すればいいと思うよ?

2010-06-04 23:50:05
前へ 1 2 ・・ 6 次へ