- 1 名前:BOOTS [2007/10/18(木) 08:09:35 ]
- 語って.はぁと part boost::mpl::int_<5>
過去スレ 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/
- 211 名前:210 mailto:sage [2007/12/21(金) 19:13:04 ]
- 間違えた
>>209 × >>206 ○
- 212 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 16:13:54 ]
- 正規表現で調べる文字列にcharやwchar_tの配列は使用できないのでしょうか
- 213 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:06:19 ]
- >>212
char*やイテレータを取るバージョンがあるはずだが
- 214 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:15:20 ]
- >>213
以前のバージョンということですか? できればxpressiveで書きたいので、最近のバージョンを使いたいのですが それでは無理ってことでしょうか
- 215 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:34:45 ]
- バージョンと言うかオーバーロードな
と言うかリファレンス見たら?
- 216 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 22:54:20 ]
- >>215
つ 特殊化
- 217 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:22:28 ]
- つか入力にイテレータ取るバージョンがあれば当然ポインタ食わせられるだろ。
- 218 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:55:17 ]
- sregexがstd::string版なら、cregexがconst char*版。
Xpressiveでは、イテレータの型をテンプレート引数で指定する。 boost.org/doc/html/xpressive/reference.html#header.boost.xpressive.xpressive_fwd.hpp
- 219 名前:デフォルトの名無しさん [2007/12/24(月) 08:12:02 ]
- std::vector<int> v;
v.push_back(1); v.push_back(2); v.push_back(3); std::for_each(v.begin(), v.end(), boost::bind(operator<<, std::cout, _1)); このようにして各要素を出力することはできないのでしょうか? なぜだか error C2065: '<<' : undeclared identifier と言われてコンパイルできません.
- 220 名前:219 [2007/12/24(月) 08:54:23 ]
- boost::bind に関するこのコードでなぜ最後のコメント部分の
コンパイルが通らないのでしょうか? pastebin.windy.cx/?page=view&id=1198454028
- 221 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:25:58 ]
- コンパイルできない理由はちょっとわからんけど、これじゃダメなん?
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout));
- 222 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:38:51 ]
- >>220
g++だと<unresolved overloaded function type>と言われたのでstatic_castしたら通った。 std::for_each(v.begin(), v.end(), boost::bind( static_cast<A &(A::*)(int)>(&A::operator =), &a, _1));
- 223 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:43:23 ]
- >>219
intを出力するoperator <<は、cout (std::basic_ostream)のメンバ関数だから、 そのコードでは、正しいoperator <<へ辿り着けない。 もっとも、それ以前の問題でコンパイルエラーになっているようだが。 今回は221のいうとおりostream_iteratorもあるし、 その他演算子一般の場合は、bind使えなくてもlambdaがある。
- 224 名前:219 mailto:sage [2007/12/24(月) 09:48:19 ]
- >>221
いや,もちろんそれでやりたいこととしてはOKなんですが, 一般的な演算子を指定できれば応用範囲も広がるかなと思って. >>222 VC9 だとテンプレートを検索しまくって 「あれでもない,これでもない」と C2780 を連発した揚句, 時々 ambiguous だというエラーも出るんですよ. なるほど, g++ でもそのままでは通らなくて, static_cast すれば通るんですね. operator() だと問題なくて operator= だと問題になる理由がわからないですが. 既定の代入演算子が別途用意されてしまうからかなぁ. 自前で = をオーバーロードした時って既定の = は 定義されないんでしたっけ? でも独自にコンストラクタを作ってもコピーコンストラクタは 勝手に作られていたような気がする.
- 225 名前:219 mailto:sage [2007/12/24(月) 09:51:05 ]
- >>223
なるほど,それで operator<< が見つからないと怒られてるんですね. たぶんグローバル名前空間の operator<< を探しに行って「無い」 と怒ってるように思います. 自分はてっきりストリームの << 演算子はグローバル名前空間に 定義されていて必要なクラスに friend 指定されているのだと 思っていました.
- 226 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:35:14 ]
- >>224
boost::bindはlambdaと違って一旦メンバーポインタにするから。 だからoverloadされてるとまずい。
|

|