1 名前:デフォルトの名無しさん [2006/09/23(土) 15:00:11 ] 語って.はぁと part boost::mpl::int_<3> 前スレ 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/
83 名前:73 mailto:sage [2006/10/11(水) 20:47:31 ] そうですね、では 現在、コンパイルすると次のエラーがでます C2027: 認識できない型 'boost::STATIC_ASSERTION_FAILURE<x>' が使われています ↑コンパイル時の展開関係などがわかるようなデバッガがほしい・・ 以下コード。 #include <tchar.h> #include <locale> #include <iostream> //#include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_woarchive.hpp> //#define BOOST_LIB_NAME boost_serialization #define BOOST_LIB_NAME boost_wserialization #include <boost/config/auto_link.hpp> class test{ wchar_t* str; template <class Archive> void serialize(Archive& ar, const unsigned int version){ ar & str; } test(){_tcscpy_s(str,(sizeof(_T("TEST"))+1)*2,_T("TEST"));} }; int main(){ test te(); std::locale::global(std::locale("japanese")); boost::archive::text_woarchive oa(std::wcout); //boost::archive::text_oarchive oa(std::cout); oa & te; return 0; }
84 名前:73 mailto:sage [2006/10/11(水) 20:53:31 ] あ、メモリ確保してない^^;
85 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 22:08:27 ] >>83 C2027ってことはVisual C++だろ。 出力の中から、エラーを起こしたテンプレートがどこから実体化されたのか辿れるようになっている。
86 名前:73 mailto:sage [2006/10/11(水) 22:21:21 ] >>85 まじすか、情報ありがとうございます! あの後、組み込み型での実行は諦めてwstringバージョンを作りました 一応ちゃんと動作しますが、#elifディレクティブのほうは文字化けします #include <tchar.h> #include <string> #include <iostream> #include <fstream> #include <locale> #include <boost/archive/text_woarchive.hpp> #include <boost/archive/text_wiarchive.hpp> #include <boost/serialization/string.hpp> #define BOOST_LIB_NAME boost_serialization #include <boost/config/auto_link.hpp>
87 名前:73 mailto:sage [2006/10/11(水) 22:23:10 ] class Test{ public: Test(std::wstring s):str(s){}; std::wstring str; private: friend class boost::serialization::access; template<class Archive> void serialize(Archive& ar, const unsigned int version){ ar & str; } }; int main(int, char**){ std::wcout.imbue(std::locale("")); Test te(_T("日本語文字列の入力テスト")); #if 1 std::wofstream ofs(_T("out.txt")); boost::archive::text_woarchive oa(ofs); oa & te; ofs.close(); std::wifstream ifs(_T("out.txt")); boost::archive::text_wiarchive ia(ifs); ia & te; ifs.close(); std::wcout << te.str << std::endl; #elif 1 boost::archive::text_woarchive ar(std::wcout); ar & te; #endif return 0; }
88 名前:77 mailto:sage [2006/10/11(水) 22:23:11 ] >>79 まずはbjam.exeをゲットしてboostのフォルダに入れておく。 それから、次のようなバッチファイルを作って、実行。 cd "boostのフォルダ" set INCLUDE=STLportのヘッダのフォルダ;%INCLUDE% set LIB=STLportのライブラリのフォルダ;%LIB% call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" bjam -sTOOLS=vc8_0 --prefix="ライブラリの生成先フォルダ" install 深くは使ってないんで、完璧にうまくいってるかは分からないけど。
89 名前:76 [2006/10/12(木) 13:23:24 ] 77さん書き込みありがとうございます。 その方法でやってみるとBoostとSTLportがVC8上で共存できませんでした。 >bjam -sTOOLS=vc8_0 --prefix= ではなく bjam -sTOOLS=vc8_0-stlport --prefix= が公式HP上で出るのを待つしかないのでしょうか??
90 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 15:28:52 ] >>89 ぐぐったらでてきた d.hatena.ne.jp/Hossy/20060926
91 名前:77 mailto:sage [2006/10/12(木) 18:42:34 ] 普通に使えてるけど……
92 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 20:51:42 ] もはやboost無しでは生きていけない。 cygwinにboostのパッケージが用意されていて助かった。
93 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 21:01:59 ] じゃぁ死ね
94 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 21:07:00 ] >>93 何だとゴルァ!
95 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 21:32:05 ] C++をどっぷりやってる人のblogとかは boost使ってない事が無いな
96 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 21:36:26 ] boost禁止のプロジェクトにアサインされて死ねばぁ
97 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 21:58:03 ] つうかboostOKのプロジェクトなんてそうないだろ
98 名前:デフォルトの名無しさん [2006/10/12(木) 22:02:52 ] >>95 んなこたない。boost使ってない奴はC++にどっぷりじゃないと思ってるだけだろ
99 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:26:17 ] >>98 つまり>>95 にとって「C++どっぷり」と「boost使う」が同値なわけか
100 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:30:55 ] C++に詳しい奴がboost使うと思ってるんだろ。 実際は逆なんだけどな。
101 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:36:14 ] ああ、本当にC++に詳しい奴はBoostを作る、だからな。
102 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:37:59 ] >>100 逆っていうか、相関性はあまりない気が 詳しいかどうかじゃなくて、便利だから使うだけだしな
103 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:38:10 ] >>100-101 激しく同意
104 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 23:56:51 ] どっぷりというか魅せられた奴が多いとは思う
105 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 00:10:38 ] >>95 アイディアとかは参考にするし、似たようなもの実装することもあるし、 既に似たようなもの作ってたりとかだなあ。 スレッドとかファイルシステムとかのライブラリって結局自前じゃないと いろいろ融通が利かなくって、他人のはめんどくさい気がするんだよなあ。 ちょっとずれるけど、C++もCPANみたいにFTPとかXMLとか応用的なライブラリが まとまって管理されたりするといいなあとか思うな
106 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 00:35:18 ] GILみたいになんでもかんでもboostに投げればいいんじゃないかな?
107 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 07:54:25 ] 大したことない自前ライブラリ使ってるから投げられないと思われ
108 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 08:55:25 ] まあ新しいライブラリとかが出たときは、いつでも「なんでもできるし、 もう自分で作る必要はない」とか売り文句がついてくるんだけどさ。 OWLとかMFCもATLもそうだったけど、そういうのの上位に作るとさ、その ライブラリの衰退と共に自分のコードも死んじゃうんだよね。 あと、自前はたいしたことなくていいんだよ。必要なときに必要な箇所を 実装すればいいんだからさ。
109 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 09:12:12 ] Boostはその特性からして、衰退するときはC++と同時だと思うが。
110 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 09:29:40 ] それはそうかもね。MFCとかよりはだいぶ標準よりだろうし。 まあ、boostの場合は衰退の前にもっと繁栄しないとかなと。。
111 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 10:17:36 ] 今は、C++からの逃げ道としてC#やjavaが用意されている時代です。
112 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 12:16:24 ] >>101 boostの開発者は自分で使いたいから作ったんじゃないの? 自分では使わないけれど他人に使わせるために作ってるわけ? 105の言うとおりに同等品を既に作ってあるとかなら別だけど。
113 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 12:37:39 ] 人は何故mplを作るのか? そこにテンプレートメタプログラミングがあるからだ。
114 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 12:42:21 ] >>112 ただboostを使ってるだけの連中は、boostを作ってる連中に比べれば全然C++に詳しくない。 って話だろ?
115 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 12:44:10 ] プロジェクトで使えなくとも、Boost のヘッダ見て部分的に移植するのは いろいろと勉強になって楽しいけどな 特に detail/ 以下漁るといろんなモノ発掘できて楽しいw
116 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 12:48:55 ] >>114 ただC++コンパイラを使っているだけの連中は、C++コンパイラを作っている連中に比べれば(ry
117 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 19:18:21 ] >>115 たしかに。lightweight_mutex (shared_ptr で使用)だの、 phoenix (spirt で使用) だのは、ブラッシュアップして表に出して欲しいくらい。
118 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 22:14:55 ] でも、同等機能が複数あるのはやだなあ。統一してほしいものだ。 phoenixはlambdaと統合中とかどこかでみたような。。
119 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 13:11:22 ] >>105 順番の問題じゃない?下位のクラスが安定してきたらそのうちできるでしょ。 spirit使えばXMLパーサの実装も理屈的にはBNFを移すだけになるしさ。
120 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 16:27:50 ] C++ の場合は空間効率と実行効率の要求が分野によって全然違う上に、 そこをいくらでもチューンナップできる自由度もあるので、 なかなか汎用的な低レベル層を作るのは難しいという気がする。 で、それをテンプレートポリシー化によって汎用的にしすぎると 今度はコンパイル時間が許容できなくなったり、言語非互換の壁に ぶちあたったりするという罠。
121 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 17:59:04 ] 伸びないねこのスレ C++は詳しくないけど面白そうなのでboost::spiritを学び始めた どういったことに使おうかなーって思って BNFの具体的な使われ方を調べようと思ったんだが ググっても基本的な使い方ばっかりがヒットするorz 正規表現雑技のページとかが理解できたら 幅が広がりそうだが 今度は逆に応用過ぎて理解できない
122 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 18:19:59 ] おもしろいけど ミニ電卓作るとか 自前でXMLパーサ作る位しか思いつかなかった 頭ひねって普通にCで書いた方がコンパイル速度でイライラしなくて済むけど…
123 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 19:26:36 ] すでにある程度作ってしまったプログラムの構造を変えずに おまけ機能を追加するときに、 bindとかは大活躍してる lambdaは使いこなせてない
124 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 20:11:14 ] そこでboost::lambda::bindですよ。
125 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 00:01:29 ] boost::interprocessって8月のも10月のもexampleにある奴すら ビルドできないんだけど、誰かどこに手を入れればいいかわかる人居ます?
126 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 08:53:42 ] まあまだ日本で実務でばりばり使ってますって人は少ないんじゃない? C++上級者が興味を持って、調べてる的な感じだよね。 てか、商用ではJavaかスクリプトになりそうだから、クロスでC++って 需要あんまなさそうとか。。
127 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 15:02:46 ] C++を(C++的に)使ってる人自体がまず少なそう。
128 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 15:33:05 ] んなアホな
129 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 16:11:04 ] lang = c++ lang == c こういうことか! …すいません。でも仕事で非標準(かつ多機能)のライブラリの利用を認めてるとこは多くないんじゃない?
130 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 18:35:35 ] shared_ptrに感動しますた さりげなくスレッドセーフになっていてcoolです
131 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 21:50:45 ] スレッドセーフだったっけ?
132 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 21:55:43 ] 参照カウンタの部分はスレッドセーフだな
133 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 22:47:21 ] 誘導されてきました int main(int argc, char * argv[]) { boost::numeric::ublas::vector<float > vec(2); vec(0)=1.0;vec(1)=2.0; boost::function1< float,boost::numeric::ublas::vector<float> > norm_2Functor = &boost::numeric::ublas::norm_2<boost::numeric::ublas::vector<float> >; float out= norm_2Functor(vec) ; } 想定外のメモリーを参照しました で落ちる。何が悪いのだろう。
134 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 16:38:12 ] オフィシャルサイトに何が起こったんだろう。
135 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 16:58:41 ] SFのipが変わったせいで転送に失敗してるとさ じきに直るでしょ
136 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 17:02:39 ] あと急ぎの用があるなら boost.sourceforge.net/
137 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 17:37:55 ] おお、さんきゅー!
138 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 00:32:34 ] >>132 でふぉでそうだったっけ?そしたら遅くないか?
139 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 00:35:46 ] スピンロックかも
140 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 00:49:28 ] Win32だとInterlockedExchange()あたり使ってるんじゃなかったか。
141 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 01:43:59 ] >>138 つ boost/detail/sp_counted_base.hpp
142 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 03:24:06 ] >>133 VC8+boost1.35で試したらちゃんと動いたけど 使ってるコンパイラとboostのバージョンは?
143 名前:133 mailto:sage [2006/10/19(木) 09:30:48 ] >>133 >>142 VC2003 + boost 1.33.1 です とりあえずboostのバージョンあげてきます
144 名前:133 mailto:sage [2006/10/19(木) 09:34:24 ] sourceforge.net/project/showfiles.php?group_id=7586 boost1.35なんてないよ
145 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:14:37 ] >>144 CVSの最新版が1.35
146 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:36:49 ] >133 out = 2.236068 g++(mingw3.4.5)+boost1.33.1 でも問題ないようにみえます。
147 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:43:43 ] コンパイラか
148 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:46:32 ] >>133 VC8+boost1.33.1でもちゃんと動くね
149 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 16:25:42 ] >>133 VC2003で試したら落ちたのでアセンブリ出力を調べてみた。 function1<float, ublas::vector<float> > norm_2Functor = &ublas::norm_2<ublas::vector<float> >; and eax,00402fd0 ; ここがおかしい。なんでANDやねん...(00402fd0はnorm_2のアドレス) push eax ; VC8では2行あわせてpush 00402fd0だけになっている lea ecx,dword ptr [ebp-3c] call 00403040 mov byte ptr [ebp-04],01 で、norm_2Functorの宣言をこうしたらとりあえず動いた。 function1<float, ublas::vector<float> > norm_2Functor(&ublas::norm_2<ublas::vector<float> >); push +00 ; この00は何なんだろう… push 00402fd0 lea ecx,dword ptr [ebp-3c] call 00403040 mov byte ptr [ebp-04],01 よくわからないpush 00がとても不安だけど…(VC8ではpushはひとつだけ)
150 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 21:04:32 ] VS2003ではfunction1を初期化 norm_2Functor(&ublas::norm_2<ublas::vector<float> >); でしか呼べないのね。 objectの意味ねえ
151 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 21:49:33 ] >>150 function1<float, ublas::vector<float> > norm_2Functor(NULL); で宣言しておいてswap技法 function1<float, ublas::vector<float> >(&ublas::norm_2<ublas::vector<float> >).swap(norm_2Functor); で実際の関数を代入とか… ヤッテランネ(ノ`□´)ノ⌒┻━┻
152 名前:151 mailto:sage [2006/10/20(金) 21:52:00 ] メンバ関数のswapがないから swap(norm_2Functor, function1<float, ublas::vector<float> >(&ublas::norm_2<ublas::vector<float> >)); でないと無理か そもそもできるかどうか知らんけど
153 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:03:06 ] 腐ったコンパイラでなんとかしようという努力は不毛だぜ
154 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 22:38:40 ] >>152 そもそも一時オブジェクトをswapの引数にはできん
155 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 23:17:36 ] >>154 --->?swap技法?
156 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:24:57 ] 中国人は帰れよ
157 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:43:07 ] >>155 意味不明
158 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:43:28 ] >>154 vectorが確保するメモリを要素数ぴったりに合わせるテクニックで x.swap(std::vector<T>(x)); ってのがあったと思うけど、これもダメなの?
159 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:46:06 ] 一時オブジェクトをswapの引数にするのは何も問題ない(ちゃんとしたコンパイラなら)
160 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 00:50:03 ] constでない参照引数に一時オブジェクトはダメじゃなかったっけ?
161 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 01:01:03 ] >>158 VC++2003で警告レベルを最高にするとwarningになるな。
162 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 01:27:59 ] 23.1 Container requirementsによればa.swap(b)とswap(a,b)は同じで、 25.2.2 Swapによれば template<class T> void swap(T& a, T& b); 1 Requires: Type T is Assignable. とあるから、できないんじゃね? と思ってx.swap(std::vector<T>(x));とやったらVC++2005でエラーになった。 と思ったらstd::vector<int>(x).swap(x);は通った。 何じゃこりゃ。
163 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 02:05:58 ] >>158 swap技法はstd::vector<T>(x).swap(x);じゃない?
164 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 07:43:54 ] >>162 template<class T> void swap(T& a, T& b); はaもbも非const参照だから、一時オブジェクトを受け付けない。 std::vector<int>(x).swap(x);は、 std::vector<int>(x)が一時オブジェクトだが非constなので、非constなメンバ関数を呼べてしまう。
165 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 08:54:42 ] >>158 お前何にもわかってないのな >>159 馬鹿確定
166 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 10:01:26 ] あ、一時オブジェクトに対して非constメンバを呼ぶのはいいのか。
167 名前:デフォルトの名無しさん mailto:haskell厨 [2006/10/21(土) 21:13:06 ] int add(int a,int b){return a+b;} があるとして、 boost::function<int (int,int)> f = add; はコンパイルできるわけですが、 boost::function<boost::function<int,int> (int)> g = add; のようなことがしたい場合はどうし たらよいでしょうか?addを、int->int->int ではなく int-> (int->int) として扱いたいというか。 gに、あとで(addの)第一引数を渡して、boost::function<int,int>型の関数オブジェクトを得て、 更にその後で(addの)第二引数を渡し、最終結果を得たいという感じです。
168 名前:167 mailto:sage [2006/10/21(土) 21:20:16 ] fをgに変換する方法でも結構です。 よろしくおながいします
169 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 21:44:22 ] >>167 どうしてもその変換をしないと駄目? 第一引数が既にあるならそれを部分適用することは簡単なんだが。
170 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 22:05:03 ] 思った程大変じゃなかった。 # include <boost/function.hpp> # include <boost/lambda/lambda.hpp> # include <boost/lambda/bind.hpp> # include <iostream> # include <functional> namespace lam = boost::lambda; int main(void) { typedef boost::function<int (int, int)> f_type; f_type f = std::plus<int>(); boost::function<boost::function<int (int)> (int) > g = lam::bind(std::bind1st<f_type, int>, f, lam::_1); std::cout << g(7)(2) << '\n'; }
171 名前:167 mailto:sage [2006/10/21(土) 22:05:15 ] >>169 第一引数の部分適用が簡単なのは承知しているのですが…変換希望です。
172 名前:167 mailto:sage [2006/10/21(土) 22:23:29 ] >170 ありがとうございます。やってみます。
173 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:04:05 ] boost::bindでもいけるね
174 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:10:30 ] >>173 いってみてよ
175 名前:デフォルトの名無しさん [2006/10/22(日) 01:05:59 ] template <typename A, typename B, typename C> int foo(A a, B b, C c) { return 0; } template <typename A, typename B> int foo(A a, B b) { return 0; } に対して、後者の関数をbindするつもりで boost::bind(foo<int,int>, _1, 100); すると、no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, int)’ とか言われてしまうんだが、これって回避策ありますか? gcc4.1です
176 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 01:12:24 ] >>175 boost::bind(static_cast<int (*)(int, int)>(foo), _1, 100)
177 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:38:25 ] >>175 class Void{}Void_v; template<class T1, class T2, class T3=Void>struct select_f; の特殊化を作ってfooの引数にVoid型があるなしで選択するとかは。
178 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:42:09 ] >>177 は?
179 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:43:22 ] >>177 175は関数テンプレートな訳だが..
180 名前:177 mailto:sage [2006/10/22(日) 13:30:36 ] >>179 えーと、あいまいな関数オーバーロードの解決にはキャストあたりが手っ取り早いと思うけど そこで、 template <typename A, typename B, typename C> int foo(A a, B b, C c) { return select_f<A, B, C>()(a, b, c); }// put away foo else ・・・ boost::bind(foo<int,int, Void>, _1, 100, Void_v); こんな感じでキャストを使わない方法の案を提供したかったわけですよ。
181 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:39:27 ] キャストを使わないでそれを使うことに何の意味があるの? あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの?
182 名前:177 mailto:sage [2006/10/22(日) 13:55:49 ] >>181 キャストを使わない。 キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性をなくせる(たぶん)。 > あと、>177のように何の前置きにもなしに言って、理解してくれるエスパーだと思ったの? タイピングの勢いだ。
183 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:28:28 ] > キャストを使ったときに起きるテンプレート関数の特殊化に対しての曖昧性 具体例が欲しいな