- 1 名前:デフォルトの名無しさん [2017/11/04(土) 16:33:35.07 ID:NYxCuvMY.net]
- エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう 半角空白やタブでのインデントはスレに貼ると無くなります コードを貼れる所 codepad.org/ https://ideone.com/ 前スレ 【初心者歓迎】C/C++室 Ver.101【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1500329247/
- 449 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 15:04:56.72 ID:rDNMxPWT.net]
- >>440
引数を部分的に何かにbindしたfunctionを作るのがbindなわけで、 (add(a,b) の a だけ1にbindしてadd1を作るとか) 何もbindせず引数の順序も同じなら factories["derived"] = boost::factory<derived*>(); で良い
- 450 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:06:46.13 ID:t1HAuKeq.net]
- >>441
確かにbindのそもそもの目的はそれですよね>(add(a,b) の a だけ1にbindしてadd1を作るとか) 仰る通りの書き方でコンパイルも実行も通りました。 ただ、ググった限り引数のある場合はbindをかます例しか見つからなかったです。 「bindが必要」と明言してる人すらいて、結局よくわからないです・・・ その後、いくらコンパイルも実行も問題ないとはいえ実際のコンストラクタとは違うのを boost::function<〜> に指定するのはなんとも気持ち悪く思い、試行錯誤したところ boost::forward_adapter を使う方法を見つけました。 https://wandbox.org/permlink/D3Q75cgRNR43Nulc ヒントとなったのは以下のサイトでした。 https://lists.boost.org/Archives/boost/2017/02/232695.php 正直なぜこれで通るのか完全には理解していませんが、とりあえずの解決とします。 ご助言どうもありがとうございました。
|

|