プレースホルダー

1
Norihisa Fujita, ぽん @fjnli

mem_funとthisだけbindするのってstd::bindではできないよね…何か他に手段あったっけ…

2010-05-14 11:22:54
Norihisa Fujita, ぽん @fjnli

std::bind(&T::f, x, _1, _2, _3...); とか書けばいけるけど、引数の数に応じて何個も書かないといけないのがめんどい。

2010-05-14 11:27:25
対鉱物用武装 @kikairoya

@fjnli 確かそんなことをする魔法のライブラリの話題が以前出てたような。@melponn先生だったかなあ

2010-05-14 11:34:16
Norihisa Fujita, ぽん @fjnli

@kikairoya std::placeholder::_nがunspecifiedだから手が出しずらいんですよねえ

2010-05-14 11:35:27
Norihisa Fujita, ぽん @fjnli

@kikairoya Cの世界に出せる必要はないんですが、std::bind(&T::f, obj, _1, _2, ...) みたいなことがしたいんですよね。ただ、bindだと_nを並べるのが面倒というか格好悪いというか…

2010-05-14 11:42:45
Norihisa Fujita, ぽん @fjnli

まあでも、今回のケースだと、汎用的な物を作ったとしても、あまり手間軽減にはならないのかな…。_1, _2をならべるか。。。

2010-05-14 11:45:46
対鉱物用武装 @kikairoya

Variadic Templateでうまくできんのかねー

2010-05-14 11:47:02
Norihisa Fujita, ぽん @fjnli

@kikairoya _1 が decltype(_1)() で再構成できるなら、なんとかなるかも…

2010-05-14 11:51:34
Akira Takahashi @cpp_akira

あぁ、プレースホルダーの型わかんないのか。

2010-05-14 11:52:51
Akira Takahashi @cpp_akira

プレースホルダーの型がわからないと、ユーザー定義リテラル + constexprが入っても1_とか作れないじゃないか。

2010-05-14 11:53:58
Akira Takahashi @cpp_akira

decltypeで取得したインスタンス化済クラステンプレートの型から、テンプレート引数を取り去って、テンプレート引数を指定しなおすっていうのを誰か・・・いや、テンプレートになってるとも限らない。

2010-05-14 11:56:46
Norihisa Fujita, ぽん @fjnli

@kikairoya _1, _2の並びをVariadic Templateで作るのってできますか?

2010-05-14 12:14:29
Norihisa Fujita, ぽん @fjnli

出来ないのでは?といった側からできる気がしてきた。

2010-05-14 12:16:44
Norihisa Fujita, ぽん @fjnli

出来そうだけど、三時間ぐらいPC触れないから検証できないな…

2010-05-14 12:19:40
対鉱物用武装 @kikairoya

どっちかというとVARARGマクロの出番なんかね

2010-05-14 12:24:24
Akira Takahashi @cpp_akira

というかあれだね。テンプレートテンプレートパラメータ使えばプレースホルダーのテンプレートの型くらいわかるって話だよね。

2010-05-14 12:25:00
Akira Takahashi @cpp_akira

テンプレートとは限らないけど

2010-05-14 12:25:58
Norihisa Fujita, ぽん @fjnli

いや、この方法はあまりうれしくないな…

2010-05-14 12:26:30
対鉱物用武装 @kikairoya

All placeholder types shall be DefaultConstructible and CopyConstructible, and ...

2010-05-14 12:31:39
対鉱物用武装 @kikairoya

あれ・・・mem_fnがそのままやりたいことじゃないんか?よくわからん

2010-05-14 12:36:15
対鉱物用武装 @kikairoya

せめてplaceholderをtemplateで自動生成できればなあ

2010-05-14 12:41:23
対鉱物用武装 @kikairoya

template <unsigned N> unspecified-placeholder-type make_placeholder()みたいなのが欲しい

2010-05-14 12:45:11