1
Norihisa Fujita, ぽん @fjnli
mem_funとthisだけbindするのってstd::bindではできないよね…何か他に手段あったっけ…
Norihisa Fujita, ぽん @fjnli
std::bind(&T::f, x, _1, _2, _3...); とか書けばいけるけど、引数の数に応じて何個も書かないといけないのがめんどい。
対鉱物用武装 @kikairoya
@fjnli 確かそんなことをする魔法のライブラリの話題が以前出てたような。@melponn先生だったかなあ
Norihisa Fujita, ぽん @fjnli
@kikairoya std::placeholder::_nがunspecifiedだから手が出しずらいんですよねえ
Norihisa Fujita, ぽん @fjnli
@kikairoya Cの世界に出せる必要はないんですが、std::bind(&T::f, obj, _1, _2, ...) みたいなことがしたいんですよね。ただ、bindだと_nを並べるのが面倒というか格好悪いというか…
Norihisa Fujita, ぽん @fjnli
まあでも、今回のケースだと、汎用的な物を作ったとしても、あまり手間軽減にはならないのかな…。_1, _2をならべるか。。。
対鉱物用武装 @kikairoya
Variadic Templateでうまくできんのかねー
Norihisa Fujita, ぽん @fjnli
@kikairoya _1 が decltype(_1)() で再構成できるなら、なんとかなるかも…
Akira Takahashi @cpp_akira
あぁ、プレースホルダーの型わかんないのか。
Akira Takahashi @cpp_akira
プレースホルダーの型がわからないと、ユーザー定義リテラル + constexprが入っても1_とか作れないじゃないか。
Akira Takahashi @cpp_akira
decltypeで取得したインスタンス化済クラステンプレートの型から、テンプレート引数を取り去って、テンプレート引数を指定しなおすっていうのを誰か・・・いや、テンプレートになってるとも限らない。
Norihisa Fujita, ぽん @fjnli
@kikairoya _1, _2の並びをVariadic Templateで作るのってできますか?
Norihisa Fujita, ぽん @fjnli
出来ないのでは?といった側からできる気がしてきた。
Norihisa Fujita, ぽん @fjnli
出来そうだけど、三時間ぐらいPC触れないから検証できないな…
対鉱物用武装 @kikairoya
どっちかというとVARARGマクロの出番なんかね
Akira Takahashi @cpp_akira
というかあれだね。テンプレートテンプレートパラメータ使えばプレースホルダーのテンプレートの型くらいわかるって話だよね。
Akira Takahashi @cpp_akira
テンプレートとは限らないけど
Norihisa Fujita, ぽん @fjnli
いや、この方法はあまりうれしくないな…
対鉱物用武装 @kikairoya
All placeholder types shall be DefaultConstructible and CopyConstructible, and ...
対鉱物用武装 @kikairoya
あれ・・・mem_fnがそのままやりたいことじゃないんか?よくわからん
対鉱物用武装 @kikairoya
せめてplaceholderをtemplateで自動生成できればなあ
対鉱物用武装 @kikairoya
template <unsigned N> unspecified-placeholder-type make_placeholder()みたいなのが欲しい
残りを読む(25)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする