- 1 名前:デフォルトの名無しさん [2009/01/19(月) 21:22:22 ]
- 過去スレ
part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
- 239 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:32:08 ]
- >>236
メンバ関数のconst外す or 戻り値にconst付ける >>238 郵便を送るには送り先住所が必要ですが、受け取るにはポストを設置しておけばいいだけです。 receive_fromに渡しているendpointは差出人の住所を受け取るためのバッファです。 ちなみにそのページの非同期コードは未定義だね。
- 240 名前:デフォルトの名無しさん [2009/03/21(土) 15:00:11 ]
- >>239
>>戻り値にconst付ける error C2440: 'return' : 'const int' から 'int &' に変換できません。 >>メンバ関数のconst外す error C2662: 'step_iterator::dereference' : 'const step_iterator' から 'step_iterator &' へ 'this' ポインタを変換できません。 iterator_core_access::dereference が static typename Facade::reference dereference(Facade const& f) { return f.dereference(); } だから const はずせないです。
- 241 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:04:38 ]
- >237
> int& dereference() const const メンバ関数なので this は const step_iterator*。 従って、メンバの value も const int になります。 これは変更不可能なので、変更可能な参照 int& として返すことができません。 value を int* にした場合は、int * const になり、ポインタ値としては const ですが、 指している int の値は変更可能なので int& にできます。 > public boost::iterator_facade<step_iterator,int , boost::bidirectional_traversal_tag> > int& dereference() const ではなくて > public boost::iterator_facade<step_iterator,const int , boost::bidirectional_traversal_tag> > const int& dereference() const でどうでしょう?
- 242 名前:デフォルトの名無しさん [2009/03/21(土) 15:18:52 ]
- >>241
うまくいきました。 dereference()して値を変えたい場合は、ポインターなどにしてやる必要があるんですね。 >const メンバ関数なので this は const step_iterator*。 >従って、メンバの value も const int になります。 >これは変更不可能なので、変更可能な参照 int& として返すことができません 調べてると、「mutableでないと駄目」とか書いてあったけど、↑のことだったのか・・・
- 243 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:58:49 ]
- >>238
recv_fromはbindでポートと結びついてるソケットで読み込んでるからでないの?
- 244 名前:238 [2009/03/21(土) 16:17:09 ]
- >>239
UDPでは(?)どのポートに来たメッセージも受信できちゃうってことですか? >>243 bind()ではポート番号とか渡してないみたい
- 245 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:27:28 ]
- >244
send_toの時にバインドされてる
- 246 名前:238 mailto:sage [2009/03/22(日) 08:53:20 ]
- >>245
やっぱそうなのか この辺で失礼します。ありがとう
- 247 名前:デフォルトの名無しさん [2009/03/22(日) 18:01:34 ]
- vc2008EE sp1 winxp boost1.38(boostpro)で
int x = 1, y = 10; (boost::lambda::_1 + boost::lambda::protect(boost::lambda::_1 + 2))(x)(y); がコンパイル通らないんだけど、なんで? error C2664: 'boost::lambda::lambda_functor<T>::lambda_functor(const boost::lambda::lambda_functor<T> &)' : 1 番目の引数を 'const boost::lambda::lambda_functor<T>' から 'const boost::lambda::lambda_functor<T> &' に変換できません。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:57:14 ]
- とりあえず解決法だけ
(x)を(boost::cref(x))にする(refでもおk) gcc-4.4, boost trunkで動作確認できた
- 249 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:42:42 ]
- Boostライブラリって同じ機能・もしくはちょっと違う機能のついた別クラスが
多い. こういうとこ改善しないのかな?
- 250 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:59:52 ]
- >>249
具体的にどれのこと?全部挙げなくて良いからさ。 あと、改善しないのか気になるんなら、直接提案してみれば良いよ。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:22:20 ]
- 249じゃないけど、bindとlambda::bindとかtupleとfusionとか
これまで書かれたコードがあるから一本化できないんだろ どっちかが非推奨になることはあるかもしれんが boostのライブラリは便利だけど、組み合わせようとするとあれ?ってなる感じがする。 lambdaはresult_ofに対応したんだっけ?
- 252 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:33:56 ]
- boost/functionを使うときにはたいていboost/bindも使うとか
文字列処理クラスが機能かぶってるとかのことを言ってるのか? おれは↑と他ちょっとしかboostしないから知らないけどなんかあんの?
- 253 名前:247 [2009/03/22(日) 22:46:02 ]
- boost::protect の一番わかりやすい(シンプルな)
サンプルコード教えてください。 (boost::protectの有無で結果変わるやつ)
- 254 名前:232 mailto:sage [2009/03/24(火) 22:59:56 ]
- >>233-235
直らなかったので、ソースを調べました。 コンパイラのバージョンチェックがまずかったようです。 boost/foreach.hppの頭のほうの行の || BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 810) を、以下のように変えたらコンパイラが通りました。 || BOOST_WORKAROUND(BOOST_INTEL_WIN, <= 1100) とりあえず、これで様子見です。
|

|