Boostを語れゴラァ part5
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001BOOTS
2007/10/18(木) 08:09:35過去スレ
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0002デフォルトの名無しさん
2007/10/18(木) 08:10:02Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798007862/
Beyond The C++ Standard Library
http://www.amazon.co.jp/exec/obidos/ASIN/0321133544/
C++ Template Metaprogramming
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/
The Boost Graph Library
http://www.amazon.co.jp/exec/obidos/ASIN/0201729148/
■関連スレ■
C++相談室 part58
http://pc11.2ch.net/test/read.cgi/tech/1190745673/
【C++】STL(Standard Template Library)相談室 7
http://pc11.2ch.net/test/read.cgi/tech/1185986999/
0003デフォルトの名無しさん
2007/10/18(木) 08:10:07Loki
http://sourceforge.net/projects/loki-lib/
JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
POCO, the C++ Portable Components
http://www.appinf.com/poco/info/
http://sourceforge.net/projects/poco/
The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/
0004デフォルトの名無しさん
2007/10/18(木) 12:31:010005デフォルトの名無しさん
2007/10/18(木) 19:28:37ミ お っ 立 も __ノ _,.ヘ _,,... -- ─--「::「 {i:.:.:`'、_/:.:.:.:.:.[/-...,,_ ソ ,' い
Ξ っ あ て っ ) /::7ヽ、ヘ,.-ァ'^ヽ∠ヽ,/L__`|:::|/}!.:.:.:.:r7=-:.:.:.:.!7::::::::::::`ヽ. ッ i け
ニ 立 ぁ な も !::::!´ア「>'‐''"´ `"'<LL_,'i>:'へ、:.:.:.:.:.:.r/::::::::::::::::::::::':., .|. な
Ξ て ん い う /´\「>'" ァ':::::::::::::::\__」}:::::::::::::::::::::::::::::ヽ.! い
三 ち ・ っ 糞 ,' _」ア´ / /! ! /! / ;'::::!:::::::';:::';::::::::ヽ::::::':;::::::::::::::、::::! 子
= ゃ ・ て ス i 'ヽ! / 7, 'イハ /! メ、,!__ハ, 'i::::::ト,::::::!::::i::::i:::::::':;:::::';:::::::::::::::ヽ;| ね
三 ぁ ら 約 レ ', .,' / /!,!-'、:レ' |/ァ' レ ヽ!::!:::! ':;:::|ー!-ハ::::::::i:::::::!::::::::':;:::::::ヽ:
= ら め 束 は !/ ;' ,ヘ!i. i,.ハ 、,_ !!::!:;ハ ヽ,jァr-;、!_ハ」:::::;':::::::::::::ヽ,::::::::;ゝ、.,__
ニ め っ っ ・ ノへ,/レヘ, ! ゝ' ....::::::... '  ̄´゚o'レヘjソ :::.. 」_r!`> 7__/:::::i::::::::::::::
三 ぇ ・ ・ ・ ! ノ; ./7''"/// /// !/. ! '"'",':::::::!::::::i:::::::::::i 変
= ぇ も ・ ・ ノ; / ,' ゝ、 ( ヽ u ( ) ハ !:::::;'::::::::':;::::::!. 態
三 ぇ う ・ あ 〈,へレ'〈ジi/ミ>.、..,,____ ,. イ ( )`ヽ. ̄フ !:::/i_;;::;;_:::::< さ
≡, ぇ 糞 は ぁ i `:、レ'"´ !_r'"レ'/:::::::::>ァ、/|ヘ ヽ,__,..,.-''" ̄`ヽ、_ヽ:::':;! ん
Ξ, ぇ .ス ぁ っ ':, `ヽ、 ,r;く:::::::!/::::::::::::/」;' `ヽ. _>'" Yヽ:::::!. ?
彡 ! レ ん っ ヽ、 ,.kヘ_!::::ム:::::::/]/ ,ァ-'‐''"´ ヽ!、_ 〉:.!.
0006デフォルトの名無しさん
2007/10/19(金) 11:59:310007デフォルトの名無しさん
2007/10/19(金) 20:36:200008停止しますた
2007/10/24(水) 12:55:390009デフォルトの名無しさん
2007/10/24(水) 12:56:170010デフォルトの名無しさん
2007/10/26(金) 11:37:430011停止しますた
2007/10/26(金) 11:38:170012デフォルトの名無しさん
2007/10/27(土) 03:28:330013745
2007/10/27(土) 03:54:01#include <boost/lambda/bind.hpp>
#define BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_BIND_ENABLE_STDCALL
#include <boost/bind.hpp>
struct F
{
int __stdcall f(int) { return 0; }
};
int main(void) {
namespace bll = boost::lambda;
F f;
boost::bind( &F::f, &f, bll::_1 )(1);
// bll::bind<int>( &F::f, &f, bll::_1 )(1); <- error!!
}
__stdcallの関数はboost::lambda::bindでは呼びだせないんでしょうか?
boost.usersで次のような古い記事を見付けたのですが
ttp://tinyurl.com/34cv9e
この通りに戻り値を明示的に指定しても無駄なようです
0014デフォルトの名無しさん
2007/10/27(土) 06:25:200015デフォルトの名無しさん
2007/10/27(土) 19:41:25〈 ,.'"´ ̄  ̄`ヽ、.:::::::.:.:./
V´ .::l:|:. `、ヽミミヽ、 ヾ:./ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ .::l::从ト、 `ヾ_ミミヽ、 ヽ < 君さぁこんなスレッド立てるから
l/l.:l.:リ仁リニトト、仁≧ミヽ:::ト、 .:::| | 厨房って言われちゃうんだよ
`Y::{fトッソ ``ト。ッソ` 1:l:|::`、:::::! \______________
|.::l´¨ 、 ´ ̄ /::リ::::::::V
ヽ:ヽ、 ー , タ::l:;:::::::/ , -‐─‐‐- 、
, -─-、 __ , イ/.::j:|:::/l/ , ィ"´ ‐f ‐ \
/., `トい、_,/^i.:l:|/ .// , -──‐- 、`ヽ\
/.:::/ .:i {{i^Y^YYy'l/ 〈 〃 ,ィ´ .:.:.:.:.::.:::::i::l:.\j ト、
/.:.::::/ .:.::| k1 |:l ,ム;、ハ、 V__/:::l/::::/:/.::::,イ.:::ハ!:l::::::.:V / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
L.::::厂ヽ .:.:::::| / {j! ーイ:介;l/ ,ハ /ハ!::/l:::/:/.::;ィイ/:::ハ:::|:::i.:.::{/ < おまえのことを必要としてる奴なんて
{7 / \::::! / jfl |:1j! |:|{ Vi l:1ホ{:::l:i;:ィニー 、//-十1:,'.:.:,リ | いないんだからさっさと回線切って首吊れ
// ,.イ:::l/ jf| l;」jl j:」| |::H:| {::l:iイヒリソヽ イヒッソl/, イ/ \_________________
/´ ̄ /::::|:;:;.\ kiL, H fj 〉; |:ト、_,{::ト.、_' ' ' '  ̄ / /i
_>ーー- ,.イヽ、::l;;;:;:;:;(:::/タ^Tニム、_ ,';{:/ |:|:::Y´「 ̄`ハ、 `´ , .イ _j/::|
/。 ̄`¨`ヽ_ソ `1>‐-ヽ{:::::/><!::::::7 |i::ノ { /.::`K T.::::/ /.:::|
,/。 / 〉ニ三云\:.ヽ<ノ::::::」ヽ. Y ,レ'´.::::::::::.〉ハコ``Y::.ヽ
/ / /¨´ ̄ ̄`ヽ、三三ミ<::::| | //.:::::::::::::::://´j}ト、 _」::::::|
0016デフォルトの名無しさん
2007/10/27(土) 19:47:44不覚にも噴いた
0017デフォルトの名無しさん
2007/10/27(土) 22:54:09boost::type
boost::bool_
boost::int_
boost::integral_c
あたりをどうぞ。これもFAQ気味だな。
0018745
2007/10/27(土) 22:59:46これを適当にカスタマイズして使うのがよろしいんじゃないでしょうか?
001914
2007/10/28(日) 08:11:33>>17
すみません説明不足でした。
多重ディスパッチによるマルチメソッドです。(Loki::BasicDispatcherとか)
>>18
boost vaultは初めて知りました。(よくみたらLet's Boostにもリンクはってありますね)
ソース見たところ、Lokiの物よりかなり機能が弱く感じます。
Lokiを使うのがいいのかもしれません。
0020デフォルトの名無しさん
2007/10/28(日) 18:48:54// Just a simple "type envelope". Useful in various contexts, mostly to work
// around some MSVC deficiencies.
ファイルには上記のように書いてありますがどういうこと?
0021デフォルトの名無しさん
2007/10/28(日) 20:11:24を
f<int>();
と呼べない場合があるので
template<class T> T g(boost::type<T>);
を
g(boost::type<int>());
と呼ぶ
0022デフォルトの名無しさん
2007/10/29(月) 14:56:29ディスパッチのユーティリティとして使うとか。
boost/type_traits/detail/wrap.hpp とかもあるね。
template <class T> struct type {};
template <class T>
struct tester {
template <class U> static char (&test(U*))[1];
template <class U> static char (&test(type<U>*))[2];
template <class U> static char (&test(...))[3];
template <class U> static size_t f1(const U&) {
return sizeof(test<T>(static_cast<U*>(0)));
}
template <class U> static size_t f2(const U&) {
return sizeof(test<T>(static_cast<type<U>*>(0)));
}
};
struct X {};
struct XX : X {};
tester<X>::f1(X()); // => 1
tester<X>::f1(XX()); // => 1
tester<X>::f2(X()); // => 2
tester<X>::f2(XX()); // => 3
0023デフォルトの名無しさん
2007/10/30(火) 23:24:10bool operator()(const char* left, const char* right) const{
return std::strcmp(left, right) < 0;
}
}
typedef std::map<const char*, std::string, char_p_less> QueryMap;
これをLambdaを使って実現したいんですが、Lambda式で書いた結果は関数オブジェクトの値であって、型ではないので
typedef std::map<const char*, std::string, (bind(std::strcmp, _1, _2) < 0) > QueryMap;
このようなことが出来ないです。
typedef std::map<const char*, std::string, function2<bool, const char*, const char*> > QueryMap;
boost::function2<bool, const char*, const char*> compare = (bind(std::strcmp, _1, _2) < 0);
こうしてから使うときに
QueryMap foo(compare);
するしかないですか?
0024デフォルトの名無しさん
2007/10/30(火) 23:28:50template<class T>
void use_query_map(const T&){
typedef std::map<const char*, std::string, T> QueryMap;
QueryMap foo;
// fooを使う
}
これで、この関数内では使い放題です。
0025デフォルトの名無しさん
2007/10/30(火) 23:30:05を書くのを忘れていました。
0026デフォルトの名無しさん
2007/11/02(金) 00:21:10boost::function1のオブジェクトを指定することはできないんでしょうか?
>error C2660: 'boost::unit_test::make_test_case' : 関数に 4 個の引数を指定できません。
のような具合にどうにも通らないようです
#include <boost/test/unit_test.hpp>
#include <boost/test/parameterized_test.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <list>
void test_mask (int, int){}
struct sub_test_suite : public boost::unit_test::test_suite {
sub_test_suite() : test_suite("sub_test_suite") {
BOOST_PARAM_TEST_CASE(
(boost::function1<void,int>(boost::bind(&test_mask, _1, 0x80)))
, params.begin(), params.end());
}
private:
std::list<int> params;
};
using boost::unit_test::test_suite;
test_suite*
init_unit_test_suite( int, char* [] ) {
test_suite* test = BOOST_TEST_SUITE( "Parameterized boost::function based test case" );
// add test cases to test_suite
test->add( new sub_test_suite );
return test;
}
0027デフォルトの名無しさん
2007/11/02(金) 07:55:35このように直接callback1のテンポラリを作って渡してやれば一応コンパイルはできました
boost::functionに対する依存も減りますし、この方法使ってればいいんでしょうかね…
#include <boost/test/unit_test.hpp>
#include <boost/test/parameterized_test.hpp>
#include <boost/bind.hpp>
#include <list>
// user definition test function
void test_mask (int, int) {}
// user definition test class
std::list<int> params;
using boost::unit_test::test_suite;
test_suite* init_unit_test_suite(int, char* []) {
test_suite* test = BOOST_TEST_SUITE("test");
BOOST_PARAM_TEST_CASE(
(boost::unit_test::callback1<int>(boost::bind(&test_mask, _1, 0x80)))
, params.begin()
, params.end()
);
return test;
}
0028デフォルトの名無しさん
2007/11/07(水) 23:22:17std::wstring sNumber = L"2007";
unsigned short wValue = boost::lexical_cast<unsigned short>(sNumber);
でbad_lexical_castが投げられてしまいます。
unsigned short以外の型では問題は無いのですが。
見あたらなかったのですが既知の問題ですか?
0029デフォルトの名無しさん
2007/11/08(木) 00:28:59wchar_t をビルトイン型として扱う (/Zc:wchar_t)
じゃない?
0030デフォルトの名無しさん
2007/11/09(金) 12:53:53でboostのコード閲覧がvisula studioみたいにできるけど
debugで変数の動きとか追いかけるのもemacsでVisualStudioみたいに
できる方法ないのかな
0031デフォルトの名無しさん
2007/11/09(金) 13:20:49ttp://www.coins.tsukuba.ac.jp/~yas/coins/compsys-2000/gdb-4.17-doc/gdb_6.html#SEC30
ttp://www.coins.tsukuba.ac.jp/~yas/coins/compsys-2000/gdb-4.17-doc/gdb_9.html#SEC57
0032デフォルトの名無しさん
2007/11/09(金) 13:25:53それをEmacsから操作できるようにするってのがまぁ妥当な方法かも
ただし無駄に面倒だから恐らくやってる人は極少数
なんでVSにはコマンドラインデバッガが無いんだろうね…
0033デフォルトの名無しさん
2007/11/09(金) 14:46:430034デフォルトの名無しさん
2007/11/09(金) 16:27:52gprof みたいなやつって Windows だとなに?
0035デフォルトの名無しさん
2007/11/09(金) 16:54:25けど、使いにくいと個人的には思う
0036デフォルトの名無しさん
2007/11/09(金) 17:04:000038デフォルトの名無しさん
2007/11/10(土) 12:01:39ttp://syrinx.q.t.u-tokyo.ac.jp/hashimoto/graph/
0039デフォルトの名無しさん
2007/11/10(土) 17:07:41>むしろ Visual Studio にプロファイラがついていないことが疑問。
Team Editionの一部にはついてるよ。
0040デフォルトの名無しさん
2007/11/10(土) 17:25:43結局それ以外使い物にならないのでは?
0041デフォルトの名無しさん
2007/11/10(土) 17:28:410042デフォルトの名無しさん
2007/11/10(土) 18:24:140043デフォルトの名無しさん
2007/11/11(日) 18:05:23いかにもロケール設定できてませんよって事態になります。
bjamを使わずに直接cl.exeやワイド文字を使うアプリを起動して表示すればちゃんと表示されのにも関わらずです。
以前のバージョンなら確かにcmd.exe以外のターミナルだろうが、cygwinのbashやzsh上だろうがNTemacsの中のシェルだろうが、
ちゃんと表示されてたんですが、皆様の環境ではどうでしょう?
004443
2007/11/11(日) 18:53:03適当なリビジョンのやつを落としてビルドしたバージョン3.1.14だとこの件に関しては正常に動作しました
0045デフォルトの名無しさん
2007/11/13(火) 03:50:17コンパイルは通るけど実行時にエラーでる
0046デフォルトの名無しさん
2007/11/14(水) 02:02:530047デフォルトの名無しさん
2007/11/14(水) 16:41:47どうやら
boost1.33.1 python2.4の組み合わせでしか動かないみたいです
0048デフォルトの名無しさん
2007/11/21(水) 19:49:45try {
unsigned short us = 0;
int i = 0;
(format("%1%, %2%") %us %i) = "0xABCD, -1234";
BOOST_CHECK_EQUAL(0xABCD, us);
BOOST_CHECK_EQUAL(-1234, i);
}
catch(const format_error& e) {
}
見たいな感じが理想です
0049デフォルトの名無しさん
2007/11/21(水) 19:50:48強いて挙げるならregexとかxpressiveか
0050デフォルトの名無しさん
2007/11/21(水) 19:52:29要するにscanf()のboost版が欲しいわけだ
一言で言えば、無いよ
005148
2007/11/21(水) 20:07:58xpressive->lexical_cast戦法でいきます
0052デフォルトの名無しさん
2007/11/21(水) 20:10:200053デフォルトの名無しさん
2007/11/21(水) 21:08:07悪かないと思うが。
0054デフォルトの名無しさん
2007/11/21(水) 23:15:23ちょうどいいサンプルもあることだし。
ttp://boost-sandbox.sourceforge.net/libs/xpressive/doc/html/boost_xpressive/user_s_guide/semantic_actions_and_user_defined_assertions.html
005548
2007/11/22(木) 16:09:45こんなのあったのかー すごい・・・
でもasのなかでも呼ばれてるlexical_castが16進数とかを良きに計らってくれなくて俺涙目w
0056デフォルトの名無しさん
2007/11/22(木) 19:04:45spirit と bind に触発されて昔作ったもの。
sprintf や sscanf みたいなことを spirit っぽく静的に記述する。
string strA, strB;
sprint( strA, "1 " % !_x[6] % "/" % _s, 10, "aaaa" );
sprint( strB, "2 " % (!_0x[6]) % "/" %_s, 10, "aaaa" );
cout << strA << endl; // 1 0xa/aaaa
cout << strB << endl; // 2 0x000a/aaaa
int xA, xB;
string yA, yB;
sscan( strA, "1 " % _ws % _x % "/" % _s, xA, yA );
sscan( strB, "2 " % _x % "/" % _s[3], xB, yB );
print( cout, "xA = " % _d % "\nyA = " % _s % _endl, xA, yA );
print( cout, "xB = " % _d % "\nyB = " % _s % _endl, xB, yB );
// xA = 10
// yA = aaaa
// xB = 10
// yB = aaa
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5317.zip
0057デフォルトの名無しさん
2007/11/22(木) 23:37:260058デフォルトの名無しさん
2007/11/22(木) 23:48:110059デフォルトの名無しさん
2007/11/22(木) 23:49:16でも今の僕にはその技術はありませんでしたというオチ
0060デフォルトの名無しさん
2007/11/23(金) 14:17:00覚えなきゃならないなんて、C++は大変だな。
おまけにXMLやるならXML用のライブラリ、SQLやるならSQL用のライブラリと
キリがない。
C++もういいよ。終了。
0061デフォルトの名無しさん
2007/11/23(金) 14:19:41頭おかしいのかお前。
例えば、何の言語を使えば
MLやるのにXML用のライブラリを覚えなくていいのか
SQLやるのにSQL用のライブラリを覚えなくていいのか言ってみろ。
0062デフォルトの名無しさん
2007/11/23(金) 14:19:580063デフォルトの名無しさん
2007/11/23(金) 14:21:200064デフォルトの名無しさん
2007/11/23(金) 14:23:27俺は見てるから。
0065デフォルトの名無しさん
2007/11/23(金) 14:23:540066デフォルトの名無しさん
2007/11/23(金) 14:25:380067デフォルトの名無しさん
2007/11/23(金) 14:26:080068デフォルトの名無しさん
2007/11/23(金) 14:29:11MFCはライブラリで、CLIは実行環境ジャン。
0069デフォルトの名無しさん
2007/11/23(金) 14:48:170070デフォルトの名無しさん
2007/11/23(金) 14:48:25並外れて悪い頭を持って生まれてきた人には厳しいかもね。
0071デフォルトの名無しさん
2007/11/23(金) 15:17:290072デフォルトの名無しさん
2007/11/23(金) 15:23:360073デフォルトの名無しさん
2007/11/23(金) 15:35:05「あ、ヤバ!」と思った時、どれだけ自然に「さっきから竿を構えていた」かのように振る舞えるかがコツ
0074デフォルトの名無しさん
2007/11/24(土) 03:07:55後から釣りでしたって言った奴の負けだと思いますぅ〜♪
0075デフォルトの名無しさん
2007/11/24(土) 04:46:35わざわざ同じレベルに堕ちる必要はあるまいて
0076デフォルトの名無しさん
2007/11/24(土) 15:52:12おまえもな
0077デフォルトの名無しさん
2007/11/25(日) 17:16:34unit nYakuso = 7; //薬草1個の値段
unit nFukuro[10]; //持ち物を入れる袋
wstring strIppai(L"持ち物が\nいっぱいです><") ;
という文字列を以下のように変換するプログラムを30秒以内で記述できるか?
unit、nYakuso、=、7、;、unit、nFukuro、[、10、]、;、wstring、strIppai、
(、L、"、持ち物が\nいっぱいです><、"、)、;
0078デフォルトの名無しさん
2007/11/25(日) 17:39:140079デフォルトの名無しさん
2007/11/25(日) 17:43:330080デフォルトの名無しさん
2007/11/25(日) 17:55:10//以下の文字列を無視するのと
クォーテーション文字で囲まれた文字列内で
エスケープ文字を無視するのは標準Boostでは無理。
0081デフォルトの名無しさん
2007/11/25(日) 18:02:1030秒以内は無理そうだが
xpressiveは知らない
0082デフォルトの名無しさん
2007/11/25(日) 18:26:590083デフォルトの名無しさん
2007/11/25(日) 19:04:27だな
0084デフォルトの名無しさん
2007/11/26(月) 05:43:590085デフォルトの名無しさん
2007/11/26(月) 14:51:55swigの方がいいと思った
swigと比べたboost.pythonの利点って何?
0086デフォルトの名無しさん
2007/11/26(月) 17:25:040087デフォルトの名無しさん
2007/11/26(月) 18:27:45double x = 25;
cout << bind(sqrt, _1)(x) << endl;
このコードは、VC++2005では実行できるのですが、
g++ 4.0.0 (boost 1.34) だと以下のように明示的に
キャストしないとコンパイルできません。
cout << bind(static_cast<double (*)double>(sqrt), _1)(x) << endl;
これはg++用boostライブラリ固有の制限なんでしょうか?
0088デフォルトの名無しさん
2007/11/26(月) 18:44:44bindがオーバーロード解決に失敗するときは戻り値の型をテンプレート引数で明示的に指定してやればいいらしいです
0089デフォルトの名無しさん
2007/11/26(月) 18:48:020090デフォルトの名無しさん
2007/11/26(月) 18:49:07もしかしたら、VCにはcmathのfloat版関数の宣言がないのではないか?
0091デフォルトの名無しさん
2007/11/26(月) 19:30:10>>89
>>90
レスありがとうございます。
やはり複数の関数定義があるからなんでしょうかね。
実行はできるので、実装を受け入れることにします。
0092デフォルトの名無しさん
2007/11/26(月) 22:39:40template<typename _Tp> inline _Tp mysqrt(_Tp __x) { return sqrt(__x); }
なら、
cout << bind(mysqrt<double>, _1)(x) << endl;
できるけど。doubleで特殊化されてようとされてなかろうと。
0093デフォルトの名無しさん
2007/11/27(火) 01:46:48指定してるわけだからdouble sqrt(double)を特定できる
はずなんですけどね。コンパイルエラーにもambiguousとは出ていない
ようですし。
0094デフォルトの名無しさん
2007/11/28(水) 23:07:10double を指定しているのは戻り値の型であって、sqrt() の引数の型には寄与してないから特定できないんじゃない?
x の型は bind の解釈には無関係だよね?
0095デフォルトの名無しさん
2007/11/29(木) 00:58:51_1 は確か引数じゃないかな?戻り値ではないと思ったけど。
0096デフォルトの名無しさん
2007/11/29(木) 03:42:26using namespace boost::xpressive;
sregex tok =
as_xpr("hoge") >> (("!">>~before(eos)) | ("!!">>~before(eos)) | eos);
smatch m;
const std::string addr("hoge!hoge!!hoge!");
std::string::const_iterator it = addr.begin(), end = addr.end();
for( ; regex_search(it, end, m, tok, regex_constants::match_continuous)
; it = m[0].second )
{
std::cout << m[0] << std::endl;
}
このコードで
hoge!
hoge!!
hoge!
と出力されると思ったのですが
hoge!
hoge!
で終わってしまいます
009796
2007/11/29(木) 03:46:41検証に使った文字列は
const std::string addr("hoge!hoge!!hoge");
です
0098デフォルトの名無しさん
2007/11/29(木) 10:35:19as_xpr("hoge") >> (("!!">>~before(eos)) | ("!">>~before(eos)) | eos);
だろ。普通は
0099デフォルトの名無しさん
2007/11/29(木) 12:35:47compose_f_gx_hx とかって Visual C++ 2005 の
STL には入ってないの? ファンクタの合成って
boost::compose か何かが必須?
なんか俺勘違いしてるのかな。
010099
2007/11/29(木) 12:38:120101デフォルトの名無しさん
2007/11/29(木) 12:40:01bind(&f, bind(&g, _1))
な風に
でも>>13のように呼び出し規約が__stdcallの関数については使えないようだ
mlには使えるって書いてあるんだけどねぇ・・・誰か使えた人いないのかなぁ
010299
2007/11/29(木) 12:48:31boost::lambda::bind
#include <boost/bind.hpp>
boost::bind
どちらを使うべきなのでしょうか?
0103デフォルトの名無しさん
2007/11/29(木) 12:53:19__stdcallのものにでも使えるという点でboost::bindかな・・・
010499
2007/11/29(木) 12:56:54ところで、ファンクタの合成って標準のSTLには入ってないよね?
SGIのだけに入ってるとか、そういうことあるのかな?
少なくとも Visual C++ だと compose_f_gx_hx などはありませんでした。
boost::bind のほうがもっと柔軟だから compose_f_gx_hx いらないけど。
0105デフォルトの名無しさん
2007/11/29(木) 22:56:21標準化される前の SGI STL には compose1, compose2 があった。っていうか今もある。
現行の標準規格には入っていない。
compose_f_gx_hx は Boost.Compose での名前。
C++0x では Bind が標準に入るので今後は bind 使えになると思われ。
0106デフォルトの名無しさん
2007/11/30(金) 02:01:44http://www.aristeia.com/EC3E/TR1_info_frames.html
266 tr1::bind Function Object Binders n1455
010799
2007/11/30(金) 15:00:08boost::bind も併用しているんだけど、
そうすると ambiguous って言われる?
0108デフォルトの名無しさん
2007/11/30(金) 15:12:46010999
2007/11/30(金) 15:15:54無名名前空間の下に見えてる _1 はどっから来たものか・・・
#include <boost/bind.hpp> だろうなぁ。
::_1 って指定してやらないとダメみたい。
0110デフォルトの名無しさん
2007/12/02(日) 18:50:17果敢に IntelliSense が攻めてくれるね.
だけどまた boost をリビルドしなきゃならんのか…
今からやろうと思うんだけど, svn trunk から
とってきたのを直接ビルドしてみようと思う.無謀?
0111110
2007/12/02(日) 18:58:00#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1500)
# define BOOST_LIB_TOOLSET "vc90"
ってことは,すでに trunk では対応しているのか.
退行テストも通ってるのかな.しかし svn から export
して持ってきたものをどうやってビルドするのかわからん・・
0112110
2007/12/02(日) 19:24:56あっさり toolset 名として vc9 が検出されたみたい。
つーか、bjam をビルドしようとして build_dist.bat を
実行したらすでに本体のビルドまで勝手にやってくれているのだが・・・
以前ビルドしたときとは大違いに楽になってる気がする。
0113110のチラシの裏
2007/12/02(日) 19:31:29bjam.exe --build-dir=builddir --toolset=msvc-vc9express stage
やってます。Express Edition は固有の toolset 名を持ってるのか?
もしかして 64 ビット版のライブラリをビルドするか否かを決定してる?
0114110のチラシの裏
2007/12/02(日) 19:37:30使おうと思ったら expat や icu4c も vc9 でビルドしなおさなきゃ
らんのかなぁ。
って、記憶をたどってみると、両ライブラリとも単独で使った
ことがあるんだけど、vc7 と vc8 で同じバイナリをリンクしてた
きがするのだが・・・ boost はなんでリビルドしなきゃならないの?
とはいえ、 vc8 用にビルドした boost を vc9 でビルドしてる
アプリケーションからリンクするとリンカが怒るので仕方ない。
0115110のチラシの裏
2007/12/02(日) 19:59:26failed 2 って出たけど、どこで失敗したのかわからん。
bjam はログを残してくれないのか?
0116デフォルトの名無しさん
2007/12/02(日) 20:10:380117110のチラシの裏
2007/12/02(日) 20:17:39bash ばっかりだからしらんかった。
0118110
2007/12/03(月) 00:12:14libboost_graph-vc-mt-gd-1_35.lib
みたいにライブラリファイルの名前中のツールセット名が
-vc- になるのは、なぜ〜〜〜?
自分で変更するのタルい。
0119デフォルトの名無しさん
2007/12/03(月) 00:34:06まぁperlかPowerShell使えばリネームなんて簡単だろ
0120デフォルトの名無しさん
2007/12/03(月) 00:34:49原因を調べるもの面倒だったからファイル名を一括置換した
なんでそうなるんだろうなあ
0121110
2007/12/03(月) 05:34:34まぁリネーム自体は簡単なんだろうけど,そもそも
ツールセット名ってどっかで正規化されていないのかと.
bjam で指定するツールセット名も msvc だけでも
受け入れられるし, msvc-vc8 や msvc-vc80 なども
変に柔軟に受け入れられるけど,オートリンクでは vc80
とか指定してくるし…
「自分でつけた名前だろ!自分でオートリンクできずにどうするよ!」
って突っ込みを入れたくなった.
0122110
2007/12/03(月) 09:08:54ちゃんと vc80 と vc90 って文字がライブラリのファイル名に含まれます。
msvc / msvc-vc80 / msvc-vc90 も受け入れられるけど、
そうするとライブラリのファイル名におけるツールセットの部分が
vc になってしまってオートリンクなどで都合が悪いです。
0123110自分用メモ
2007/12/03(月) 09:41:13--toolset=msvc-8.0 stage
V:\boost-vc9>bjam --builddir=builddir --build-type=complete
--toolset=msvc-9.0 stage
0124デフォルトの名無しさん
2007/12/05(水) 12:27:20typedef StrongTypedef<int> MyIntType;
みたいに使いたい.自分で勝手に上のような使い方をしてるけど,
標準があるならそちらに従いたい.
あと,BOOST_STRONG_TYPEDEF って totally_ordered しか
持っていないけど,もっと一般に additive とかそういうのを
持っているバージョンもあればいいと思う.
さらに serialization にも対応してたらいいなぁ.
#全部「おまえがやれ,自由に」と言われそうだけど
#標準が決まってるほうが可読性が上がると思う.
0125デフォルトの名無しさん
2007/12/05(水) 14:12:06> もっと一般に additive とかそういうのを
> 持っているバージョンもあればいいと思う.
具体的にはどういう型の時なの? additiveが有効なのは。
この辺は、 class NAME##_archetype { ってマクロでやってるから、
テンプレートに文字列処理がないとテンプレートだけでやるのは厳しいね。
0126デフォルトの名無しさん
2007/12/05(水) 21:17:01warning C4996: 'std::XXX': Function call with parameters that may be unsafeとうるさいので
bjam --toolset=msvc-9.0express "--cxxflags=/wd4996" stage
としてみたのですがガンガンwarning C4996が報告されてしまいます
できればboost/config/user.hppとかをいじくらずbjamのオプションとかで渡したいです
0127デフォルトの名無しさん
2007/12/05(水) 21:20:50わかんなかったら環境変数CLを使えばよいんじゃないかな。
0128126
2007/12/05(水) 21:45:28ありがとうございます
0129デフォルトの名無しさん
2007/12/07(金) 07:57:36safe bool idiom にしようとおもって scoped_ptr を
継承した my_scoped_ptr を作ったら conversion が
ambiguous だって怒られた.
0130デフォルトの名無しさん
2007/12/07(金) 10:07:16B に非侵入型の serialize が定義されている場合には
A の serialize も非侵入型にしなくてはならないのでしょうか?
0131130
2007/12/07(金) 11:04:41boost::serialization 関係でもうひとつですが,
BOOST_STRONG_TYPEDF で定義した型はそのまま
シリアライズできないのでしょうか?
自分で非侵入型の serialize を定義するべきですか?
http://boost.org/libs/serialization/doc/wrappers.html
ここを見ると BOSOT_STRONG_TYPEDEF(T,D) で作った型 D
をシリアライズする際には T に自動的に変換されるので
そのままでいい、ということのようですし、実際
BOOST_STRONG_TYPEDEF マクロの定義を見ても
そこで定義されている構造体には確かに変換が用意されているようなのですが
0132デフォルトの名無しさん
2007/12/08(土) 12:44:00tFoo でなく tWFoo と展開されたのだが・・・
t が他の文字ならおkで、また別のプロジェクトだと tFoo と正しく展開された。
ずっと解決できないので誰かご教授ください m(_ _)m
0133デフォルトの名無しさん
2007/12/08(土) 13:06:20tっていうマクロかtFooっていうマクロが定義されてるとか?
0134デフォルトの名無しさん
2007/12/08(土) 21:19:070135デフォルトの名無しさん
2007/12/08(土) 21:39:510136デフォルトの名無しさん
2007/12/08(土) 21:43:20ありがとう
0137132
2007/12/09(日) 05:28:54左手のトークンの末尾が 't' だと駄目なようです。
BOOST_PP_CAT(Get, Hoge) とか BOOST_PP_CAT(Object, Piyo) とか。
0138デフォルトの名無しさん
2007/12/09(日) 08:20:28それはもしかしてプリプロセッサのバグじゃないか?
使ってるプリプロセッサ何?
0139132
2007/12/09(日) 08:59:35VC++ Express 2005 です。
新規プロジェクト作り直して丸ごと移したら正常にコンパイル出来ました・・・
何か気持ち悪いけど、どこかプロジェクトの設定が壊れてたのだと思います。
お騒がせしました。
0140132
2007/12/09(日) 09:49:060141デフォルトの名無しさん
2007/12/09(日) 10:28:26stdとtr1だけにしとけ
0142デフォルトの名無しさん
2007/12/09(日) 10:37:55VC++7.1 は対応度高かったと思うけど 2005 だともしかして劣化してる?
2008 beta はどうなんだろ。
0143デフォルトの名無しさん
2007/12/09(日) 11:51:470144デフォルトの名無しさん
2007/12/09(日) 12:04:452008はもう正式版出ているw
0145デフォルトの名無しさん
2007/12/09(日) 12:56:18何の問題もないが.
時々 IntelliSense が黙るだけで.
VC9 ではかなり賢くなってる.
それでも boost::bind つかいまくりで
ファンクタ合成しまくりとかで黙ることもある.
0146デフォルトの名無しさん
2007/12/09(日) 14:09:37SP1当てたら大丈夫になったけどさ。
0147デフォルトの名無しさん
2007/12/10(月) 14:24:36delete 以外の解放処理を行わせる方法はありますでしょうか。
extern IMalloc* allocator;
{
boost::shared_ptr<ITEMIDLIST> pidl((ITEMIDLIST*)allocator->Alloc(10));
}
//ここでallocator->Freeを呼ばせたい
0148デフォルトの名無しさん
2007/12/10(月) 14:36:59デリータを指定できるコンストラクタがあるよ。
template <typename U, typename D>
shared_ptr( U* ptr, D deleter);
0149147
2007/12/10(月) 15:08:43解決しますた。
クラス全体のテンプレート引数 (1個しか無い) にしか目がいってなくて、
コンストラクタのところを見てなかったです。orz
0150デフォルトの名無しさん
2007/12/11(火) 00:49:05焦っている時にありがちな罠だから落ち着いて資料を読めばいいと思うよ。(自分への叱咤でもありorz)
0151デフォルトの名無しさん
2007/12/11(火) 02:45:26いませんか?
VC++8 + STLport-5.1.4 に boost-1.34.1 を入れようとして、
Boostビルドまでは何とかこぎ着けたのですが(コンパイルエラーなしで)、
いざ、boostを使ったプログラムをメイクしようとすると、
error LNK2019: 未解決の外部シンボル
"bool __cdecl boost::filesystem::native(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &)"
(?native@filesystem@boost@@YA_NABV?$basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@@Z)
が関数 _main で参照されました。
なんていうリンクエラーが出てしまいます。
0152デフォルトの名無しさん
2007/12/11(火) 03:53:330153デフォルトの名無しさん
2007/12/11(火) 08:58:58思ってるんだけど、プリプロセッサって
文字列の比較できないよね?
環境の判定によいアイディアあったら教えてプリーズ。
0154151
2007/12/11(火) 09:54:39[ツール]→[オプション]→[プロジェクトおよびソリューション]→[VC++ディレクトリ]で、
ライブラリファイルのディレクトリとして、
C:\Boost\lib
を追加済みです。
さらに、プロジェクトのプロパティページで、
[構成プロパティ]→[リンカ]→[入力]→[追加の依存ファイル]で、
boost_filesystem-vc80-mt-gdp-1_34_1.lib
を追加してみたのですが、ダメでした。(:_;)
0155デフォルトの名無しさん
2007/12/11(火) 11:39:13普通は「追加の依存ファイル」なんて設定しなくても
オートリンクで適切なライブラリをリンクしてくれるはずなんだけどなぁ。
って STLPort 使ってない俺が言っても意味ないよね。
0156151
2007/12/11(火) 14:38:29のはずなんだけど・・・。
v1のときは、普通にリンクできていたので。
なんというv2。
何も情報を出さないのはアレなんで、
ビルドフロー(失敗している奴)をここにまとめておきます。
Visual C++ 8.0 with SP1
STLport-5.1.4
→ C:\STLport-5.1.4 として解凍。
boost-1.34.1
→ C:\boost-1_34_1 として解凍。
OS: Microsoft Windows SP2
CPU: Intel
0157151
2007/12/11(火) 14:39:01stlport/stl/config/user_config.h の
#define _STLP_USE_BOOST_SUPPORT 1
を有効にする。
> "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
を実行。
環境変数に、
STLP_BUILD_BOOST_PATH=C:\boost_1_34_1
を追加。
> cd build\lib
> configure -c msvc8 --use-boost=C:\boost_1_34_1
> nmake /fmsvc.mak install
でSTLPortをビルド。
0158151
2007/12/11(火) 14:41:47stlport.jamファイルの不具合を修正する。
http://lists.boost.org/boost-build/2007/08/17123.php参照
user-config.jamファイルを編集する。
using msvc : 8.0 ;
using stlport : 5.1.4 : C:/STLport-5.1.4 ;
環境変数を設定する。vsvars32.bat
@set STLPORT_PATH=C:\STLport-5.1.4
@set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\S
TLport-5.1.4\stlport;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\
Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program File
s\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\STLport-
5.1.4\lib;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\M
icrosoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual
Studio 8\SDK\v2.0\lib;%LIB%
(実際はそれぞれ1行です)
vsvars32-stlport.batにリネームして保存。
> "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32-stlport.bat"
ビルド。
> bjam --toolset=msvc stdlib=stlport --without-python install > build.log
build.logを見たら、
...updated 5631 targets...
でビルド成功。
0159151
2007/12/11(火) 14:43:59stlport、boostともインクルード・ライブラリそれぞれのディレクトリ
を追加。
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
using namespace boost::filesystem;
boost::filesystem::path outputFilePath( "C:\\hogehoge.txt", native );
boost::filesystem::fstream outputFile( outputFilePath );
//string s;
//double d;
//s = "53.0";
//d = boost::lexical_cast< double >( s );
//cout << "Hello world" << endl;
//outputFile << "Hello world!" << endl;
return 0;
}
でビルド。
すると、>>151のようなエラー。
チラシの裏みたいでごめん。
0160151
2007/12/11(火) 14:46:34ビルドの要らないboostライブラリは普通に動きます。lexical_castとか。
0161デフォルトの名無しさん
2007/12/11(火) 22:52:53俺の一週間の苦労はなんだったんだ……
お前ら、先に教えてくれよ……
λ....トボトボ
0162デフォルトの名無しさん
2007/12/12(水) 01:01:52どんまい。。。
0163161
2007/12/12(水) 08:08:55Visual C++ 2008 でも IntelliSense が死ぬね.
でも補完機能は IntelliSense がぴか一だと思うんだけど,
それでも追い切れないとは…
0164デフォルトの名無しさん
2007/12/12(水) 08:14:292005Pro持ってるけどどうしようかなあ…
0165161
2007/12/12(水) 08:46:11俺も自前で頑張って買った 2005 Professional 使ってたけど,
今は 2008 Express Edition 使ってます.
VC++ スレでは IntelliSense 糞とかいう書き込みを見かけるけど
マクロとテンプレートでの変態プレイにここまで対応してるのは
2005 レベルでもすげぇとおもう.
単に自分が Eclipse の設定をちゃんとしてないからかもしれません.
標準ライブラリまで指定してフルインデックスすれば
Eclipse の CDT でもちゃんと型追っかけてくれるんでしょうかね.
0166デフォルトの名無しさん
2007/12/12(水) 11:03:02けど使い慣れたのを使うのが一番だと思います。
ちとスレ違いだしね。
0167デフォルトの名無しさん
2007/12/12(水) 15:35:230168デフォルトの名無しさん
2007/12/12(水) 16:22:350169デフォルトの名無しさん
2007/12/12(水) 16:32:160170デフォルトの名無しさん
2007/12/12(水) 19:51:46行き詰まりました。関数内でtuple要素全てにアクセスする方法はありますか?
可変個引数が可能ならばtupleじゃなくても構いません。ちなみに、引数の型はすべて一緒です。
template<typename T>
void multi_args(const T& arg){
for(int i = 0 ;i< tuples::length<T>::value ;++i){
//tuple要素すべてにアクセスしたい
//arg.get<i>() は当然だめ
}
}
int main(){
multi_args( make_tuple(1,2,3) );
return 0;
}
0171デフォルトの名無しさん
2007/12/12(水) 20:23:21素朴な疑問なんだが、std::vectorじゃいけない特別な理由でも?
# まぁ、vectorだと即値を列挙することはできないわけだが。
0172デフォルトの名無しさん
2007/12/12(水) 23:19:47boost::fusionならfor_eachができるんだが
ループ内で全要素にアクセスってのは無理だな。
0173デフォルトの名無しさん
2007/12/13(木) 08:02:530174デフォルトの名無しさん
2007/12/13(木) 14:14:220175デフォルトの名無しさん
2007/12/13(木) 20:19:04boost::assign::list_of
0176デフォルトの名無しさん
2007/12/13(木) 23:31:39tuple って単に car が get_head で、cdr が get_tail なので、
tuple_for_each(t, f) { f(t.get_head()); tuple_for_each(t.get_tail(), f); }
tuple_for_each(null_type, f) {}
とかを作ってしまえばいい
で、なぜか iterator/zip_iterator.hpp の detail 内にあったりするわけだが
0177デフォルトの名無しさん
2007/12/14(金) 07:11:53boost::multi_index_container::tag
を使うと Visual C++ 2008 ではエラーになる.
C1001 なので原因がよくわからない.
0178デフォルトの名無しさん
2007/12/14(金) 10:41:48#include <boost/bind.hpp>
#include <boost/lambda/lambda.hpp>
using namespace boost;
using namespace boost::lambda;
とすると、_1 を使ったときコンパイルできなくなる。
boost::lambda::_1 なんてやるとコンパイルできる。
プレースホルダー _1 ってbind.hppでもlambda.hppでも
重複して定義されてる?
0179デフォルトの名無しさん
2007/12/14(金) 10:46:27結局 boost::bind だけしか使わないようにした。
って、それじゃ根本的な解決になってないか。
0180デフォルトの名無しさん
2007/12/14(金) 12:10:44その通り
usingの代わりにnamespaceの短縮名を使うと良いと思う
0181デフォルトの名無しさん
2007/12/14(金) 12:32:47ありがとう。
で、namespaceの短縮名とは何ですか?
boost::lambda::_1のように常に明示的に
指定するということですか?
0182デフォルトの名無しさん
2007/12/14(金) 12:35:490183デフォルトの名無しさん
2007/12/14(金) 13:33:53ありがとう。
別名を与えられることは知りませんでした。
これで対応していきます。
0184デフォルトの名無しさん
2007/12/14(金) 15:48:19書く場合、どのように書いたら良いんでしょうか?
#bjam -sTOOLS=mingw "-sBUILD=release <runtime-link>static <threading>multi <native-wchar_t>on" --prefix=/c/msys/1.0/local install
0185デフォルトの名無しさん
2007/12/14(金) 17:59:08なんてのもでてくるのかね?
0186デフォルトの名無しさん
2007/12/14(金) 19:14:30string str1 = "A123A AaaaA A3b3A A9A";
if( regex_search( str1, m, r ) )
{
...
}
で、
"123"
"aaa"
"3b3"
"9"
という文字列を取り出すにはどういう記述をすればいいでしょうか?
m[2].str() とか書いても、aaaとか取得できないんです。
sregexでなくxpressive利用でもいいです。
0187デフォルトの名無しさん
2007/12/14(金) 19:35:19Effects: Returns a starting iterator that enumerates over all the marked sub-expression matches stored in *this.
const_iterator end()const;
Effects: Returns a terminating iterator that enumerates over all the marked sub-expression matches stored in *this.
0188デフォルトの名無しさん
2007/12/14(金) 19:35:190189デフォルトの名無しさん
2007/12/16(日) 00:40:01最小マッチ?を指定するとダイアログ出て落ちるんです
0190デフォルトの名無しさん
2007/12/16(日) 01:46:330191デフォルトの名無しさん
2007/12/16(日) 20:10:54boost::serialization::base_object を経由せずに
(Base&) で型変換してシリアライズするのはダメ?
一応読み込むこともできているようなんだけど.
ちなみに (Base) で型変換するとスライシングのせいか
読み込んだ時に正しく読み込むことができません.
0192デフォルトの名無しさん
2007/12/16(日) 20:37:23This might seem to work but may fail to invoke code necessary
for proper serialization.
マニュアルにはこう書かれているけど,かといって private で
継承した基底クラスをシリアライズするためには >>191
みたいにしないとだめだよねぇ?
0193デフォルトの名無しさん
2007/12/17(月) 10:40:42ここには基底クラス A の shared_ptr に派生クラス B のポインタを
持たせてシリアライズしています。なお、 A は仮想デストラクタを
持っています。このとき
boost::archive::text_oarchive oa(ofs);
oa.register_type(static_cast<B *>(NULL));
oa.register_type(
static_cast<
boost::detail::sp_counted_base_impl<
B *, boost::checked_deleter<B>
> *
のように register_type しなければならないようなのですが、
BOOST_CLASS_EXPORT マクロのようなもので登録できない
ものでしょうか? archive を生成してから毎回登録するのは
忘れてしまいがちなので。
0194193
2007/12/17(月) 11:14:31http://archives.free.net.ph/message/20071129.235833.ba9e02a9.en.html
でまさしく同じ問題についてQ&Aがあるんだけど、
結局上の URL の例をみろってことだけなんだよなぁ。
0195193
2007/12/17(月) 11:24:03どうやらこれだけでいいみたい。
でも文字化けしてしまった…
#そのうち他言語対応しておきます。
0196193
2007/12/17(月) 11:25:44しかも sage てなかった orz-----3
0197デフォルトの名無しさん
2007/12/17(月) 16:56:24asio とか filesystem とかかぶってるみたいだけど.
0198デフォルトの名無しさん
2007/12/18(火) 13:34:060199デフォルトの名無しさん
2007/12/18(火) 18:06:51public:
virtual void mf();
};
class D : public B
{
public:
void mf();
};
のように継承関係にあるクラスについて
shared_ptrはポリモルフィックに動作しますか?
つまり、
shared_ptr<B> bp(new D);
bp->mf() で D::mf() が呼ばれることはboostの仕様として
保障されてますか?
0200デフォルトの名無しさん
2007/12/18(火) 18:09:440201デフォルトの名無しさん
2007/12/18(火) 18:12:420202デフォルトの名無しさん
2007/12/21(金) 00:25:47#include <iostream>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/if.hpp>
#include <vector>
#include <algorithm>
using namespace std;
namespace bl = boost::lambda;
int main()
{
unsigned int a[] = {0, 1, 1, 0, 1, 0, 0, 1};
for_each(a, a + sizeof(a)/sizeof(a[0]),
bl::if_(bl::_1 % 2 == 0) [cout << "偶数\n"].else_[ cout << "奇数\n"] );
}
これをコンパイルすると
private メンバ (クラス 'std::basic_ios<_Elem,_Traits>'
で宣言されている) にアクセスできません。
とエラーが出てコンパイルできません。原因は何でしょうか?
VC++ 2008 コンソールアプリケーションです。
0203202
2007/12/21(金) 00:44:290204デフォルトの名無しさん
2007/12/21(金) 00:54:370205デフォルトの名無しさん
2007/12/21(金) 12:42:34みたいなファンクタを生成するとき,ClassA に MethodB
が複数 (void MethodB(int) と void MethodB(double)とか)
定義されていたら,どちらのメンバ関数ポインタになるんでしょうか?
0206デフォルトの名無しさん
2007/12/21(金) 12:57:01ビルド環境
Visual Studio 2005 Professional SP1 日本語版
Visual C++ 2008 Express Edition 英語版
vc8 と vc9 でビルドするスクリプト
http://svn.windy.cx/websvn/listing.php?repname=Building.boost-trunk&path=%2F&sc=0
trunk の Windows 用インストーラつきバイナリパッケージ
C:\Program Files\boost\boost_1.35_20071202 以下に展開されます
アンインストールはディレクトリごと削除するだけ
ヘッダ(共通)
http://svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-header.exe
vc8用スタティック
http://svn.windy.cx/pub/boost_1_35_20071202-vc8.exe
vc8用DLL
http://svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-vc8-dll.exe
vc9用スタティック
http://svn.windy.cx/pub/boost_1_35_20071202-vc9.exe
vc9用DLL
http://svn.windy.cx/index.php?plugin=attach&refer=SVN.WINDY.CX&openfile=boost_1_35_20071202-vc9-dll.exe
自分はスタティックライブラリしか使わないのでDLL版の動作は未検証.
GMP, MPFR, MPFR++ などのバイナリパッケージも.
http://svn.windy.cx/
0207205
2007/12/21(金) 13:06:06拡張子を cab に変えればたいていのアーカイバで開けます.
あと,ランタイムに関してですが /MD と /MDd です.
0208206
2007/12/21(金) 13:06:560209デフォルトの名無しさん
2007/12/21(金) 18:17:17static_cast<void (ClassA::*)(int)>(&ClassA::MethodB)
みたいに明示的にキャストしないと通らないと思った。
0210デフォルトの名無しさん
2007/12/21(金) 19:11:54∩
( ⌒) ∩_ _
/,. ノ i .,,E)
./ /" / /" .
_n グッジョブ!! ./ /_、_ / ノ'
( l _、_ / / ,_ノ` )/ /_、_ グッジョブ!!
\ \ ( <_,` )( /( ,_ノ` ) n
ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E)
/ / \ ヽフ / ヽ ヽ_//
VC9用をいただきました
0212デフォルトの名無しさん
2007/12/23(日) 16:13:540213デフォルトの名無しさん
2007/12/23(日) 17:06:19char*やイテレータを取るバージョンがあるはずだが
0214デフォルトの名無しさん
2007/12/23(日) 18:15:20以前のバージョンということですか?
できればxpressiveで書きたいので、最近のバージョンを使いたいのですが
それでは無理ってことでしょうか
0215デフォルトの名無しさん
2007/12/23(日) 18:34:45と言うかリファレンス見たら?
0216デフォルトの名無しさん
2007/12/23(日) 22:54:20つ 特殊化
0217デフォルトの名無しさん
2007/12/23(日) 23:22:280218デフォルトの名無しさん
2007/12/23(日) 23:55:17Xpressiveでは、イテレータの型をテンプレート引数で指定する。
http://boost.org/doc/html/xpressive/reference.html#header.boost.xpressive.xpressive_fwd.hpp
0219デフォルトの名無しさん
2007/12/24(月) 08:12:02v.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
と言われてコンパイルできません.
0220219
2007/12/24(月) 08:54:23コンパイルが通らないのでしょうか?
http://pastebin.windy.cx/?page=view&id=1198454028
0221デフォルトの名無しさん
2007/12/24(月) 09:25:58std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout));
0222デフォルトの名無しさん
2007/12/24(月) 09:38:51g++だと<unresolved overloaded function type>と言われたのでstatic_castしたら通った。
std::for_each(v.begin(), v.end(), boost::bind(
static_cast<A &(A::*)(int)>(&A::operator =),
&a,
_1));
0223デフォルトの名無しさん
2007/12/24(月) 09:43:23intを出力するoperator <<は、cout (std::basic_ostream)のメンバ関数だから、
そのコードでは、正しいoperator <<へ辿り着けない。
もっとも、それ以前の問題でコンパイルエラーになっているようだが。
今回は221のいうとおりostream_iteratorもあるし、
その他演算子一般の場合は、bind使えなくてもlambdaがある。
0224219
2007/12/24(月) 09:48:19いや,もちろんそれでやりたいこととしてはOKなんですが,
一般的な演算子を指定できれば応用範囲も広がるかなと思って.
>>222
VC9 だとテンプレートを検索しまくって
「あれでもない,これでもない」と C2780 を連発した揚句,
時々 ambiguous だというエラーも出るんですよ.
なるほど, g++ でもそのままでは通らなくて,
static_cast すれば通るんですね. operator() だと問題なくて
operator= だと問題になる理由がわからないですが.
既定の代入演算子が別途用意されてしまうからかなぁ.
自前で = をオーバーロードした時って既定の = は
定義されないんでしたっけ?
でも独自にコンストラクタを作ってもコピーコンストラクタは
勝手に作られていたような気がする.
0225219
2007/12/24(月) 09:51:05なるほど,それで operator<< が見つからないと怒られてるんですね.
たぶんグローバル名前空間の operator<< を探しに行って「無い」
と怒ってるように思います.
自分はてっきりストリームの << 演算子はグローバル名前空間に
定義されていて必要なクラスに friend 指定されているのだと
思っていました.
0226デフォルトの名無しさん
2007/12/24(月) 11:35:14boost::bindはlambdaと違って一旦メンバーポインタにするから。
だからoverloadされてるとまずい。
0227デフォルトの名無しさん
2007/12/24(月) 13:22:18以下抜粋
bool A::foo(int) const;
A a;
vector<int> ints;
...
find_if(ints.begin(), ints.end(), bind(&A::foo, a, _1));
find_if(ints.begin(), ints.end(), bind(&A::foo, &a, _1));
---------------------------------------------------------
この形式でboost::lambda:bindを使う場合、非constメンバー関数を
指定するとコンパイルが失敗するのですが、constメンバー
関数しか渡せないという仕様なのでしょうか?
試したのはVC++ 2008です。以下がエラー内容です。
error C2665: 'boost::lambda::function_adaptor<Func>::apply' : 2
オーバーロードのどれも、すべての引数の型を変換できませんでした
0228219
2007/12/24(月) 14:12:29find_if(ints.begin(), ints.end(), bind(&A::foo, &a, _1));
で,a が const じゃないからじゃね?
間違ってたらごめんne
0229デフォルトの名無しさん
2007/12/24(月) 14:12:530230デフォルトの名無しさん
2007/12/24(月) 16:45:33find_if(ints.begin(), ints.end(), bind(&A::foo, a, _1));
参照渡しのこちらの形式で制限があることが記載されていました。
aはconstオブジェクトとしてファンクタに保持されるらしいので
constメンバー関数しか呼べないみたいです。回避策として
ref(a)を渡せばよいらしく、これでうまくいきました。
ポインタ形式のほうはポインタのコピーなので問題ありません。
find_if(ints.begin(), ints.end(), bind(&A::foo, &a, _1));
0231デフォルトの名無しさん
2007/12/24(月) 21:32:02T1 をキーとして扱ってくれる map ってないものでしょうか?
std::for_each で処理する時,std::pair<Key, Value> の
インスタンスが順にファンクタに渡されますが,
そうではなくて Value だけを次々と渡してほしいので,
boost::tuples::get<1> などで値が取り出せる tuples が
便利なのですが・・・
boost::multi_index がそれに該当するのでしょうか?
0232デフォルトの名無しさん
2007/12/24(月) 21:35:570233デフォルトの名無しさん
2007/12/25(火) 19:03:30template <typename Args>
struct sig
{
//typedef ??? type;
};
int operator()(int x) const;
void operator()(int x, int y) const;
};
lambda式で使うファンクタの定義で、上のように引数の数が違い、
かつ戻り値の型も違う複数の関数呼び出し演算子を定義したい場合、
sigでどのようにtypeを表現したらいいのでしょうか?
0234デフォルトの名無しさん
2007/12/25(火) 19:08:48struct my_device {
typedef char char_type;
struct category : bidirectional_device_tag, closable_tag {};
std::streamsize read( char_type *s, std::streamsize n ) {}
std::streamsize write( const char_type *s, std::streamsize n ) {}
void close( std::ios::openmode which = std::ios::in | std::ios::out ) {}
};
int main() {
my_device dev;
stream<my_device> ss( dev );
ss.get();
char ch;
ss >> ch;
}
このとき、get()してるはずなのに、my_device::read()の引数nの値が
4096になっているのはなぜ??n=1で呼ばれて欲しいんだが。
operator >> を使った場合も同じくn=4096。
4096ってのは、バッファのサイズか何かだとは思うんだが・・・。
ソース見てもテンプレート使いまくりで、どこで呼び出してるのかさっぱりわからん。。。
誰かわかる人いる?
ちなみに環境はWinXP + VC8です。
0235デフォルトの名無しさん
2007/12/25(火) 19:31:39see also
ttp://www.boost.org/libs/iostreams/doc/index.html
0236デフォルトの名無しさん
2007/12/25(火) 19:45:19回答ありがとうございます。
バッファのサイズを1にするだけだと、上のコードは通りますが、
ss.read( buf, sizeof( buf ) );
みたいな使い方をするときに効率が悪い気がするんですが。
ほかにいい方法ありませんか?
0237デフォルトの名無しさん
2007/12/25(火) 20:04:33Argsを調べて適当にディスパッチしてやれば良い。例えば引数の数で分けるなら、
template <typename Args>
struct sig
{
typedef typename boost::mpl::if_c<
boost::tuples::length<Args>::value == 2, /* 関数オブジェクトと引数一つで合計2 */
int,
void>::type type;
};
試してないけど、typename Args::inheritedでconsリストを得て、
それに対して部分特殊化でパターンマッチすることもできるはず。
0238デフォルトの名無しさん
2007/12/25(火) 20:24:53my_device::readの引数nが4096でも戻り値で1を返しとけばいいんじゃないかな?
でもmy_device::readが一度に1しか読めない仕様(234より)だから
ss.read( buf, sizeof( buf ) )ってやるとsizeof(buf)回呼び出されて効率悪いけど・・・
0239デフォルトの名無しさん
2007/12/25(火) 20:39:55多分大丈夫だと思うんだけどmy_device::readの引数nがインデックスではないよ。サイズだよ?
例えばn==4096の時
4096番目からreadしてsに入れろ
でなく
わたくしめの方で確保させていただきましたsのサイズは4096です。
4096ぴっちり埋めて頂かなくても結構ですが埋めて頂きましたサイズを戻り値としてお返しください
だよ?
インデックス指定はseekで行われるよ
see also
ttp://www.boost.org/libs/iostreams/doc/tutorial/container_device.html
0240デフォルトの名無しさん
2007/12/25(火) 21:25:59ありがとうございます。
my_device::read()の引数nがインデックスではないのは理解しているつもりです。
作っているmy_deviceがrs232cの通信インターフェースなので、
stream<my_device> ss;
ss.get();
のときに、タイムアウトするまで制御が戻ってこないと不都合があったのです。
※1文字受信していても、n==4096なので、ReadFileしたときに制御が戻ってこない
なので、
ss.read( buf, sizeof( buf ) );
のときにはsizeof( buf )分だけ、
ss.get()
のときには1文字分だけ読み込む処理がしたかったのです。
iostream拡張は今までやったことがなく、stream_bufのバッファリングの仕組みは
まだよくわかっていなのですが、仕様っぽい気がしてきました。
他の方法で解決できないか試してみます。
0241デフォルトの名無しさん
2007/12/25(火) 21:58:08レスありがとうございます。
mplやconsリストというのを未だ知らないので
まずはこれを調べて見ます。
0242234
2007/12/26(水) 00:00:09my_device::read()内で、受信バッファのデータ数を調べ、
その分だけReadFileすることで解決しました。
>>235, >>238-239
助言ありがとうございました。
0243デフォルトの名無しさん
2007/12/26(水) 00:01:29template <typename Args>
struct sig
{
typedef ?? type;
};
int operator()(int x) const;
double operator()(double) const;
void operator()(int x, int y) const;
};
上のようなファンクタの場合、型の違いによって、
typeを振り分けるにはcons listから型を抽出して
is_same<>で型を判定するという方法で可能でしょうか?
sigの部分的特殊化の方法か何かで
Args::inherited が cons<A, double>
を表すように仕組んで、
boost::tuples::element<1, Args>::type
とcons<A, double>のdoubleの比較一致を
試すというようなことができれば実現できるのかなと
思っているのですが。
0244デフォルトの名無しさん
2007/12/26(水) 05:38:45ごめん、上でArgs::inheritedとか書いたけど無視してくれ
Argsがタプルならこの方法でconsリストを取り出せるけど、Argsとして渡されるのは最初からconsリストだった。
で、そのファンクタの場合も、boost::tuples::elementとis_sameとif_cでちまちまテストしてもいいし、
部分特殊化で一気にディスパッチしてもいい。
後者なら、メンバテンプレートは特殊化できないので、こんな感じで。
namespace detail {
namespace bt = boost::tuples;
template <typename Args> struct A_sig;
template <typename Fun>
struct A_sig<bt::cons<Fun, bt::cons<int, bt::null_type> > > { typedef int type; };
template <typename Fun>
struct A_sig<bt::cons<Fun, bt::cons<double, bt::null_type> > > { typedef double type; };
template <typename Fun>
struct A_sig<bt::cons<Fun, bt::cons<int, bt::cons<int, bt::null_type> > > > { typedef void type; };
}
struct A {
template <typename Args>
struct sig { typedef typename detail::A_sig<Args>::type type; };
/* 以下略 */
0245デフォルトの名無しさん
2007/12/26(水) 09:10:49boost::archive::binary_oarchive bo(oss) として
bo にいろんなクラスを流し込んだ挙句,
oss.str() で std::string を取り出して
プログラム内でやり取りすることはできますか?
つまり,std::ostringstream にバイナリを
流し込んでいいのか?ということなんですが・・・
(その点に絞ると Boost スレとはスレ違いですみません)
0246デフォルトの名無しさん
2007/12/26(水) 10:04:57Boehm GC に似たやつとか
0247デフォルトの名無しさん
2007/12/26(水) 10:08:510248デフォルトの名無しさん
2007/12/26(水) 12:23:05今いくつか記事読んだ.
ライブラリとしてではなくて完全に言語使用に取り込もうとしているんだね.
C++/CLI の gcnew のように新しく「ハンドル」を持ち込むわけではないんだな.
ということは結局実装は Boehm GC のような conservative GC だってことだね.
0249デフォルトの名無しさん
2007/12/26(水) 16:18:56レスありがとうございます。
アイデアよくわかりました。この考えに従って
自作プログラムをコンパイルしたところ、引数が一つのもの
については成功し実行もできました。
//aはint配列あるいはdouble配列
for_each(a, a + 3, bl::bind(A(), bl::_1)); // OK
ただ、以下はコンパイルエラーとなりました。
//aはint配列
for_each(a, a + 3, bl::bind(A(), bl::_1, 100)); //コンパイルNG
引数が二つ以上のものが実体化されるときにエラーとなるようです。
”認識できない型”と怒られているので、おそらく
bt::cons<Fun, bt::cons<int, bt::cons<int, bt::null_type>が
実体化できない原因かなと思ってるのですが定かではありません。
consの形式自体はヘッドとテイルの2引数を与えていて、bl::null_type
も空の構造体として存在していましたので、型認識に問題は
なさそうなんですが、null_typeが連続して出てくるた
長い行が報告されます。(VC++ 2005 Eepress Edition)
boost::tuples::cons<const A,boost::tuples::cons<int,boost::tuples::cons<const
int,boost::tuples::detail::map_tuple_to_cons<boost::tuples::null_type,bo
ost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type
,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_t
ype,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::nul
l_type>::type>>>
0250デフォルトの名無しさん
2007/12/26(水) 16:30:41// The empty tuple is a null_type
template <>
struct map_tuple_to_cons<null_type, null_type, null_type, null_type,
null_type, null_type, null_type, null_type, null_type, null_type>
{
typedef null_type type;
};
ソースを見る限りではnull_typeと正しく判断されてもよいと
思うのですが。
0251デフォルトの名無しさん
2007/12/26(水) 17:33:15第二引数の型がintじゃなくてconst intとして与えられてるから特殊化にマッチしないみたいだ。
ディスパッチの前にremove_cvをかければ良いんだけど、
consリストはMPLシーケンスの要件を満たしていないみたいでtransformが使えない。
仕方ないから自分で再帰してみたら動いた。
template <typename List> struct list_remove_cv;
template <>
struct list_remove_cv<bt::null_type> { typedef bt::null_type type; };
template <typename Head, typename Tail>
struct list_remove_cv<bt::cons<Head, Tail> >
{
typedef bt::cons<
typename boost::remove_cv<Head>::type,
typename list_remove_cv<Tail>::type
> type;
};
これをやるくらいならelementとif_cで判別した方が楽かもしれない。
0252デフォルトの名無しさん
2007/12/26(水) 17:57:560253デフォルトの名無しさん
2007/12/26(水) 18:25:33毎度ありがとうございます。
難しいですね。。
自分ではまだそのようなコードは書けないです。
ただ、可能だということが分かっただけで
十分助かりました。引数型についてはelementで
引数の数についてはboost::tuples::lengthを使って
うまく組み合わせてみます。
0254デフォルトの名無しさん
2007/12/26(水) 23:56:46ランタイムのリンク方法はどのようになるのでしょうか?
/MT & /MTd か /MD & /MDd のいずれなのでしょうか?
0255デフォルトの名無しさん
2007/12/27(木) 00:01:26オートリンクが、そのときの設定に合わせて自動でやってくれるので、
何もしなくてよい。
0256デフォルトの名無しさん
2007/12/27(木) 00:18:37/MLd = -sgd
/MD = -mt-s
/MDd = -mt-s-gd
/MT = -mt
/MTd = -mt-gd
が全部用意されるのか・・・
/ML と /MLd は vc8 や vc9 ではすでにサポートされていないようなので
/MT と /MTd と同じものがビルドされているみたいだね.
0257デフォルトの名無しさん
2007/12/27(木) 10:18:22libboost_date_time-vc90-mt-gd-1_35.lib
libboost_date_time-vc90-mt-gd.lib
みたいにバージョンが入ったものとそうでないものが
ビルドされるけど、どちらか一方だけがリンカの
パスに見つかれば問題ないの?
それもオートリンクでどちらかが先に見つかって解決?
0258デフォルトの名無しさん
2007/12/27(木) 10:39:450259245
2007/12/27(木) 13:12:05持ち歩けることを確認、って当たり前かもしれないけど、
ちょっと感動。
make_nvp で作った std::pair をやり取りする
連想記憶(ってただの multimap だけど)を
作って便利に使ってます。
しかし boost::archive のフォーマットが変わるかもしれないので
ちゃんと serialize で version をチェックしなきゃなぁ、
バイナリだし何が起こるかわからない。
0260245
2007/12/28(金) 14:46:50制御文字を含むような std::string を boost::archive::xml_oarchive に
流し込むと XML 文書がぶっ壊れる.うむ〜.
0261デフォルトの名無しさん
2007/12/28(金) 22:24:08記念に糞patch晒し。
phoenixでstd::mapにoperator[]が使えなくて、渋々phoenix::binary_operatorを特殊化したら
boost::graph内(boost/graph/detail/read_graphviz_spirit.hpp)でも同じことやってるの見つけて
ブチ切れ気味にspecializations for stl iterators and containersとやらを修正してみた。
$ diff -u special_ops.hpp.orig special_ops.hpp
--- special_ops.hpp.orig 2007-12-25 10:49:20.000000000 +0900
+++ special_ops.hpp 2007-12-25 22:08:29.671875000 +0900
@@ -21,6 +21,8 @@
///////////////////////////////////////////////////////////////////////////////
#include <boost/spirit/phoenix/operators.hpp>
#include <iosfwd>
+#include <boost/typeof/typeof.hpp>
+#include <boost/utility/result_of.hpp>
///////////////////////////////////////////////////////////////////////////////
#if defined(_STLPORT_VERSION) && defined(__STL_USE_OWN_NAMESPACE)
@@ -320,7 +322,8 @@
template <typename T0, typename T1>
struct binary_operator<index_op, T0, T1>
{
- typedef typename T0::reference result_type;
+ typedef BOOST_TYPEOF_TPL(&T0::operator[]) index_op_t;
+ typedef typename boost::result_of<index_op_t(T1)>::type result_type;
static result_type eval(T0& container, T1 const& index)
{ return container[index]; }
};
0262デフォルトの名無しさん
2007/12/29(土) 13:58:37嬉しいのは分かるけど自意識過剰なの?
0263デフォルトの名無しさん
2007/12/29(土) 14:07:18何いちいち反応しているの?
興味がないなら無視すればいいだけだろ
#include <boost/current_function.hpp>
により Visual C++ では
#define BOOST_CURRENT_FUNCTION __FUNCSIG__
にされてしまうのはなぜ?
Visual C++ なら __FUNCTION__ があるので
#define BOOST_CURRENT_FUNCTION __FUNCTION__
にならないといけないはずなのに
0264デフォルトの名無しさん
2007/12/29(土) 14:39:12いやいや興味はあるよ。
“自意識過剰なのか”という点についてね。
0265デフォルトの名無しさん
2007/12/29(土) 15:22:05void bar(){}
boost::function<void(void)> f1 = foo;
boost::function<void(void)> f2 = bar;
assert(!(f1 == f2))
なぜこの比較が通らないんでしょうか?
assert(f1 == foo) なら通るんですが・・
boost::function のインスタンス同士の
比較はできないのでしょうか?
単純に関数ポインタの比較のようなことをしてくれればいいのですが.
0266265
2007/12/29(土) 15:52:01Why can't I compare boost::function objects with operator== or operator!=?
http://www.boost.org/doc/html/function/faq.html#id1215129
そのまんまのことが書いてありました.
死ね,俺.
没年2007.
0267デフォルトの名無しさん
2007/12/29(土) 16:01:08スレ違い
0268デフォルトの名無しさん
2007/12/31(月) 12:16:54気のせいですよね?
0269デフォルトの名無しさん
2007/12/31(月) 15:38:12不思議ではないだろ
0270デフォルトの名無しさん
2007/12/31(月) 23:49:00ライブラリが用意されていますよね、普通。たとえば bjam
でビルドすると両方のライブラリが作られるし、
Debian GNU/Linux や Ubuntu で boost-dbg を入れると
デバッグ用のライブラリが /usr/lib 以下に入り、
通常バージョンのライブラリと同居します。
で、ふと思ったのですが、Linux の一般的なディストリビューション
(RHEL や Debian) で libhoge, libhoge-dev を入れると
/usr/lib 以下に入る libhoge.a や libhoge.so は一種類だけで
特にデバッグバージョンと通常バージョンという区別はありません。
Linux のディストリビューションではパッケージングの際に
デバッグ情報をつけるか否か、デバッガで扱えるように
最適化をオフにするか否か、などについて取り決めがあるのでしょうか?
0271デフォルトの名無しさん
2008/01/02(水) 12:19:06リリースされるのかな?
0272デフォルトの名無しさん
2008/01/02(水) 16:28:40jpegとpngの読み込みを正式にコミットして、
pngも通過色とかまともに対応して、
スケーリングなども用意して。
0273デフォルトの名無しさん
2008/01/02(水) 16:29:410274デフォルトの名無しさん
2008/01/03(木) 02:20:39struct my_device
{
typedef char char_type;
typedef bidirectional_device_tag category;
streamsize read(char_type *s, streamsize n);
streamsize write(const char_type *s, streamsize n);
};
int main()
{
my_device device;
stream<my_device> s(device);
char one = 'b', two = 0;
s.put(one);
s.get(two);
}
my_device::write
my_device::read
の順番で呼ばれると思ったのですが、なぜかmy_device::readのほうしか呼ばれません。
なぜこのようになるのかご存じの方がいらっしゃいましたら教えてください。
0275デフォルトの名無しさん
2008/01/03(木) 07:35:44BGL ではグラフの頂点や辺にプロパティを設定して
値を持たせることができますが(たとえば「色」とか),
ある値をプロパティとして持つ頂点や辺を高速に
列挙させることはできるのでしょうか?
頂点イテレータなどで全探索して列挙するのはつらいので,
プロパティマップを boost::multi_map::multi_map_container
などをつかってキーでも値でもインデックスされているような
コンテナでプロパティを保持できればと思っているのですが.
外部プロパティとして持てばよいのではないかとも思うのですが,
たとえば boost::print_graph は vertex_index_t を内部プロパティ
として持っていることを前提に作られているので,
内部プロパティの持ち方を指定してうまくやれればいいと思っています.
0276デフォルトの名無しさん
2008/01/03(木) 08:51:59もしあるのだったらboostの方を使いたいです。
int var;
//キャストが必要な長い式
var = (int)(0.123456789 * 9.87654321 / 0.123456789);
//「キャストをする」と表明するだけで
//具体的な型や乱雑な括弧が必要ない
var | mycast = 0.123456789 * 9.87654321 / 0.123456789;
0277デフォルトの名無しさん
2008/01/03(木) 09:00:120278デフォルトの名無しさん
2008/01/03(木) 09:16:53operator =で右辺を代入してるだけ。
0279デフォルトの名無しさん
2008/01/03(木) 09:19:180280デフォルトの名無しさん
2008/01/03(木) 09:28:450281デフォルトの名無しさん
2008/01/03(木) 09:35:05初期化式の型から変数の型を判断するやつだね。
俺が書いたのは単に代入用だけだよ。
0282デフォルトの名無しさん
2008/01/03(木) 09:36:58class auto_cast_wrarapper {
T& obj_;
public:
auto_cast_wrarapper(T& obj)
: obj_(obj)
{}
template<typename U>
T& operator=(U const& obj) {
return obj_ = static_cast<T>(obj);
}
};
class auto_cast {};
template<typename T>
auto_cast_wrarapper<T> operator|(T const& lhs, auto_cast rhs) {
return auto_cast_wrarapper<T>(lhs);
}
static auto_cast mycast;
こんな感じかな。まあboost::enable_ifとか使ってもうちょっと上手く実装してるとは思うけど。
とりあえずboostに同様のものは無かったと思われ。
0283282
2008/01/03(木) 09:39:57wrapperね。
0284デフォルトの名無しさん
2008/01/03(木) 10:17:300285デフォルトの名無しさん
2008/01/03(木) 10:23:04varがint形とdouble形のコンストラクタと代入演算子を持っていて、
それぞれ意味が違う場合はどうするの?
0286デフォルトの名無しさん
2008/01/03(木) 14:48:380287デフォルトの名無しさん
2008/01/03(木) 18:11:52単にバッファリングされてるだけなんじゃないの?
>Note that the Iostreams library provides buffering by default. Consequently, the stream out must be flushed before
>the characters written are guaranteed to be reflected in the underlying string.
>http://www.boost.org/libs/iostreams/doc/tutorial/container_sink.html
>275
「BGLでは」ではなくて、むしろ「adjacency_list と adjacency_map では」が正しいんじゃないの?
内部プロパティに対するアクセス方法としては、PropertyGraph か MutablePropertyGraph に対応するものしか
用意されてないし、EdgeList とかの持ち方はカスタマイズできるけど内部プロパティの持ち方はカスタマイズできないと思う。
で、内部プロパティと外部プロパティを併用したら駄目なん?
あるいは、いっそのこと、自分で BGL の Concept に沿ったクラスを作っちゃえばいいんじゃないかな?
0288デフォルトの名無しさん
2008/01/03(木) 18:39:49writeの後にflushをしたら期待した動作になりました。
ありがとうございました。
0289デフォルトの名無しさん
2008/01/03(木) 19:17:02そうですね.外部プロパティとの併用にします.
BGL って Graphviz への出力もできるし,
その時の VertexPropertyWriter は
boost::bind や boost::lambda でファンクタ
自在に作れるし,便利ですね.
0290デフォルトの名無しさん
2008/01/04(金) 01:55:41各要素を std::cout に出力したいとき、
boost::bind でうまくファンクタかけないかな?
0291デフォルトの名無しさん
2008/01/04(金) 10:42:430292デフォルトの名無しさん
2008/01/04(金) 10:47:30std::vector<std::string> の参照を受け取ると
その内容を全部ずらずらと書き出すようなファンクタを
コードの途中で必要に応じて作り出せないだろうかということです。
0293デフォルトの名無しさん
2008/01/04(金) 12:16:30void operator()(const std::vector<std::string>& v)
{
std::copy(v.begin(), v.end(), ostream_iterator<std::string>(cout, " "));
}
とかじゃだめなのか?何でboost::bindが必要なんだ?
0294デフォルトの名無しさん
2008/01/04(金) 12:17:28{
std::copy(v.begin(), v.end(), ostream_iterator<std::string>(cout, " "));
}
constつけた。
0295デフォルトの名無しさん
2008/01/07(月) 19:19:40その状態クラスのメンバ変数の値によって、次の状態に遷移するしないを分ける事はできますか?
http://www.kmonos.net/alang/boost/classes/statechart.html
ここのサンプルで例えれば、
「Locked状態はn回Coinイベントを受け取ったらUnlocked状態に遷移」という風にしたいです。
0296デフォルトの名無しさん
2008/01/08(火) 14:27:54boost.pythonをcmake(クロスプラットフォームmake)から使う方法まとめてみました
0297デフォルトの名無しさん
2008/01/09(水) 20:03:20./configureやると
checking whether the Boost::DateTime library is available... yes
checking for main in -lboost_date_time... no
configure: error: Unable to find Boost.DateTime library, currently this is required.
って出て失敗するので,Boostライブラリを手動インストールしたのですが認識してくれません.
# ldconfig -v
で確かに
libboost_date_time-gcc41-mt-1_34_1.so.1.34.1 -> libboost_date_time-gcc41-mt.so
libboost_date_time-gcc41-1_34_1.so.1.34.1 -> libboost_date_time-gcc41.so
と追加されているはずなのですが,configuregが認識していないようです.
これどうやったら直りますか?
ちなみにyumで自動インストールするといけるのですが,自分はboost::filesystemとか使いたいので
bjamつかって自前でビルドしてインストールしました.
0298297
2008/01/09(水) 20:04:41Fedora Core 6でカーネルのバージョンが2.6.18-1.2798.fc6です
宜しくお願いいたします.
0299デフォルトの名無しさん
2008/01/09(水) 20:07:30に
boost.conf
とかいう名前のファイル作ってboostインストールしたパスを書く
/usr/local/boost/lib
とか
それから
#ldconfig
0300デフォルトの名無しさん
2008/01/09(水) 20:07:570301デフォルトの名無しさん
2008/01/09(水) 20:22:26やってみましたが駄目でした.
ldconfig -v
/usr/local/lib:
(途中省略)
libboost_date_time-gcc41-mt-1_34_1.so.1.34.1 -> libboost_date_time-gcc41-mt.so
libboost_date_time-gcc41-1_34_1.so.1.34.1 -> libboost_date_time-gcc41.so
となっているので,ライブラリ自体は認識していると思います.
今気づいたのですが
checking whether the Boost::DateTime library is available... yes
ということはライブラリ自体は認識しているようですね...
checking for main in -lboost_date_time... no
と成っています-lboost_date_timeがおかしいということでしょうか...
>>300
yum install boostってやるときちんと./configureできてビルドできるのですが,今回は
boost::filesystemとか使いたいのでbjamつかって自前でビルドしてインストールしました.
0302デフォルトの名無しさん
2008/01/09(水) 20:47:12エラーメッセージでググると確かにdevel 入れろってアドバイスされてるね
sudo apt-get install libboost-dev libboost-date-time-dev
libboost-filesystem-dev libboost-serialization-dev libboost-thread-dev
libboost-regex-dev libboost-program-options-dev
fedoraは apt-get を yum install にすればいいのかな
0303デフォルトの名無しさん
2008/01/13(日) 14:52:55会社の先輩が boost、boost と boost 自慢して煩いのですが。
0304デフォルトの名無しさん
2008/01/13(日) 15:08:39使わなきゃ損。
使えない奴は低能。
0305デフォルトの名無しさん
2008/01/13(日) 15:15:240306デフォルトの名無しさん
2008/01/13(日) 15:17:440307デフォルトの名無しさん
2008/01/13(日) 15:23:500308デフォルトの名無しさん
2008/01/13(日) 15:25:290309デフォルトの名無しさん
2008/01/13(日) 15:59:13Lets boostで書いてあったのですが、具体的にどうやれば
良いのでしょうか?
0310デフォルトの名無しさん
2008/01/13(日) 16:35:300311デフォルトの名無しさん
2008/01/13(日) 16:39:01絶対パスである必要はあるの?
0312デフォルトの名無しさん
2008/01/13(日) 16:41:410313デフォルトの名無しさん
2008/01/13(日) 16:45:07Letsだと変換が用意されてるように書かれてましたが、
自前変換しかないんですかねぇ。
0314デフォルトの名無しさん
2008/01/13(日) 16:48:12../ の場合、何も付いてない場合、ドライブレターの場合(最初から絶対パス)、
さらに/が\な場合など、かなり面倒な・・・
0315デフォルトの名無しさん
2008/01/13(日) 17:05:29とか、
system_complete()
で簡単に変換できると思うが。
0316デフォルトの名無しさん
2008/01/13(日) 17:16:180317デフォルトの名無しさん
2008/01/13(日) 17:20:34まさにsoreda!
感謝感謝
0318デフォルトの名無しさん
2008/01/14(月) 00:43:06だってC++の標準ライブラリが貧弱すぎて話にならないから。
簡単なところでは正規表現とかshared_ptrとか。
bindとmem_fnもC++標準のよりBoostのほうが使いやすい。
0319デフォルトの名無しさん
2008/01/14(月) 01:25:06どうでもよくね?
プログラム全体から見ると、Boostで楽になる部分なんて 1% 以下でしょ。
0320デフォルトの名無しさん
2008/01/14(月) 01:28:180321デフォルトの名無しさん
2008/01/14(月) 01:28:250322デフォルトの名無しさん
2008/01/14(月) 01:34:13あれって、参照カウンタで管理してるんでしょ?
循環参照したらオワタになるので、素人に使わすと逆に危ないよ。
そもそも、new するシチュエーションってそうそうあるか?
なるべく new を避けて書くのが C++er の嗜みだとおもうが。
0323デフォルトの名無しさん
2008/01/14(月) 01:35:58デザインパターンの半分は使えなくなるんじゃね。
0324デフォルトの名無しさん
2008/01/14(月) 01:37:00もの足りないと思うひとがBoost使ってることが多いだろうね
数万行のコード書いたら1%ってめっちゃでかいと思うんだ
(実際は1%どころじゃないけど)
0325デフォルトの名無しさん
2008/01/14(月) 01:40:10まあ素人に使わせるとそうなることはあるかもしれんな。
0326デフォルトの名無しさん
2008/01/14(月) 01:44:03殆どのインスタンスは、自分の親クラスのメンバ変数として一緒に確保されるから、
大きな new delete が時たまあるだけってのが普通じゃない?
細かい単位で new delete 繰り返すなんてのは、C++ には似合わないと思うが。
そういうふうに書いてくれ、と頼まれたなら仕方ないが。
0327デフォルトの名無しさん
2008/01/14(月) 01:50:130328デフォルトの名無しさん
2008/01/14(月) 01:57:01デバッグだったり、プロジェクトの管理だったりだよね。
Boostってあんまどうでもよくない ?
0329デフォルトの名無しさん
2008/01/14(月) 01:59:20weak_ptr
0330デフォルトの名無しさん
2008/01/14(月) 02:02:09よくない
プログラミングで難しいのには「大量のコードを書くこと」や「難しい処理を実装すること」
は当然あるだろ
だったらコード量が減って、難しい処理を(Boost使わないよりは)簡単に実装できるなら使ったほうがいいんじゃない
0331デフォルトの名無しさん
2008/01/14(月) 02:09:09>プログラミングで難しいのには「大量のコードを書くこと」や「難しい処理を実装すること」
>は当然あるだろ
えーーーー
無いなぁ。難しい処理ってのは、確かに難しいんだけど、
Boost 使ったぐらいでどうこうなるレベルの処理を、普通は難しいとは言わないよなぁ。
Boostって、「うっかりミスが防げるかもね!!」 レベルの話でしょ。
0332デフォルトの名無しさん
2008/01/14(月) 02:16:40しかし、難しい処理の実装は、Boostを使ってもやっぱり難しいよ。
0333デフォルトの名無しさん
2008/01/14(月) 02:28:31>>332が非常に簡潔な答えをくれた。
「面倒くさい」
0334デフォルトの名無しさん
2008/01/14(月) 02:59:04×どうしても使わないと駄目
○メリット大きい・デメリットやリスクが少ないなら使う
まあBoostに限らないけど。
使いこなせる人間がわずかしかいないプロジェクトに導入したりするのはまずいかと。
新しいものを覚えるコストはゼロじゃないよ。
(誰か1人が使うだけで話が完結するならいいかもしれんが)
まあ、各人がBoostを使えた方が開発効率がよいとは思う。
気長に導入しようって話ならいいんでは?
0335デフォルトの名無しさん
2008/01/14(月) 03:31:240336デフォルトの名無しさん
2008/01/14(月) 03:43:360337デフォルトの名無しさん
2008/01/14(月) 04:41:24でも、Boostって何かに特化しているってわけでもないんだよな。
だから使ったところで丸投げできないし、結局あんまブーストしない。
0338デフォルトの名無しさん
2008/01/14(月) 05:07:100339デフォルトの名無しさん
2008/01/14(月) 08:45:01効率上げると言うより無いと効率下がる
いまさらshared_ptrもfunctionもutilityもoperatorsもcstdintも無しで済ませるのは苦痛だ
0340デフォルトの名無しさん
2008/01/14(月) 09:22:08超頻出の Strategy パターンとか、大体 new が必要になるよね。
必要ない事もありはするけど。
shared_ptr や ptr_container があるだけで、メモリ管理がだいぶ楽になる。
0341デフォルトの名無しさん
2008/01/14(月) 10:08:580342デフォルトの名無しさん
2008/01/14(月) 10:11:14使いこなせる人間がわずかしかいないって?(勉強はしないの?)
こういうことだから日本のIT産業は
0343デフォルトの名無しさん
2008/01/14(月) 11:21:35コンテナを渡すといいよ
0344デフォルトの名無しさん
2008/01/14(月) 11:22:59勉強する香具師は少数派
0345デフォルトの名無しさん
2008/01/14(月) 11:22:59ptr_container系はデストラクト時に必ず要素をdeleteする。
嫌ならデストラクト前にdeleteしてほしくないメンバをコンテナから削除しないと駄目。
0346デフォルトの名無しさん
2008/01/14(月) 11:30:29資格さえあれば仕事もついてくるって構図だから仕方ないけど。
0347デフォルトの名無しさん
2008/01/14(月) 11:54:48大体分かりました。
その制限を踏まえて色々考えてみます。
0348デフォルトの名無しさん
2008/01/14(月) 12:43:05普通メンバ変数として確保しておいて、切り替え時にインターフェイス用のポインタを切り替えるだけだな。
いちいち new するとかタコすぎる
0349デフォルトの名無しさん
2008/01/14(月) 12:46:16new した方がいい時も多い。
0350デフォルトの名無しさん
2008/01/14(月) 12:47:26なんかさ、開発効率って、結局そういうところで決まらなくね?
むしろ、>>328 のようなことの方が影響大きいと思うのだが。
0351デフォルトの名無しさん
2008/01/14(月) 12:49:46メモリリークなんて、リソースリークも含めてここ数年出したことねぇなぁ。
設計がおかしいんじゃね?
0352デフォルトの名無しさん
2008/01/14(月) 12:55:060353デフォルトの名無しさん
2008/01/14(月) 13:39:370354デフォルトの名無しさん
2008/01/14(月) 14:48:47メモリコンパクション無しで、しかも参照カウンタで管理だなんて、存在価値なくね ?
0355デフォルトの名無しさん
2008/01/14(月) 14:58:47C++を知らない者はCを知らない (templateはマクロでvirtualは関数ポインタだった)
Cを知らない者はプログラミングを知らない (自明)
対偶を取ろう
プログラミングを知る者はBoostを知っている
0356デフォルトの名無しさん
2008/01/14(月) 15:05:470357デフォルトの名無しさん
2008/01/14(月) 15:07:58だからといって、どうして、「C++を知らない者はCを知らない」ということになるんだ?
普通逆だろ。
「C++のtemplateと仮想関数は、元々はCのマクロと関数ポインタであるので、
C++の元となったCを理解していないと、C++を理解したということにならない。」
となるのが普通だろ。
(自明)とか使ってる時点で釣りなんだろうが。
0358デフォルトの名無しさん
2008/01/14(月) 15:15:50危うく納得するところだった。
こういう詭弁はなんと命名されているのだろうか?個別性質と集合抱合のすり替え?
0359デフォルトの名無しさん
2008/01/14(月) 15:27:01偽: 「C があったから C++ が生まれた。」
真: 「C++ が生まれたのは、C があったから。」
C++の基礎としてCがあるのであって、Cの拡張としてC++があるというわけではない。
「Cの拡張としてC++がある」というのは一見正しそうだが、単なる結果論に過ぎない。
マンガの見すぎ、精神論、文系脳。
ただ単に、「C++の基礎としてCがある」という事実があるだけ。
これがロジカルな思考、現実、理系脳。
0360デフォルトの名無しさん
2008/01/14(月) 16:38:26論理学・集合論的に説明してくれないと.....。
0361デフォルトの名無しさん
2008/01/14(月) 16:43:49表現を簡単にしすぎて誤解しやすい表現になってる気が。
0362デフォルトの名無しさん
2008/01/14(月) 16:51:57どう見ても「理系」の推論方法ではないな。そもそも「理系」という言葉を使う時点でアウトだ。
>>355 は一種のジョークだ。
0363デフォルトの名無しさん
2008/01/14(月) 18:00:430364デフォルトの名無しさん
2008/01/14(月) 18:14:180365デフォルトの名無しさん
2008/01/14(月) 18:19:09Object-COBOLとか
そりゃもう悲惨だからな
0366デフォルトの名無しさん
2008/01/14(月) 20:09:11newの無いc++なんざcとかわらん
0367デフォルトの名無しさん
2008/01/14(月) 20:40:18scoped_ptr
0368デフォルトの名無しさん
2008/01/14(月) 22:11:49scoped_ptr ってあれ一体何に使うの?
スコープはずれたら解放するってんなら、初めからスタックの上に確保すりゃいいんじゃね ?
それともマルチスレッド対策 ?
0369デフォルトの名無しさん
2008/01/14(月) 22:14:15逆に C++ で new とか使いまくるぐらいなら、C++ なんぞ使わずに Java 使えばいいのにと思う。
0370デフォルトの名無しさん
2008/01/14(月) 22:22:28new したポインタを返すような関数から返されてきたポインタを受けるときとか。
>>369
placement new を使った効率的なメモリ管理を選択する事もできるから、
C++ には C++ なりの利点がある。
0371デフォルトの名無しさん
2008/01/14(月) 22:26:50pimplで使う
0372デフォルトの名無しさん
2008/01/14(月) 22:44:36>new したポインタを返すような関数から返されてきたポインタを受けるときとか。
C++ でそんなことするやつ居るのか。
素直に Java 使えよ。
>placement new を使った効率的なメモリ管理を選択する事もできるから、
placement new と smart_ptr って相性悪くね ?
0373デフォルトの名無しさん
2008/01/14(月) 22:47:23>new したポインタを返すような関数から返されてきたポインタを受けるときとか
それはどちらかというとauto_ptrだと思う。
scoped_ptrはswapはできるけど(auto_ptr的な意味での)releaseができないから、
呼び出し側が他の方法でdelete管理をしたい時困る。
>>368
pimplとかfactoryパターンの生成物とか。
0374デフォルトの名無しさん
2008/01/14(月) 22:48:53その程度の理由で乗り換えないし乗り換えられない状況だって腐るほどあるだろうに。
0375デフォルトの名無しさん
2008/01/14(月) 22:50:36って言われたから、じゃぁ Java 使えば ?
って言い返しただけだよ。
0376デフォルトの名無しさん
2008/01/14(月) 22:53:450377デフォルトの名無しさん
2008/01/14(月) 23:01:27auto_ptr は次期 C++ で deprecated になります。
0378デフォルトの名無しさん
2008/01/14(月) 23:12:10ぜんぜん違うから、どこまでいっても平行線
0379デフォルトの名無しさん
2008/01/14(月) 23:18:12リソース管理が面倒。
0380デフォルトの名無しさん
2008/01/14(月) 23:24:05うまくいけば代わりにunique_ptrが入る。
0381デフォルトの名無しさん
2008/01/15(火) 03:24:540382デフォルトの名無しさん
2008/01/15(火) 14:22:110383デフォルトの名無しさん
2008/01/15(火) 18:52:21explicit operator bool() 装備
代入でmoveはできず、std::move()が必要
こんなとこだっけ?
まあ似たようなもの2つあると初心者は混乱しそうだが
0384デフォルトの名無しさん
2008/01/20(日) 11:36:15b の内容全てを a の後ろに移動したいのですが、
そういうことはできますか? 出来る限り簡単な方法で。
0385デフォルトの名無しさん
2008/01/20(日) 12:29:25std::copy とか使えないのかな
0386デフォルトの名無しさん
2008/01/20(日) 13:04:05常に false を返す比較関数を使って merge する方法は思いつきましたが、
何かエレガントじゃないというか・・・。
>>385
コピーじゃなくて移動なんです。
a の最後に b の要素を付け加えて b は空にしてしまう、という形ですが、
内部的には単なるノードのつけかえで実現されるのがベストです。
0387デフォルトの名無しさん
2008/01/20(日) 13:38:590388デフォルトの名無しさん
2008/01/20(日) 15:08:07代わりに transfer というのがありました。
ありがとうございました。
0389デフォルトの名無しさん
2008/01/21(月) 23:08:31http://www.cmake.org/Bug/view.php?id=6257
これでboostのpathをmakeに書かなくてもよくなったのかな
0390デフォルトの名無しさん
2008/01/22(火) 00:26:18|← reject| boostの中の人 singleton ユーザー
. ̄.|| ̄ ̄ ┗(^o^ )┳(`Д´)┳(^o^ )┛≡=-
|| ┏┗ ┗┗ ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0391デフォルトの名無しさん
2008/01/22(火) 01:05:590392デフォルトの名無しさん
2008/01/22(火) 02:08:260393デフォルトの名無しさん
2008/01/22(火) 02:23:18つ配列使わずにコンテナを使う
0394デフォルトの名無しさん
2008/01/22(火) 02:28:240395デフォルトの名無しさん
2008/01/22(火) 02:37:11Boost.Preprocessorにそんなようなマクロがあったような気が・・・
0396デフォルトの名無しさん
2008/01/22(火) 03:12:460397デフォルトの名無しさん
2008/01/22(火) 05:22:38[review] General comment on boost::singleton
http://www.nabble.com/-review--General-comment-on-boost::singleton-td14952506.html
Tobias Schwinger
http://torjo.com/tobias/
これでつか?(T^T)
0398デフォルトの名無しさん
2008/01/22(火) 05:36:26一生孤独でおkwwwwwwシングルトンだけにwww」
俺「\(^o^)/」
0399デフォルトの名無しさん
2008/01/22(火) 06:00:180400デフォルトの名無しさん
2008/01/22(火) 06:27:47完全な、あるいは既知の欠陥がないSingletonライブラリを実装するのはほとんど不可能ってレベルで。
大体BoostでSingletonが蹴られたのってこれで何度目だ?
0401デフォルトの名無しさん
2008/01/22(火) 06:33:150402デフォルトの名無しさん
2008/01/22(火) 09:21:540403デフォルトの名無しさん
2008/01/22(火) 10:47:25ライブラリの提供という点で否定的なレビューが多くあがってた。
作者によると今回の singleton は、スレッド安全な動的初期化と、はっきりした
初期化順や破棄タイミングを提供するらしいけど、否定的な人たちに言わせれば
それらをシングルトンとは関係ない個別の機能として提供すべきだとか、そういう話。
元はこっちの巨大なスレッドね。
http://www.nabble.com/-review--Fast-track-review-of-Boost.Utility-Singleton-begins-today-to14806433.html
0404デフォルトの名無しさん
2008/01/22(火) 12:30:29http://www.boost.org/libs/pool/doc/implementation/singleton.html
やっぱり details 以下のものを使うのは良くないのかなぁ.
0405デフォルトの名無しさん
2008/01/22(火) 12:50:47何でもぶちこみすぎているから分解を検討しましょうってことだよね。
0406デフォルトの名無しさん
2008/01/22(火) 19:45:28グローバル変数よりは随分マシだけどね。
0407デフォルトの名無しさん
2008/01/23(水) 19:02:33struct Foo
{
int var;
};
vector<Foo*> vData;
...vDataの中身をいろいろ埋める
sort(vData.begin(), vData.end(), _1->var < _2->var); ←コンパイルエラー
これって実現方法あります?
これ以上複雑に書かないとだめなら普通に述語書いたほうがいいような気がする・・・
vectorがFooのポインタなのは実装上の理由です。
0408デフォルトの名無しさん
2008/01/23(水) 20:27:520409デフォルトの名無しさん
2008/01/23(水) 21:15:54Some operators cannot be overloaded at all (::, ., .*). For some
operators, the requirements on return types prevent them to be
overloaded to create lambda functors. These operators are ->., ->, new,
new[], delete, delete[] and ?: (the conditional operator).
0410デフォルトの名無しさん
2008/01/28(月) 11:30:59今更ながらいただきました。thx!
自力コンパイルする前にこのスレ覗いてよかった。
0411デフォルトの名無しさん
2008/01/28(月) 15:15:52どういたしまして.ただビルドしておいてるだけですが.
同僚から ICU 対応は?とか,もっとアップデートしろ
とか突き上げ食らってまして,そのうちまた新しいもの
置いておきます.
0412デフォルトの名無しさん
2008/01/29(火) 01:48:44私も今いただきました。
私もスタティックだけを使うのでありがたいです。
/MT /MTd で作成されているのですよね!?
0413デフォルトの名無しさん
2008/01/29(火) 02:21:410414デフォルトの名無しさん
2008/01/29(火) 06:56:25説明不足ですみません.
>>207 はそこに置いてある他のライブラリ(gmp とか mpfr とか)
で特に記述のないものは /MD, /MDd でコンパイルしています
ということで,boost に限って言えば bjam が /MT /MTd /MD /MDd
のすべてに関してビルドしてくれます.さらにオートリンクにより
適切なものが選ばれます.詳しくは boost/config/auto_link.hpp
を見てください.
余談ですが,自分がデフォルトを /MD /MDd にしている理由は
マネージドと混在させたい場合が時々あるからです.
/MT /MTd でコンパイルしたコードはマネージドと混在できません.
0415411
2008/01/29(火) 07:50:47http://svn.windy.cx/ から辿ってください.
あと,直リンクしやすいようにダウンロードを PHP 経由ではなくしました.
別にダウンロードされた回数とかカウントする必要ないので.
何かおかしいところがあったらここか上のWikiのコメント欄にでも.
0416デフォルトの名無しさん
2008/01/29(火) 18:37:510417デフォルトの名無しさん
2008/01/29(火) 18:52:13Windowsだと、簡単に世界で一意なGUID生成できるので、
Windowsでしかプログラミングしない自分としては、あんまりいらないな。
0418デフォルトの名無しさん
2008/01/29(火) 19:11:140419デフォルトの名無しさん
2008/01/29(火) 19:59:36って名称を使ってるんだよね.名称をどっちにするか
っていう話も出てた気がする.
あとは生成アルゴリズムがMicrosoftのそれと同じなのか
どうかとか.同じじゃないとして何か問題起きないの?とか.
0420デフォルトの名無しさん
2008/01/29(火) 20:03:090421デフォルトの名無しさん
2008/01/29(火) 20:26:28WindowsならクソみたいなMFC使ってればいいじゃん
0422デフォルトの名無しさん
2008/01/29(火) 21:04:43誰もWindows限定で話なんてしてないじゃん.
そうじゃなくて,セキュリティ上の考慮
(この場合は衝突がどれくらいの確率で起きるか)
をしたポータブルな実装が必要だって話でしょ?
なんでMFCの話なん過去のスレッドで出すかなぁ.
0423デフォルトの名無しさん
2008/01/29(火) 21:13:44と補完しました
0424デフォルトの名無しさん
2008/01/30(水) 01:41:030425デフォルトの名無しさん
2008/01/30(水) 02:26:550426デフォルトの名無しさん
2008/01/31(木) 09:33:42public:
typedef Gamma type;
typedef size_t value_type;
const static int value = 1;
const static int value2 = 1;
typedef mpl::integral_c_tag tag;
};
template <class T>
struct RetVal2{
const static int value = T::value2;
};
typedef mpl::list< Gamma, Gamma> LIST;
int main(){
cout << mpl::accumulate< LIST, mpl::int_<0>, mpl::plus<mpl::_1, mpl::int_< RetVal2<mpl::_2>::value > > >::type::value << endl;
return 0;
}
Gamma::value2の合計を出したいんですが、accumulate中にRetVal2にGamma以外のクラスが入力されているようで
value2がないぞと起こられます(多分mpl_::naというやつだと思いますが)。
value以外の数値を合計する方法を教えてください。
0427デフォルトの名無しさん
2008/01/31(木) 10:23:59使われてますね,結構いろんな場所で.
たとえば Subversion ではリポジトリの識別に
UUIDが使われています.working copy で
svn info とすれば UUID がわかります.
0428デフォルトの名無しさん
2008/02/01(金) 10:56:20class SuperFoo {};
class Foo : public SuperFoo {};
こんな感じのクラスがあって、
void DoSomething(SuperFoo *p);
みたいな関数があったとすると、
DoSomething(new Foo);
のようにできますよね。
void DoSomething2(shared_ptr<SuperFoo> p);
しかしこんな関数だと、
DoSomething(shared_ptr<Foo>(new Foo));
ってやるとエラーになるのでstatic_pointer_castしてやらんといけないのですが、
親クラスのキャストはいちいちやりたくないです。
これってこういうものなのでしょうか?
0429デフォルトの名無しさん
2008/02/01(金) 11:12:35SuperFoo* と boost::shared_ptr<Foo> は暗黙の変換のない無関係な型でしょ。
DoSomething2(shared_ptr<Foo>(new Foo)); はOK。
0430デフォルトの名無しさん
2008/02/01(金) 11:20:35最後の1行間違ってました。
DoSomething2(shared_ptr<Foo>(new Foo));でエラーになるということです…。
0431デフォルトの名無しさん
2008/02/01(金) 11:31:13using boost::shared_ptr;
class SuperFoo{};
class Foo : public SuperFoo{};
void DoSomething2(shared_ptr<SuperFoo> p){}
int _tmain(int argc, _TCHAR* argv[]){
DoSomething2(shared_ptr<Foo>(new Foo));
return 0;
}
VC++2005だがエラーなんて起こらないぞ
0432デフォルトの名無しさん
2008/02/01(金) 11:39:13すみません自分が間違ってました。
void DoSomething2(shared_ptr<SuperFoo> p);
ではなくて
void DoSomething2(shared_ptr<SuperFoo> &p);
だったのがまずかったようです。
参照をやめたら通るようになりました。
0433デフォルトの名無しさん
2008/02/01(金) 13:15:53非constな参照引数に一時オブジェクトは渡せない
0434デフォルトの名無しさん
2008/02/01(金) 13:27:43VisualCに限り可能だったりする
0435デフォルトの名無しさん
2008/02/02(土) 23:31:20関数の呼び出し式でスマートポインタを構築すべきでない
DoSomething3(shared_ptr<Foo>(new Foo), bar());
だと引数の評価順序は不定なのでnew Foo→bar()で例外送出→shared_ptr構築されず→メモリリークになる可能性がある
0436デフォルトの名無しさん
2008/02/02(土) 23:37:36引数の評価順序が不貞とか直感に反するふざけた仕様だよな
0437デフォルトの名無しさん
2008/02/03(日) 00:34:330438デフォルトの名無しさん
2008/02/03(日) 02:46:57それ使うのが一番いいと思うぜ。
0439デフォルトの名無しさん
2008/02/03(日) 03:40:580440デフォルトの名無しさん
2008/02/03(日) 10:30:15メイヤーズの受け売りじゃないですか
0441デフォルトの名無しさん
2008/02/03(日) 10:31:55それ常識じゃないですか
>>434
警告レベル上げると非標準と出せることは
サッターがGotWでも言ってますよ
0442デフォルトの名無しさん
2008/02/03(日) 11:06:590443デフォルトの名無しさん
2008/02/03(日) 14:47:360444デフォルトの名無しさん
2008/02/03(日) 14:50:24Boost もテンプレートのみの範囲なら同様。
0445デフォルトの名無しさん
2008/02/03(日) 14:52:24BoostCon Call for Sessionsとかメール流れてるけど
0446443
2008/02/03(日) 17:26:04ありがとうございます。
STL は無条件で問題ないんですね。
Boost でライブラリを使ってスタティックリンクをして .DLL は作成可能でしょうか?
0447デフォルトの名無しさん
2008/02/03(日) 18:41:080449デフォルトの名無しさん
2008/02/03(日) 19:02:18でもxpressiveみたいな代替案もあるので、普通に使っている限りは要らないと思う。
0450デフォルトの名無しさん
2008/02/03(日) 19:28:05そういう場合でもWindowsだと普通はスタティックリンク版使うだろうってこと。
その辺の制御するマクロもなんかあった気がするが。
0451443
2008/02/03(日) 19:34:03.DLL は消していますので。
それをスタティックリンクして、自作のプログラムの .DLL をつくれるのかなぁと思ったもので;;;
1本の .exe が大きくなりすぎて、機能ごとに .DLL にしないと、Debug Build のブラウザ情報の書きだしに
時間が掛かって待ちきれないので;
0452デフォルトの名無しさん
2008/02/03(日) 19:51:15なぜ試さないのか。
0453443
2008/02/03(日) 21:37:15実験するだけでも難しかしいなぁと思って;
できるって教えて頂ければ何とか、チャレンジしたいと思います。
0454デフォルトの名無しさん
2008/02/03(日) 22:37:46ここで粘着してもスルーされるだけですよ。
0455デフォルトの名無しさん
2008/02/07(木) 15:57:22と長い間思っていたのですが、 boost::ref というのは
そういうときのためにあるのでしょうか?
内部状態を持ったまま幾つものコンテナをなめまわしたいとき,
pred (←第三引数)を渡すといちいちコピーが発生するより
参照で渡したいなぁと.
0456デフォルトの名無しさん
2008/02/07(木) 16:30:280457デフォルトの名無しさん
2008/02/07(木) 17:19:530458デフォルトの名無しさん
2008/02/07(木) 17:20:020459デフォルトの名無しさん
2008/02/07(木) 17:23:08サイズによって違うよ、銀は三枚のこともあるよ
0460デフォルトの名無しさん
2008/02/07(木) 19:36:060461デフォルトの名無しさん
2008/02/07(木) 20:20:440462デフォルトの名無しさん
2008/02/07(木) 20:28:070463デフォルトの名無しさん
2008/02/07(木) 20:29:49あとspiritも
0464デフォルトの名無しさん
2008/02/07(木) 20:37:270465デフォルトの名無しさん
2008/02/07(木) 21:41:42regex「ねーよ」
0466デフォルトの名無しさん
2008/02/07(木) 23:00:030467デフォルトの名無しさん
2008/02/08(金) 04:16:430468デフォルトの名無しさん
2008/02/08(金) 13:30:59そろそろC++も終わりと考えていいのかな?
0469デフォルトの名無しさん
2008/02/08(金) 14:42:020470デフォルトの名無しさん
2008/02/08(金) 15:00:31枯れないとC++標準として採用できないではないか。
0471デフォルトの名無しさん
2008/02/08(金) 21:55:570472デフォルトの名無しさん
2008/02/09(土) 14:39:41それでも更新が少ないって事はboostの開発者達は皆C++捨てて他の言語にいっちゃったって事じゃないのかなーとか思ったり
0473デフォルトの名無しさん
2008/02/09(土) 15:28:19の割にはレビューはそれなりに継続して行われてる気がするんだが。
0474デフォルトの名無しさん
2008/02/09(土) 16:34:47更新少ないのかな?
svn見る限りでは2月に入ってリビジョンは64上がってるんだが
0475デフォルトの名無しさん
2008/02/09(土) 16:42:45もしかしてCVSの方を見てるとか?
boostの開発はsubversionに移行しててCVSの方は更新止まってるからね。
0476デフォルトの名無しさん
2008/02/09(土) 20:04:20boosterの変態的嗜好を満足させる言語がほかにあるとは考えにくいがどうだろう。
0477デフォルトの名無しさん
2008/02/10(日) 00:22:550478デフォルトの名無しさん
2008/02/10(日) 01:44:11boots の間違いでした,って言え
0479デフォルトの名無しさん
2008/02/10(日) 08:48:090480デフォルトの名無しさん
2008/02/10(日) 12:00:50Debug版が作られないのですが、こういうものなのでしょうか?
コマンドラインはこうしています。
bjam -sTOOLS=msvc "-sBUILD=<runtime-build>release debug <runtime-link>dynamic <threading>multi" stage
0481デフォルトの名無しさん
2008/02/10(日) 12:04:10Linux で以下のように release かつ dynamic のライブラリをビルドしようとすると
debug と static の組み合わせもビルドして大量のライブラリができるけど,どこが
間違っているでしょうか? Boost は 1.34.0 です。
./bjam --toolset=gcc --prefix=/usr/local -sBUILD="release <runtime-link>dynamic" --with-regex install
436 名前:デフォルトの名無しさん 投稿日:2007/07/17(火) 01:26:03
>>435
Boost.BuildがV2になったんで-sBUILD消滅
<hoge>hageをhoge=hageにしてオプションとして渡せばおk
0482デフォルトの名無しさん
2008/02/10(日) 12:42:17bjam --builddir=builddir-vc9 --build-type=complete --toolset=msvc-9.0 stage >..\build.log
こんな風にしてます。
http://svn.windy.cx/Building/boost-trunk/
をチェックアウトして vc8.bat か vc9.bat をクリックすれば
ビルドできるようになってます。その後 crop.bat をクリックすれば
静的ライブラリ、動的ライブラリ、ヘッダを3つの*.cabファイルに回収します
外部リポジトリとして boost の trunk を指定しているので
チェックアウトにはめちゃくちゃ時間がかかると思います。
http://svn.windy.cx/index.php?boost
いちおうここにWindows用のバイナリをおいてみました。
0483482
2008/02/10(日) 12:44:353つの *.cab ができます。ICU なしでビルドするように
なってますので、必要なら適当にいじってください。
ためしにやってみたけど ICU 見つけてくれなかった(笑
まじめにやれ>俺
0484デフォルトの名無しさん
2008/02/10(日) 22:58:35DLL版があれば十分なので結局こうしました。
bjam --toolset=msvc-9.0 debug release --runtime-link=shared --
link=shared --threading=multi --without-python stage 2>&1 | tee h:\boost.log
0485デフォルトの名無しさん
2008/02/10(日) 23:43:22ソースとか全部追ってるの?
謙遜とかなしに、みんなどれくらいboostを掘り下げてるか教えて欲しい。
0486デフォルトの名無しさん
2008/02/10(日) 23:51:310487デフォルトの名無しさん
2008/02/11(月) 00:02:28さすがにBindとかFunctionとか簡単なラムダ式はそらで書けるけど。
0488デフォルトの名無しさん
2008/02/11(月) 00:20:03Graph勉強しようとしたけどワカンネ
0489デフォルトの名無しさん
2008/02/11(月) 00:23:470490デフォルトの名無しさん
2008/02/11(月) 01:16:27イテレータに比べてどんな事がうれしいんだろう
今のところ「イテレータより簡潔に書ける事がある」
位の理解しか出来てないっす
0491デフォルトの名無しさん
2008/02/11(月) 03:09:39組込配列とか、イテレータのpairを即興で作ったりとか。
俺自身はサンプル見ただけだけど、CStringとかそっちもRange化できるし。
0492デフォルトの名無しさん
2008/02/11(月) 03:50:100493デフォルトの名無しさん
2008/02/11(月) 05:21:180494デフォルトの名無しさん
2008/02/11(月) 06:23:570495デフォルトの名無しさん
2008/02/11(月) 09:40:33xpressive使ってる。
0496デフォルトの名無しさん
2008/02/11(月) 12:21:29regexとモロかぶってるw
しかし、ライブラリのコンパイル不要なのと
static regexが使える意外で、regexと何か
大きな違いがあるのだろうか?
0497デフォルトの名無しさん
2008/02/11(月) 12:26:460498デフォルトの名無しさん
2008/02/11(月) 12:28:02リンク不要といっても演算子によってフル展開されるから
総コンパイル時間は長くなる
0499デフォルトの名無しさん
2008/02/11(月) 15:41:15再帰処理が可能なのも大きい。
普通の正規表現では対応できない入れ子表現なんかも処理できる。
0500デフォルトの名無しさん
2008/02/11(月) 16:50:37VC++ 9とかg++ 4.1.1にBoost 1.34.1, range_exは1.0 (?)ですけど。
#include <istream>
#include <string>
#include <boost/algorithm/string/find.hpp>
#include <boost/range_ex/algorithm.hpp>
void f(std::istream& is)
{
using std::string;
string s;
getline(is, s);
string::iterator it = boost::find(s, ':'); //range_exのやつを呼びたい。
}
0501デフォルトの名無しさん
2008/02/11(月) 17:01:05なるほど。staticなら早いだろうなってのは
予想してたけど、表記のネストも可能になるんだ。
0502デフォルトの名無しさん
2008/02/12(火) 20:48:21python.numpy
をこれから使いまくろうと思ってる
0503デフォルトの名無しさん
2008/02/12(火) 23:42:49exe $(name) : ./$(name).cpp ;
exec $(name)-run : $(name) ;
}
local hogehoge = [ modules.peek : ARGV ] ;
hoge [ MATCH "^--name=(.*)" : $(hogehoge[2]) ] ;
bjam --name="projectname"
で実行時にターゲットを生成するルールhoge
これで使い捨てのコードをeditorのマクロで一発テストできるぞ!!
boost-jamって各種コンパイラ用のプリセットがある点以外はかなり貧弱にみえるけど
そうでもないの?皆使ってる??
0504503
2008/02/13(水) 00:07:56保存して忘れた頃に晒すとかしないでね
>>500
boost/algorithm/string/find.hpp内でusing boost::algorithm::findしているのが原因
ってのはわかるけど
解決策は「どちらか一方だけを使う」ぐらいしか思いつかない
でもまぁ捨てるとしたらrange_exの方かな…
同じようなものにovenがあるし
0505500
2008/02/13(水) 02:20:01boost名前空間へ引きづり出されているとは、知りませんでしたOTL。
問題のところは、std::findへ逃げました。
0506デフォルトの名無しさん
2008/02/15(金) 12:35:34cmakeとどっちが便利なんだろう
cmakeはドキュメントそろってるけどbjamにはない
0507デフォルトの名無しさん
2008/02/15(金) 16:47:320508デフォルトの名無しさん
2008/02/15(金) 16:52:470509デフォルトの名無しさん
2008/02/17(日) 21:20:32boost 1.341をダウンロードしてここを参考にしてコンパイルしたけど、
D:\Documents and Settings\habu\デスクトップ\boost_1_34_1\tools\build\v2/kernel/bootstrap.jam:82: in boost-build
IMPORT error: rule "import" unknown in module "modules."
D:\Documents and Settings\habu\デスクトップ\boost_1_34_1\boost-build.jam:9: in module scope
と言うエラーが出て先に進めません。
根本的に何か間違っているのでしょうか?
仕方ないので今は渋々インクルードファイルだけを使っていますが・・・。
0510デフォルトの名無しさん
2008/02/17(日) 21:22:54Visual C++6.0でWindows XPで動作させています。
0511デフォルトの名無しさん
2008/02/17(日) 21:26:330512デフォルトの名無しさん
2008/02/17(日) 21:32:590513デフォルトの名無しさん
2008/02/17(日) 21:43:10しまった・・・・まあいいや、本名じゃないし。
0514デフォルトの名無しさん
2008/02/18(月) 02:22:56vector<string> vecstr; に適当に値を代入して
trim( vecstr[0] );
だとダメ(trim.hpp:229 で no much function.)で
trim( vecstr.at(0) );
もダメだけど
string tmp =vecstr[0];
trim( tmp );
だと通ってしまう。これらってC++的には同じでないの?
(atは領域外だと例外投げるとかをのぞいて)
0515514
2008/02/18(月) 02:26:570516デフォルトの名無しさん
2008/02/18(月) 08:38:52それ以前に、trim(& vecstr[0])じゃないのか?
0517デフォルトの名無しさん
2008/02/18(月) 11:33:21public:
typedef boost::multi_array<double, 2> MyArray;
ある関数の中で
ある関数(){
int Arraylen
Ararylen=3
MyArray A( boost::extents[4],[Arraylen]);
}
とした場合Aと言う変数がこの関数の中で作られているので
どうグローバル化していいか分かりません。
ちなみに、この例ではArraylenの値がすぐ分かるように
なっていますが、自分のプログラムではこの値はその関数内
でしか分かりません。
0518デフォルトの名無しさん
2008/02/18(月) 12:43:19typedef boost::multi_array<double, 2> ;
MyArray A;
ある関数(){
int Arraylen
Ararylen=3
A( boost::extents[4],[Arraylen]);
}
こうやってもダメでしたね。
0519デフォルトの名無しさん
2008/02/18(月) 12:46:13じゃなくて、こうしたらだめでしたね。
0520デフォルトの名無しさん
2008/02/18(月) 12:47:32間違えました。
typedef boost::multi_array<double, 2> MyArray ;
です。
0521デフォルトの名無しさん
2008/02/18(月) 12:54:540522デフォルトの名無しさん
2008/02/18(月) 14:36:49つっこんでよ。
0523デフォルトの名無しさん
2008/02/18(月) 14:40:21細かい文法 ;が無いとか以外に。
引数で渡したら二度手間だしなるべくやりたくありません。
0524デフォルトの名無しさん
2008/02/18(月) 16:02:41使えないかと。
0525デフォルトの名無しさん
2008/02/18(月) 16:50:14int arraylen;
typedef boost::multi_array<double, 2> MyArray;
MyArray A( boost::extents[4][arraylen]);
こうやってもだめですね。
0526デフォルトの名無しさん
2008/02/18(月) 16:53:00ちなみに、
class CxxDoc : public CDocumen
{
......
等は省略しています。
0527デフォルトの名無しさん
2008/02/18(月) 19:21:13boost::multi_array<double, 2> MyArray;
ある関数(){
int Arraylen;
Ararylen=3;
MyArray ( boost::extents[4],[Arraylen]);
}
これでもダメだったので、
public::
std::vector< boost::array<double,4> > MyArray;
int Arraylen;
Ararylen=3;
MyArray.resize(Arraylen);
}
としました。
もっといいやり方があったらお願いします。
0528デフォルトの名無しさん
2008/02/18(月) 19:22:58デフォルトコンストラクタで空のmulti_arrayを作っておいて、
関数内でmulti_array::resizeを使えばいいんじゃ?
public:
typedef boost::multi_array<double, 2>;
MyArray A;
ある関数() {
int Arraylen;
Ararylen=3;
A.resize(boost::extents[4],[Arraylen]);
}
0529デフォルトの名無しさん
2008/02/18(月) 22:17:38ああ、まさにそれです。
ありがとうございます。
boost自体をまだ勉強しないとダメですね。
0530デフォルトの名無しさん
2008/02/18(月) 22:33:30warningエラーが出ますが、正常に動いています。
気にしなくても大丈夫でしょうか?
また、boostをきちんとビルドして入れると違いますか?
ビルドがうまくいかないもので比較ができません・・・。
0531デフォルトの名無しさん
2008/02/18(月) 22:53:380532デフォルトの名無しさん
2008/02/18(月) 23:03:44現在の最新版(Ver 1.34.1)ではVC6はサポート対象外になった…という噂を聞いたので試していない。
初心者には厳しすぎる事実・・・。
0533デフォルトの名無しさん
2008/02/18(月) 23:08:35VC2005EEか2008EE入れればすむ話なのでは
0534デフォルトの名無しさん
2008/02/18(月) 23:17:26NET Frameworkを入れたくないんです・・・。
一度入れたけど、すごくXPが重くなった。
それにバカだからMFCのAPPWizardが無いとちょっときつい。
0535デフォルトの名無しさん
2008/02/18(月) 23:42:38どうやらデスクトップでコマンドプロンプトを使うと、名前が長すぎるか、
それとも日本語に対応していないか?でうまくコンパイルができないみたい。
C:\にしたら問題有りませんでした。
0536デフォルトの名無しさん
2008/02/18(月) 23:53:51素直にVisual Studio Standard Edition 買った方がいいんじゃない?
2008にするかどうかは悩ましいところだけど。
わざわざ使い物にならないバッドノウハウの世界に突っ込むこともないと思う。
0537デフォルトの名無しさん
2008/02/19(火) 00:18:41わざわざ新しい物買うの?
欲しいのは山々だけどお金が・・・。
Enterprise買ったの失敗だったかな?
MFCに捨てたらほとんどWin32APIの世界で
やらないといけないようなイメージがあって
辛い。
0538デフォルトの名無しさん
2008/02/19(火) 01:00:50VC6自体というかVC6のC++コンパイラな。だめなのは。
というか、コンパイラだけなら今のSDKのやつが使えないかね。
0539デフォルトの名無しさん
2008/02/19(火) 01:05:240540デフォルトの名無しさん
2008/02/19(火) 01:10:12そうですか?
失礼しました。
ところでlibsのなかにいろいろとできているのですが、ライブラリの拡張子が
何か教えてください。
0541デフォルトの名無しさん
2008/02/19(火) 01:11:38ExpressEditionでALTを使ってやっているんですかみなさん?
0542デフォルトの名無しさん
2008/02/19(火) 01:11:58自分から泥沼にはまるつもりなら止めはしないけど。
まあ、アップグレードでも2万円するしね。
そういや、前のバージョンならExpressEditionからもアップグレードできるのね。知らんかった。
0543デフォルトの名無しさん
2008/02/19(火) 01:17:490544デフォルトの名無しさん
2008/02/19(火) 01:43:15NETFRAMEWORKいれるの覚悟でなんとかやってみる。
まずはフリーから。
0545デフォルトの名無しさん
2008/02/19(火) 01:59:300546デフォルトの名無しさん
2008/02/19(火) 02:04:430547デフォルトの名無しさん
2008/02/19(火) 08:16:220548デフォルトの名無しさん
2008/02/19(火) 08:23:30MFCのことはさっさと忘れろ
VC2005の無料版でboost+wxWidgetsで幸せになろうぜ
0549デフォルトの名無しさん
2008/02/19(火) 09:44:050550デフォルトの名無しさん
2008/02/19(火) 11:07:100551デフォルトの名無しさん
2008/02/19(火) 15:02:480552デフォルトの名無しさん
2008/02/19(火) 17:58:190553デフォルトの名無しさん
2008/02/19(火) 18:03:11全然似合わないけど。
0554デフォルトの名無しさん
2008/02/19(火) 18:16:430555デフォルトの名無しさん
2008/02/20(水) 00:37:540556デフォルトの名無しさん
2008/02/20(水) 10:16:18C++/CLIだとC#からダイレクトに橋渡しするより楽なん?
0557デフォルトの名無しさん
2008/02/20(水) 10:17:510558デフォルトの名無しさん
2008/02/20(水) 14:07:07クラスとかC++の機能を使ったライブラリが難なく取り込めたり、
<windows.h>ほか多数のヘッダが存在するから
関数プロトタイプをいちいち調べて書かなくてよかったりする。
0559デフォルトの名無しさん
2008/02/21(木) 00:06:52みんなはどのタイミングのをビルドしてる?
0560デフォルトの名無しさん
2008/02/21(木) 07:52:59あとは気が向いたら。
ビルドしたものは全部残しているから何か挙動がおかしければ
自分のプログラムのユニットテストで引っ掛かるからすぐ戻す。
いままで戻したことは無いけど。
ユニットテストは特にフレームワークを使っている訳じゃなくて
単にアサーションの連続だけど。
0561デフォルトの名無しさん
2008/02/21(木) 14:18:470562デフォルトの名無しさん
2008/02/21(木) 16:42:200563デフォルトの名無しさん
2008/02/21(木) 23:57:33boost::regexpを利用したテストツールらしいのですが、
ttp://www.vector.co.jp/soft/winnt/util/se385428.html
(?<=)が使えなかったので。
このソフト固有の問題ですかね
0564デフォルトの名無しさん
2008/02/22(金) 00:14:290565デフォルトの名無しさん
2008/02/22(金) 01:34:09は1クラスしか対応してない?
class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<IClass>
,boost::enable_shared_from_this<IName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
0566デフォルトの名無しさん
2008/02/22(金) 01:42:23class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<MyName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
T*からU*へ暗黙の変換が可能なら、shared_ptr<T>からshared_ptr<U>への暗黙の変換も可能。
0567デフォルトの名無しさん
2008/02/22(金) 01:42:460568565
2008/02/22(金) 02:09:54bad_weak_ptr飛んでくる
0569デフォルトの名無しさん
2008/02/22(金) 02:20:29get_classやget_nameを呼んでいるなんてことはないよね?
0571デフォルトの名無しさん
2008/02/22(金) 02:40:490572デフォルトの名無しさん
2008/02/22(金) 02:55:000573デフォルトの名無しさん
2008/02/22(金) 02:59:540574デフォルトの名無しさん
2008/02/22(金) 03:05:350575デフォルトの名無しさん
2008/02/22(金) 16:34:29もう消えます・・・
0576デフォルトの名無しさん
2008/02/22(金) 17:10:02消える必要までは感じないが、過去レスを見てから、死ぬがよい。
0577デフォルトの名無しさん
2008/02/22(金) 17:43:18皆さん達者で
0578デフォルトの名無しさん
2008/02/22(金) 18:43:17lambda::bindでstdcallな関数を使いたい場合は方法ってあるんでしょうか。
VC++2008です。
vector<ATL::CString> v; ってのを使ってて大文字小文字無視ソートがしたくて、
sort(v.begin(), v.end(), boost::lambda::bind(lstrcmpi, _1, _2) < 0);
これだとエラー。cdeclなCRT関数使うと動く…
sort(v.begin(), v.end(), boost::lambda::bind(_tcsicmp, _1, _2) < 0);
もちろん大文字小文字を無視しないソートするだけなら
sort(v.begin(), v.end(), _1 < _2);
なんだけど…
0579デフォルトの名無しさん
2008/02/23(土) 17:09:40ちょっと使ってみたら、確かにデフォルトnew、deleteより
全然速かったんだけど、手放せないという人いる?
0580デフォルトの名無しさん
2008/02/23(土) 17:42:29boost::scoped_ptr の変種って便利じゃね?
0581デフォルトの名無しさん
2008/02/23(土) 18:14:53普通にコピーコンストラクタ組むのとあんまり手間変わらんし。
0582デフォルトの名無しさん
2008/02/23(土) 18:17:45>>580は要するに最大sizeが1のvectorだから、設計上の困難はなさそうだけど
0583デフォルトの名無しさん
2008/02/23(土) 18:27:10多種多様な意味付け方があるし、コピーだって同じだよ。
Lispみたいにメモリ管理については無視していい言語でさえ、
同値性は4つの述語関数がある。
>>581はそういうこと言っていると思う。
まあどれか決め撃ちで作ったり、
テンプレートでコンパイル時に選べるのを作るのは面白いと思う。
0584デフォルトの名無しさん
2008/02/23(土) 18:41:17その色んな意味付けから一つ選んでコピーコンストラクタの振る舞いを決めるのがC++のやりかたじゃないか?
実際にコピーを行う側は盲目的にコピーコンストラクタを呼んで、実際にどこまで深くコピーするかはコピーコンストラクタが決める
同様に、C++には標準的な同値性は二種類しかない
オブジェクトとしての同一性と、operator==
0585581
2008/02/23(土) 18:59:10むむむ?なんかハッキリしないなぁ
値の振舞いとの違いは何?boost::scoped_ptrに何を期待してるの?
0586デフォルトの名無しさん
2008/02/23(土) 19:04:580587584
2008/02/23(土) 19:05:26俺は>>580じゃないよ
値との違いは、NULLになり得るとか、resetが使えるとか、コピーなしでswapできるとか、そんなんじゃね
0588581
2008/02/23(土) 19:58:46その程度だと「boost::any使ってみたら?」でお仕舞いだなあ。
多態は使えんけど。
0589デフォルトの名無しさん
2008/02/23(土) 20:02:38...
scoped_ptr<B> p;
...
};
A a;
で,p の指している先のオブジェクトに dereference するには
*(a->p) って書くと思うんですが。a->p まで書いていちいち
前に戻って *( って書くしかないですかね。
左から右に自然と書きたければ a->p.operator*() とか?
0590デフォルトの名無しさん
2008/02/23(土) 20:04:510591デフォルトの名無しさん
2008/02/23(土) 20:14:300592デフォルトの名無しさん
2008/02/23(土) 20:20:280593デフォルトの名無しさん
2008/02/23(土) 20:24:05あ、いや、なんでもないです。。。
0594デフォルトの名無しさん
2008/02/23(土) 20:24:140595デフォルトの名無しさん
2008/02/23(土) 20:34:300596デフォルトの名無しさん
2008/02/23(土) 20:41:29先に -> が働いてから * が働くのか。
0597デフォルトの名無しさん
2008/02/23(土) 22:30:580598デフォルトの名無しさん
2008/02/23(土) 22:35:480599デフォルトの名無しさん
2008/02/23(土) 22:53:07言語ごとに演算子の優先順位が違ったりするし。
0600デフォルトの名無しさん
2008/02/23(土) 22:53:080601デフォルトの名無しさん
2008/02/23(土) 23:12:000602デフォルトの名無しさん
2008/02/23(土) 23:17:070603デフォルトの名無しさん
2008/02/23(土) 23:43:110604デフォルトの名無しさん
2008/02/24(日) 02:10:180605デフォルトの名無しさん
2008/02/24(日) 03:23:540606デフォルトの名無しさん
2008/02/24(日) 06:23:10shared_ptr のノリで書いてるとついつい reset で代入しようとしてしまう
0607デフォルトの名無しさん
2008/02/24(日) 10:45:24単に reset しなけりゃいいじゃんといわれればそれまでだけど.
0608デフォルトの名無しさん
2008/02/24(日) 11:21:250609デフォルトの名無しさん
2008/02/24(日) 11:58:030610デフォルトの名無しさん
2008/02/24(日) 12:14:18std::scoped_ptr<X> pX;
A : pX(new X) {}
}
もうね、コンストラクタの初期化リストで初期化した後は
一切触りたくないわけさ。ところで new X に失敗したら
コンストラクタ中で throw std::bad_alloc() していい?
0611デフォルトの名無しさん
2008/02/24(日) 12:15:410612デフォルトの名無しさん
2008/02/24(日) 12:16:55pXをconstにすればresetできなくなる。swapもできなくなるけど。
0613デフォルトの名無しさん
2008/02/24(日) 12:49:57そ、そうじゃん・・・
なんで今まで気づかなかったんだろ、俺。
0614デフォルトの名無しさん
2008/02/24(日) 18:19:40期待してたのに
0615デフォルトの名無しさん
2008/02/24(日) 18:31:28逆は良く見るんだけど。。。
0616デフォルトの名無しさん
2008/02/24(日) 19:24:550617デフォルトの名無しさん
2008/02/24(日) 19:58:55よく知らんけど、あれって汎用の言語ラッパとしては使えないんだっけ。
SWIGみたいな。でないとあまり Boost でやる意味ないような…
0618デフォルトの名無しさん
2008/02/24(日) 20:02:130619デフォルトの名無しさん
2008/02/24(日) 20:30:51だってプロトタイプが他の言語で C++ とずいぶん毛色が違うから.
まぁ boost 関係なく Mozilla のつくってる JavaScript の
エンジン使えばいいんだけどね.
0620デフォルトの名無しさん
2008/02/24(日) 21:31:500621デフォルトの名無しさん
2008/02/24(日) 22:04:070622デフォルトの名無しさん
2008/02/24(日) 22:09:31Boost.LangBinding というプロジェクトがあるそうだが停滞してるみたいね。
0623デフォルトの名無しさん
2008/02/24(日) 22:30:22そもそもboostはC++べったりだから。
0624デフォルトの名無しさん
2008/02/24(日) 22:34:18当たり前だろ
0625デフォルトの名無しさん
2008/02/24(日) 22:46:14他の言語でどうのこうの言う方がまぬけだよな
0626デフォルトの名無しさん
2008/02/25(月) 02:09:330627デフォルトの名無しさん
2008/02/25(月) 02:18:370628デフォルトの名無しさん
2008/02/25(月) 02:20:49>>615
pythonドキュメントのapi.pdf参照
0629デフォルトの名無しさん
2008/02/25(月) 18:41:59日本語を出力すると文字コードがすべてSJISになってしまっています。
しかし、XMLにはUTF-8との記述があり、正常なXMLにはなっていません。
内部ではwchar_t使っているので、できればUnicodeで処理したいのですが
そのようにするにはどうしたらいいでしょうか?
0630デフォルトの名無しさん
2008/02/25(月) 18:48:14それでいろいろやってみます。
0631デフォルトの名無しさん
2008/02/25(月) 18:58:51http://d.hatena.ne.jp/niitsuma/20080209/1203184397
リンク集ならあるよ
0632デフォルトの名無しさん
2008/02/25(月) 19:15:09見て回ります。
0633デフォルトの名無しさん
2008/03/01(土) 18:20:28http://pc11.2ch.net/test/read.cgi/tech/1139266461/
0634デフォルトの名無しさん
2008/03/01(土) 22:33:360635デフォルトの名無しさん
2008/03/01(土) 22:50:271.35も大分安定してきたみたいだね
0636デフォルトの名無しさん
2008/03/01(土) 23:06:500637デフォルトの名無しさん
2008/03/02(日) 04:00:28n個の要素を受け取るシーケンス
(1, 2, 3, ... n)(1, 2, 3, ... n)(1, 2, 3, ... n) ... (1, 2, 3, ... n)
ってないの?作って良い?
0638デフォルトの名無しさん
2008/03/02(日) 04:53:34-----------------------
//t00.cpp
#include<iostream>
using namespace std;
#include <boost/numeric/ublas/matrix.hpp>
using namespace boost::numeric::ublas;
int main()
{
matrix<int> mat0(2,2);
for(int i=0; i<2; ++i){
for(int j=0; j<2; ++j){
mat0(i,j)=0;
}
}
return 0;
}
-----------------------
をコンパイルするためのMakefileを以下のように書いたのですが、
うまく行きません。
0639デフォルトの名無しさん
2008/03/02(日) 04:54:10-----------------------
CC = g++
OBJS = ./t00.o
OPTION = -I/home/hoge/usr/include/boost-1_34_1/
#OPTION =
PROGRAM = ./t00
.cpp.o :
$(CC) -Wall -g -c $< -o $@
$(PROGRAM) : $(OBJS)
$(CC) $(OBJS) -o $(PROGRAM) $(OPTION)
clean :
rm -f $(OBJS)
-----------------------
boostは、/home/hoge/usr にインストールしました。
gcc バージョン 4.2.2 を使用しています。
g++ t00.cpp -o t00 -I /home/hoge/usr/include/boost-1_34_1/
でコンパイルできたので、同じようにMakefileに書いたつもりなのですが・・・
宜しくお願いします。
0640デフォルトの名無しさん
2008/03/02(日) 05:07:52なんで、どう「うまくいかない」のか書かないの?
何かの実験? 挑戦? 出題? エスパーの発掘?
0641デフォルトの名無しさん
2008/03/02(日) 05:31:330642デフォルトの名無しさん
2008/03/02(日) 12:33:13Civilization4っていうゲームが、boost.python使ってた。
(インストールフォルダに、boost_python-vc71-mt-1_32.dllっていう見覚えのあるDLLが…)
Pythonでキャラクターの動きやUIの一部を書き換えられるようになってて、おかげでユーザーコミュニティが作った拡張が盛り上がってる。
一部は公式の拡張パックに取り入れられたり。
Pythonのおかげというよりは、ユーザーのいじれる部分をうまく切り出してる設計がよかったんだろうけど。
C++のソースも少しだけ公開されてたんだが特にboostばりばりって感じでもなかったな。
どちらかというと昔から見るような大クラス主義のC++。
0643デフォルトの名無しさん
2008/03/02(日) 12:38:50ソースみたいです。
インターネットで公開しているんですか?
0644デフォルトの名無しさん
2008/03/02(日) 12:44:19そういう使い方もできるのか
組み込みというとLuaしか思い浮かばなかったがちょっと調べてみる
0645643
2008/03/02(日) 12:45:47http://www.gamershell.com/download_13312.shtml
0646デフォルトの名無しさん
2008/03/02(日) 13:55:31>>640
言葉足らずですみませんでした。
コンパイルがうまく行きません。
make時のエラーは以下の通りです。
g++ -Wall -g -c t00.cpp -o t00.o
t00.cpp:4:43: error: boost/numeric/ublas/matrix.hpp: そのようなファイルやディレ クトリはありません
t00.cpp:5: error: 'boost' has not been declared
t00.cpp:5: error: 'ublas' is not a namespace-name
t00.cpp:5: error: expected namespace-name before ';' token
t00.cpp: In function 'int main()':
t00.cpp:9: error: 'matrix' was not declared in this scope
t00.cpp:9: error: expected primary-expression before 'int'
t00.cpp:9: error: expected `;' before 'int'
t00.cpp:12: error: 'mat0' was not declared in this scope
make: *** [t00.o] エラー 1
0647デフォルトの名無しさん
2008/03/02(日) 14:06:03--
.cpp.o :
$(CC) -Wall -g -c $< -o $@
--
どう見ても、OPTION渡してないじゃん。
スレ違いだからこれ以上ここで質問するなよ。
0648デフォルトの名無しさん
2008/03/02(日) 14:52:02ありがとうございました。
スレ違い申し訳ないです。
0649デフォルトの名無しさん
2008/03/03(月) 08:19:410650デフォルトの名無しさん
2008/03/03(月) 15:11:45Windowsのコンテナ系コントロール(リストボックス、コンボボックス、
リストビュー類)用のイテレータを定義してみた。
MyListBox box;
...
BOOST_FOREACH(MyCtrlItem<MyListBox>& e, box)
{
if(e.GetSel())
{
...
}
}
こんな風に使えて、かつコントロールの種類に関係なく列挙・操作できる
ようになったけど、こういう使い方ってアリなのかね?
0651デフォルトの名無しさん
2008/03/03(月) 15:21:20どうせなら、MFCを超える勢いで頼む。
0652デフォルトの名無しさん
2008/03/03(月) 15:52:18自分としてはWTLの拡張クラスみたいなもの作って使ってるんでMFCは比較対象外だなぁ。
あとFileFind系とDropFiles系もイテレート可能にしてみた。これも割と便利かも。
0653デフォルトの名無しさん
2008/03/03(月) 16:08:18www.stlsoft.org
0654デフォルトの名無しさん
2008/03/03(月) 16:10:260655デフォルトの名無しさん
2008/03/03(月) 16:17:320656デフォルトの名無しさん
2008/03/03(月) 16:44:400657デフォルトの名無しさん
2008/03/03(月) 17:04:20現在の要素のイテレータ名が取れるならdistance(begin, it)で得られるかと思うんですけども。
0658デフォルトの名無しさん
2008/03/03(月) 18:06:290659デフォルトの名無しさん
2008/03/03(月) 18:39:51それはたいていforeachですべきでない
非効率なことをしようとしている信号
0660デフォルトの名無しさん
2008/03/03(月) 18:44:10一箇所だけインデックスが欲しい、ということはあるな。
ちなみにforeach.hpp読んでみたけどそれっぽいのが見付けられなかった。
range_iteratorかforeach_iteratorあたりが取り出せれば行けるのかな?
0661デフォルトの名無しさん
2008/03/03(月) 20:26:090662デフォルトの名無しさん
2008/03/03(月) 20:33:130663デフォルトの名無しさん
2008/03/03(月) 21:42:14C++/CLIってC++のクラスライブラリって使えたっけ?
0664デフォルトの名無しさん
2008/03/03(月) 22:36:19もちろん。そのためのC++/CLIだ。
ではなくて、C#の打ち間違いだよな。常考。
0665デフォルトの名無しさん
2008/03/04(火) 02:23:36今はこんな感じ
bjam --toolset=msvc-8.0 --prefix=C:\Boost install
0666デフォルトの名無しさん
2008/03/04(火) 02:50:010667デフォルトの名無しさん
2008/03/04(火) 06:10:150668デフォルトの名無しさん
2008/03/04(火) 08:07:120669デフォルトの名無しさん
2008/03/04(火) 09:54:180670デフォルトの名無しさん
2008/03/04(火) 16:34:19boost.pythonはどうだ?
0671デフォルトの名無しさん
2008/03/04(火) 16:41:10とかあったら思わず採用してしまいそうだ
0672デフォルトの名無しさん
2008/03/04(火) 16:42:07は作る気があるらしい
ttp://boost.cvs.sourceforge.net/boost/boost/boost/luabind/
0673デフォルトの名無しさん
2008/03/04(火) 19:18:57…ならんなw
0674デフォルトの名無しさん
2008/03/04(火) 19:20:370675デフォルトの名無しさん
2008/03/04(火) 19:30:19type_traits - is_ref_typeとかadd_handleとか。
function, bind - デリゲートも関数オブジェクトとして使える。デリゲートに変換できる。
0676デフォルトの名無しさん
2008/03/04(火) 20:34:470677デフォルトの名無しさん
2008/03/04(火) 20:38:080678デフォルトの名無しさん
2008/03/04(火) 20:45:050679デフォルトの名無しさん
2008/03/04(火) 20:45:14スパコン向け
0680デフォルトの名無しさん
2008/03/04(火) 21:07:400681デフォルトの名無しさん
2008/03/04(火) 21:08:500682デフォルトの名無しさん
2008/03/04(火) 21:09:460683デフォルトの名無しさん
2008/03/04(火) 21:16:100684デフォルトの名無しさん
2008/03/04(火) 21:55:510685デフォルトの名無しさん
2008/03/04(火) 22:03:110686デフォルトの名無しさん
2008/03/04(火) 23:04:570687デフォルトの名無しさん
2008/03/04(火) 23:31:590688デフォルトの名無しさん
2008/03/04(火) 23:34:160689デフォルトの名無しさん
2008/03/05(水) 00:01:070690デフォルトの名無しさん
2008/03/05(水) 00:02:42うまい、座布団1枚。
0691デフォルトの名無しさん
2008/03/05(水) 01:19:550692デフォルトの名無しさん
2008/03/05(水) 11:08:530693デフォルトの名無しさん
2008/03/05(水) 11:52:560694デフォルトの名無しさん
2008/03/05(水) 12:22:550695デフォルトの名無しさん
2008/03/05(水) 13:02:42を誰かつくってほしい
正直これでは機能不足
http://homepage.mac.com/naoki.koguro/prog/c-wrapper/index-j.html
0696デフォルトの名無しさん
2008/03/05(水) 21:15:28機能的にはlibxmlで足りているのだけど、標準化されて欲しい。
0697デフォルトの名無しさん
2008/03/05(水) 23:26:32みんなXMLの処理には何使ってんの?
expatは使ってる?
バリデーションとかには?
スレ違いか。
0698デフォルトの名無しさん
2008/03/06(木) 16:40:00俺は用途次第、としか言いようがないな。
例えばゲームの敵情報やマップ情報みたいに実行中不変でそれなりに量があるものはexpatでSAXだし、
プログラムのコンフィグみたいに実行中可変で保存の必要があるようなものは
expatでパースする簡単なDOMみたいな独自ライブラリを使ってる。
Xercesはなんか巨大すぎるんだよな。 文字型とか文字列型とかリスト型とか全部Xerces独自のだし。
boost.xml的なものが欲しいっていうのは激しく同意。
SAX的なものはexpatで十分に事足りるから、C++に親和性の高いDOM的なものが欲しい。 あとpull-parser。
現状DOMってどう見てもJava用に設計されました、って感じでC++の実装は無理矢理感が漂うし。
0699デフォルトの名無しさん
2008/03/06(木) 18:02:130700デフォルトの名無しさん
2008/03/06(木) 22:29:16個人的にはspiritもテンプレートで提供しているから使いにくいと感じる。
0701デフォルトの名無しさん
2008/03/07(金) 00:03:490702デフォルトの名無しさん
2008/03/07(金) 03:06:150703デフォルトの名無しさん
2008/03/07(金) 03:09:290704デフォルトの名無しさん
2008/03/07(金) 04:50:330705デフォルトの名無しさん
2008/03/07(金) 06:48:40地獄の構文解析がこんな簡単に…
0706デフォルトの名無しさん
2008/03/07(金) 08:04:54PCの時代で本当によかった、これがCPUタイム課金時代だったら涙目
0707デフォルトの名無しさん
2008/03/07(金) 10:00:230708デフォルトの名無しさん
2008/03/07(金) 11:01:240709デフォルトの名無しさん
2008/03/07(金) 23:18:56lemonとか使ったほうがずっと簡単。
0710デフォルトの名無しさん
2008/03/07(金) 23:55:09マルチスレッド環境でboost::random使いたいんだけど、
スレッドごとに用意するべきなのかな。
0711デフォルトの名無しさん
2008/03/08(土) 08:53:33LISP(大文字w)のマクロで同じことやった人ならいるかも。
0712デフォルトの名無しさん
2008/03/08(土) 12:07:23Templateは元々Cの変態記号的な演算子をオーバーロードできるから、
Common Lispだとread tableまで駆使しているのに相当するけど。
0713デフォルトの名無しさん
2008/03/09(日) 16:30:55ところで boost python をインストールするためには何を
準備しておかなければならないのでしょうか?
Linux だと apt-get とか yum でサクッと入るのでしょうけど、
Windows だとそもそも python 処理系をあらかじめ入れておかねば
ならんのでしょうか?当たり前だろ!といわれるかもしれませんが、
Windows での python 処理系って cygwin のやつしか使ったことが
ないもんで・・・
0714デフォルトの名無しさん
2008/03/09(日) 16:44:240715デフォルトの名無しさん
2008/03/09(日) 16:50:57おれも書こうとしたが、真剣に質問してたら悪いなと思って自重したんだ。
0716デフォルトの名無しさん
2008/03/09(日) 16:56:26ActivePython とか日本のユーザー会のPythonとかもあって、
boost.python ビルドするのに相性のいいのはどれよ、
てかもしかしてヘッダだけでいいんかね?
ってことを聞きたかったんだ!
0717デフォルトの名無しさん
2008/03/09(日) 20:55:18日本のではなく本家のサイトがおすすめ
0718デフォルトの名無しさん
2008/03/10(月) 15:22:200719デフォルトの名無しさん
2008/03/10(月) 15:24:49boost本家ではないがboost使ったluabindってのがある
0720デフォルトの名無しさん
2008/03/10(月) 15:30:230721デフォルトの名無しさん
2008/03/12(水) 01:05:490722デフォルトの名無しさん
2008/03/12(水) 01:22:04q2chというりなざう用ブラウザの派生版
0723デフォルトの名無しさん
2008/03/12(水) 11:20:240724デフォルトの名無しさん
2008/03/12(水) 12:33:030725デフォルトの名無しさん
2008/03/12(水) 12:47:280726デフォルトの名無しさん
2008/03/12(水) 12:51:000727デフォルトの名無しさん
2008/03/12(水) 12:55:590728デフォルトの名無しさん
2008/03/12(水) 13:05:44SSL周りで必要なファイルが多いだけでは
0729デフォルトの名無しさん
2008/03/12(水) 16:04:14cmakeの日本語解説がなかったので作りました
0730デフォルトの名無しさん
2008/03/12(水) 16:31:020731デフォルトの名無しさん
2008/03/12(水) 19:54:410732デフォルトの名無しさん
2008/03/13(木) 00:38:58でも宣伝乙
0733デフォルトの名無しさん
2008/03/13(木) 04:43:040734デフォルトの名無しさん
2008/03/13(木) 06:00:100735デフォルトの名無しさん
2008/03/13(木) 06:00:240736デフォルトの名無しさん
2008/03/13(木) 08:11:040737デフォルトの名無しさん
2008/03/13(木) 11:12:100738デフォルトの名無しさん
2008/03/13(木) 20:36:210739デフォルトの名無しさん
2008/03/14(金) 00:19:500740デフォルトの名無しさん
2008/03/14(金) 00:23:060741デフォルトの名無しさん
2008/03/14(金) 01:13:570742デフォルトの名無しさん
2008/03/14(金) 13:58:530743デフォルトの名無しさん
2008/03/14(金) 14:54:03だからといってprogress_displayが使えるとかそういう話でもないがな。
0744progress_display
2008/03/14(金) 15:25:190745デフォルトの名無しさん
2008/03/14(金) 16:33:230746デフォルトの名無しさん
2008/03/14(金) 17:04:30決してクラスまで面倒見てくれる訳じゃ無いよね?
0747デフォルトの名無しさん
2008/03/14(金) 17:25:570748progress_display
2008/03/14(金) 22:21:340749デフォルトの名無しさん
2008/03/14(金) 22:24:350750progress_display
2008/03/14(金) 22:27:290751デフォルトの名無しさん
2008/03/15(土) 14:04:49C++0xならコンテナの要件を満たした実装ができそうなうな気がする。
スレ違ったすまん
0752progress_display
2008/03/15(土) 14:18:330753デフォルトの名無しさん
2008/03/15(土) 14:26:12フサフサはdeque<bool>でいいと言ってるだろ。
0754デフォルトの名無しさん
2008/03/15(土) 14:47:15あらゆるパフォーマンスでvectorよりも平均的に優れているdeque。
0755デフォルトの名無しさん
2008/03/15(土) 14:48:490756デフォルトの名無しさん
2008/03/15(土) 14:52:090757デフォルトの名無しさん
2008/03/15(土) 14:58:36デックと言われたとき軽くショック受けて3日ほど寝込んだわ。
0758デフォルトの名無しさん
2008/03/15(土) 14:59:32ディーク
0759デフォルトの名無しさん
2008/03/15(土) 15:13:47でも/dek/と発音しなくちゃいけない決まりは無い
0760デフォルトの名無しさん
2008/03/15(土) 22:30:16つい先日、どっかのスレにリンク貼られてたね。
でも「あらゆるパフォーマンスで」っていう話ではなく、
「皆が思っている以上にdequeが勝っている項目が多い(から、dequeを軽視するのはやめよう)」
という話だったかと。
0761デフォルトの名無しさん
2008/03/15(土) 22:32:460762デフォルトの名無しさん
2008/03/15(土) 22:34:17「要素の連続性保証がいらないならdequeにしとけ〜」じゃなかった?
0763デフォルトの名無しさん
2008/03/15(土) 22:34:57メモリの最確保が起こってもコピーが発生しないからな。
あれは凄い利点だと思う。
0764デフォルトの名無しさん
2008/03/15(土) 22:47:110765デフォルトの名無しさん
2008/03/15(土) 22:47:520766デフォルトの名無しさん
2008/03/15(土) 22:59:45両端キューなんだからスタック・キューの実装に不向きなわけが無い
0767デフォルトの名無しさん
2008/03/15(土) 23:03:270768デフォルトの名無しさん
2008/03/15(土) 23:10:40ウフフフ
0769デフォルトの名無しさん
2008/03/15(土) 23:10:56vectorに比べるとメモリ効率も悪い。
>>763
間に挿入してもコピーは発生しない。
0770デフォルトの名無しさん
2008/03/15(土) 23:15:43間に挿入してコピー発生しなかったらそれはリストなんだぜ。
deque の挿入で O(1) なのは両端の挿入だけ。
0771デフォルトの名無しさん
2008/03/15(土) 23:23:190772デフォルトの名無しさん
2008/03/15(土) 23:26:54横浜優勝スレの人?
>757
P.J.Plaugerさんによると、デックかディーキュー(ディーイーキュー)と読めだそうな。
0773デフォルトの名無しさん
2008/03/15(土) 23:28:14ランダムアクセスがかなり複雑になりそうな・・・。
0774デフォルトの名無しさん
2008/03/15(土) 23:30:520775デフォルトの名無しさん
2008/03/15(土) 23:34:170776デフォルトの名無しさん
2008/03/15(土) 23:35:00まあ、サイズ取得くらいは O(1) で可能だけども。
0777デフォルトの名無しさん
2008/03/16(日) 00:07:32map
0778デフォルトの名無しさん
2008/03/16(日) 00:08:360779デフォルトの名無しさん
2008/03/16(日) 01:08:38matrixの要素をすべて列挙したいのですがどのようにすればいいですか?
できるだけシンプルな方法が知りたいです。
0780デフォルトの名無しさん
2008/03/16(日) 02:04:471つ前のSTLスレにあった。
http://www.codeproject.com/KB/stl/vector_vs_deque.aspx
0781デフォルトの名無しさん
2008/03/16(日) 02:22:51ublas::matrix<T> m;
for (std::size_t i = 0; i < m.size1(); ++i) {
for (std::size_t j = 0; j < m.size2(); ++j) {
m(i, j);
}
}
0782デフォルトの名無しさん
2008/03/16(日) 02:28:42やはりインデックスを使わないと無理でしょうか。
述語Pの成り立つ要素をカウントしたくて
int c = std::count_if( [first, last] , P);
みたく1行で書きたかったのですが。
0783782
2008/03/16(日) 02:30:40じゃなくて
[first, last)
です。すみません
0784デフォルトの名無しさん
2008/03/16(日) 02:48:480785デフォルトの名無しさん
2008/03/16(日) 03:37:48イテレータを作ってみたら結果的には長くなってしまいましたが望み通り動きになりました。
0786デフォルトの名無しさん
2008/03/16(日) 08:21:41間に挿入してもコピーは発生しない。
規格では、こんなこと言ってない。どこに挿入しようが
メモリのreallocationは起こりうるというふうに考えて
おかないといけない。
0787デフォルトの名無しさん
2008/03/16(日) 10:24:54定数時間だったと記憶していたが、俺の記憶違いか?
0788デフォルトの名無しさん
2008/03/16(日) 10:27:190789デフォルトの名無しさん
2008/03/16(日) 10:30:54dequeはdouble ended queueのことだから、
deque一般には成立しない。
0790デフォルトの名無しさん
2008/03/16(日) 10:32:54>>769 とか。
>>789
ここまでの deque の話って std::deque の話じゃなかったの?
0791788
2008/03/16(日) 10:34:28すまんこ
0792デフォルトの名無しさん
2008/03/16(日) 10:35:060793デフォルトの名無しさん
2008/03/16(日) 10:38:33double linked listで実装されたdequeにそのまま使えるから、
dequeの別の実装はないだろうね。
Javaはdequeはinterfaceで、
list版とarray版の両方の実装がある。
0794デフォルトの名無しさん
2008/03/16(日) 11:41:32途中への挿入・削除処理の高速性が要求される
std::deque はその両方の要求を満たしてるの?
0795デフォルトの名無しさん
2008/03/16(日) 11:57:57途中への挿入・削除はノードベースコンテナ(std::list std::setなど)よりは遅い。
ランダムアクセスは、一般的にメモリの構造上vectorよりはアクセス速度は落ちる。
でも実害ないなら無視すればよろし。
0796デフォルトの名無しさん
2008/03/16(日) 12:16:09いきなり500行目にジャンプ!とかってあんましないような。
頻繁に行われるであろう検索・置換もシーケンシャルだし。
0797デフォルトの名無しさん
2008/03/16(日) 12:21:26コンパイルエラーを直すときとか
0798デフォルトの名無しさん
2008/03/16(日) 12:29:50std::deque を使うとランダムアクセスは定数時間だけど、削除とかは線形時間。
例えば1万行のテキストの空行を全て削除、とかいう操作をやるともっさりしそう。(最悪で1万の2乗くらいのオーダー)
std::list の方がいいのでは。
0799デフォルトの名無しさん
2008/03/16(日) 12:30:49・行指向エディタだと、行のダブル・リンクト・リスト
・ギャップ・バッファ
が古典的だね。
>>797
ギャップ・バッファ方式(e.g. Emacs)でもそんな遅くないでしょ。
こっちの方が改行コードを含めた正規表現検索とかやりやすいし。
0800デフォルトの名無しさん
2008/03/16(日) 13:24:03なかなかいい勉強になった。
0801デフォルトの名無しさん
2008/03/16(日) 14:19:070802デフォルトの名無しさん
2008/03/16(日) 14:48:32ていうかboost関係ないな
0803デフォルトの名無しさん
2008/03/16(日) 14:57:260804デフォルトの名無しさん
2008/03/16(日) 15:02:59俺も以前ショボイながら作ったけど、ギャップバッファの実装そのものより、
STLコンテナの要件を満たす条件を調べるのに費やした時間の方が長かったという・・・
0805デフォルトの名無しさん
2008/03/16(日) 15:07:35とりあえず問題なくね?
0806デフォルトの名無しさん
2008/03/16(日) 15:33:110807デフォルトの名無しさん
2008/03/16(日) 17:26:46メモリの reallocation とコピーは別問題だよ。
>>790
deque のランダムアクセスは O(M) (M は内部バッファの分割数)。
O(N) よりははるかにマシだが、O(1) ではない。
0808デフォルトの名無しさん
2008/03/16(日) 17:29:10何見てしゃべってんの?規格じゃないよね?
0809デフォルトの名無しさん
2008/03/16(日) 17:31:12具体的に実装すると大抵の場合そうなっちゃうという話。
0810デフォルトの名無しさん
2008/03/16(日) 17:36:32途中への挿入で複数要素のコピーが発生する実装も、
ランダムアクセスが O(1) な実装も、規格の範囲で在りうるんだから、
何の前提も書かずに言い切らないでほしい。
0811デフォルトの名無しさん
2008/03/16(日) 17:38:19別問題じゃないよ。
std::dequeは、挿入・削除は対象以外の全てのリファレンス、ポインタ、イテレーター
を無効にする。リファレンスとポインタは先頭、末尾挿入の場合は有効のまま。
Josuttis本にはこう書いてある。
ということは、reallocationによって要素は移動されることもあるというわけでしょ。
これは初期化あるいは代入は発生しうると考えておくべきということ。
Josuttis本が間違いなら知らん。
0812デフォルトの名無しさん
2008/03/16(日) 17:38:48vectorってsse使ってくれないの?
FC8+Intel v10です。
0813デフォルトの名無しさん
2008/03/16(日) 17:39:340814デフォルトの名無しさん
2008/03/16(日) 17:40:200815デフォルトの名無しさん
2008/03/16(日) 17:40:23挿入・削除されたから無効になるんだろ。
reallocation が起こらなくても無効になるんだから、
reallocation とは無関係。
0816デフォルトの名無しさん
2008/03/16(日) 17:40:25お前はO(N)なソートでも使ってろ。
0817デフォルトの名無しさん
2008/03/16(日) 17:42:28deque のランダムアクセスは償却定数時間じゃないと規格の要件を満たさない。
「内部バッファの分割数」ってのがはっきりしないけど、「O(1) ではない」と言い切れて
しまうような実装は deque とは言えないんじゃないの?
0818デフォルトの名無しさん
2008/03/16(日) 17:44:53挿入もしないのに勝手にreallocationされんの?
新しい要素のために領域が必要だからreallocationされるんじゃないの?
0819デフォルトの名無しさん
2008/03/16(日) 17:45:14規格には定数って書いてあるよ
0820デフォルトの名無しさん
2008/03/16(日) 17:49:23shrinkはされる可能性はあるが、reallocationは必要になったときのみだ。それは
必要な領域拡張のとき。要素の挿入もその可能性は常にある。だから関係はある。
0821デフォルトの名無しさん
2008/03/16(日) 17:49:38ああ、よく考えたら定数で実装できそうだな。
0822デフォルトの名無しさん
2008/03/16(日) 17:49:42あれ?そうなの?
"Table 68 - Optional sequence operations" に載ってて、こいつらみんなまとめて
償却定数時間だから、 deque の operator [] もそうだと思ったんだけど。
別のところに書いてあるのか?
0823デフォルトの名無しさん
2008/03/16(日) 17:52:040824デフォルトの名無しさん
2008/03/16(日) 17:57:54ごめん、俺の勘違い
0825デフォルトの名無しさん
2008/03/16(日) 18:02:03先頭と最後の要素へのアクセス速度は同じ。
それ以外には間接レベルが違うから差異があるよ。
Big O記法はよく知らんが、少なくともlogやn^2ではない。
Data Structure AND Algorithm In C++が分かりやすい。
0826デフォルトの名無しさん
2008/03/16(日) 18:08:17【C++】STL(Standard Template Library)相談室 9
http://pc11.2ch.net/test/read.cgi/tech/1204045410/
0827デフォルトの名無しさん
2008/03/16(日) 18:08:56>>>815
端への追加は O(1) で行わないといけないので、
端への追加でメモリを最確保する必要があったとしても、
それまでのデータを新しいメモリにコピーするようなことは行えない。
データの全コピーは O(N) だから。
この場合、メモリの最確保が行われるが、コピーは発生しない。でしょ?
0828デフォルトの名無しさん
2008/03/16(日) 18:11:370829デフォルトの名無しさん
2008/03/16(日) 18:15:09端はわかるけど、中間への挿入はどう考えればよい?
コピーが発生しないなら、挿入時に挿入要素以外の全イテレータは無効になる理由が
わからん。
0830デフォルトの名無しさん
2008/03/16(日) 18:17:260831デフォルトの名無しさん
2008/03/16(日) 18:21:440832デフォルトの名無しさん
2008/03/16(日) 18:22:58中間への挿入はコピーが発生するに決まってるだろ。
0833デフォルトの名無しさん
2008/03/16(日) 18:23:26使えばいいだろ。たいがい問題ない。
考えて見ればBoostスレじゃないか。おしまい。
0834デフォルトの名無しさん
2008/03/16(日) 18:24:39でしょ。そのときは新しいメモリの割り当てもあり得るじゃん。
ウヒヒ。
0835デフォルトの名無しさん
2008/03/16(日) 18:25:45内部で確保しておいたバッファを越えていなければ
メモリの割当は起きないだろ。
0836デフォルトの名無しさん
2008/03/16(日) 18:26:410837デフォルトの名無しさん
2008/03/16(日) 18:27:42それともコピーに原因があるのか、
それが分かっていない、とそう言ってる。
イテレータが失効するのはコピーが発生する可能性があるから。
reallocation がその時たまたま起こるかもしれないが、それは直接の原因じゃない。
0838デフォルトの名無しさん
2008/03/16(日) 18:47:220839デフォルトの名無しさん
2008/03/16(日) 18:54:590840デフォルトの名無しさん
2008/03/16(日) 19:03:31よく読んでね。
あり得るって書いてるでしょ。
0841デフォルトの名無しさん
2008/03/16(日) 19:28:40http://pc11.2ch.net/test/read.cgi/tech/1204045410/
0842デフォルトの名無しさん
2008/03/16(日) 19:59:28カワイソス
0843デフォルトの名無しさん
2008/03/16(日) 19:59:36100% 起こることではないってことだろ?
だからこその >>837 だ。
0844デフォルトの名無しさん
2008/03/16(日) 20:45:32ライブラリをリンクするのめんどくさいし+デカくなるんだが。
0845デフォルトの名無しさん
2008/03/16(日) 22:08:130846デフォルトの名無しさん
2008/03/16(日) 22:10:150847デフォルトの名無しさん
2008/03/16(日) 22:15:160848デフォルトの名無しさん
2008/03/16(日) 22:28:18ああいうものこそフリー・オープンであるべきなのに
0849デフォルトの名無しさん
2008/03/16(日) 22:33:31まあ、ネット上で見る分にはタダだから俺は気にはしてないが。
それよりも、金払って買っても
C の規格書とか画像データの PDF で検索できないとかいう話らしい点は
どうかと思う。
0850デフォルトの名無しさん
2008/03/16(日) 22:39:540851デフォルトの名無しさん
2008/03/16(日) 23:26:25いいじゃないか、たまには。
0852デフォルトの名無しさん
2008/03/16(日) 23:33:062度も3度も誘導されておいて、移動しないのはアホ。
ふさわしい場で議論をしようという気がない腑抜け。
0853デフォルトの名無しさん
2008/03/17(月) 00:10:35移動しないあたりからよくわかる。
ちょっとおいたのすぎた雑談だよ。
0854デフォルトの名無しさん
2008/03/17(月) 02:46:470855デフォルトの名無しさん
2008/03/17(月) 05:01:120856デフォルトの名無しさん
2008/03/17(月) 05:02:050857デフォルトの名無しさん
2008/03/19(水) 11:39:07なんか心当たりある?最近までビルドできていたので boost.test まわりで
最近何か変化があったか見てみたんだけど何もなかった.とりあえず
bjam --builddir=builddir-vc9 --build-type=complete
--toolset=msvc-9.0 --without-test stage 1>..\build.log
みたいにして --without-test してビルドしてるけど,気持ち悪い.
0858デフォルトの名無しさん
2008/03/19(水) 11:48:26--toolset=msvc-9.0 1>..\build.log
ちなみにこんな風に --build-type=minimal (つまりデフォルト)
だとビルドできる.なんかターゲットが重複しているとか・・
正確なエラーメッセージを後で貼ります.
0859857
2008/03/19(水) 11:55:12in virtual-target.register-actual-name from module virtual-target
error: Duplicate name of actual target
なので,
http://lists.boost.org/boost-build/2007/02/16143.php
と同じような感じ.
0860857
2008/03/19(水) 11:57:05http://www.boost.org/boost-build2/doc/html/bbv2/faq/s02.html
これか?これなのか?
0861デフォルトの名無しさん
2008/03/19(水) 12:40:59_, ._
( ・ω・) now shibakaring ...
○={=}〇,
|:::::::::\, ', ´
、、、、し 、、、(((.@)WWWWWWWWWWWWWWWWWWWWWWW (26%)
0862デフォルトの名無しさん
2008/03/19(水) 12:43:000863857
2008/03/19(水) 12:59:28http://pastebin.windy.cx/?page=view&id=1205899359
libboost_test_exec_monitor-vc90-mt-gd-1_35.lib
をビルドするにあたってvirtual targetが重複している
ってことらしいんだけど・・
0864857
2008/03/19(水) 14:27:50いままで trunk でもとらぶったこと無かったから
RC のタグが打たれてたことに気づかなかった。
0865デフォルトの名無しさん
2008/03/19(水) 18:35:550866865
2008/03/19(水) 19:52:190867857
2008/03/19(水) 19:53:06http://svn.windy.cx/index.php?boost
0868デフォルトの名無しさん
2008/03/19(水) 21:42:14IDがあったところでプログラミング自体に有益な議論にはならないからだろ。
理数系板はID無し多いね。
0869デフォルトの名無しさん
2008/03/19(水) 21:46:14質問者がだれか分かりやすいから
ID 欲しいというときはある。
0870デフォルトの名無しさん
2008/03/19(水) 23:12:57/.Jでこんなん見っけた。オススメ。
ttp://www.blue.sky.or.jp/grass/doc_ja.html
0871デフォルトの名無しさん
2008/03/19(水) 23:25:100872デフォルトの名無しさん
2008/03/20(木) 07:09:37GJ
0873デフォルトの名無しさん
2008/03/20(木) 09:28:01Pythonで実現することに決定しました。
0874デフォルトの名無しさん
2008/03/20(木) 17:45:05Visual Studio 2005を用いて
プロジェクトの種類を「CLR」、「Windows フォームアプリケーション」
として新規作成したフォームにボタンを一つ設置し、以下のソースを記述し、
vector<wstring> vec;
vec.push_back(L"Hello");
double pi = 3;
wofstream file(L"save.txt");
text_woarchive oa(file);
oa << (const vector<wstring>& ) vec;
oa << pi;
実行したところ、
oa << (const vector<wstring>& ) vec;
の箇所で
「Debug Assertion Failed!
Program:c\Documents and Settings\unchi65sai\archivetest\Debug\archivetest.exe
File: dbgheap.c
Line: 1473
Expression: _CrtIsVaildHeapPointer(pUserData) 」
とダイアログが表示されて停止してしまいます。
ちなみに、
oa << (const vector<wstring>& ) vec;
の部分をコメント化すると、正常に処理が行われ、テキストファイルが生成されます。
この現象は、プロジェクトのプロパティを何か変更することで回避できるのでしょうか?
あるいは、CLRでは、 stringの書き出しできないものなのでしょうか?
よろしくお願いします。
0875デフォルトの名無しさん
2008/03/20(木) 17:52:500876デフォルトの名無しさん
2008/03/20(木) 18:20:08C++/CLIでunmanagedなコードを混在させてboostを使うとそうなる。
アプリケーションのエントリポイントを次のようにすると直ると思う。
?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z
ちなみにこの問題はVS2008では直っているらしい。
0877874
2008/03/20(木) 19:17:41プロジェクトのプロパティを開き、
「構成プロパティ」→「リンカ」→「詳細」→「エントリポイント」
の設定を変更したところ、正常に機能するようになりました。
情報をありがとうございました。
0878デフォルトの名無しさん
2008/03/21(金) 13:56:04配布に際して boost python 自身の DLL は一緒に配布しなければ
ならないのは当然として、Python バイナリパッケージ由来のファイル
も何か配布しなければならないのでしょうか?
0879878
2008/03/21(金) 14:00:43C:\WINDOWS\system32\python25.dll
も必要なようです。
しかし!驚愕の事実!
python25.dll 自体が Visual C++ 7.1 のランタイムを要求している!
自分は Visual C++ 8 を使っているのです。異なるバージョンの
ランタイムを要求する DLL たちをあわせて使っていいのかなぁ。
今までもサードパーティのライブラリをそういうこと気にせず
使ってたけど、動いていたし、まぁいいか。いいことにします。
作ってるアプリも売り物じゃないし。
0880デフォルトの名無しさん
2008/03/21(金) 15:21:480881デフォルトの名無しさん
2008/03/21(金) 20:38:360882デフォルトの名無しさん
2008/03/21(金) 23:15:47好きになったぜ>ぶーすと
0883デフォルトの名無しさん
2008/03/22(土) 00:13:10POCO (C++ Portable Components, http://pocoproject.org/)
0884デフォルトの名無しさん
2008/03/22(土) 00:49:54DLLというのはもともと、DLLを使う側に依存しないようになってるので、
DLL「A」とDLL「B」が違うランタイムを使っていてもぜんぜんOKです。
今回は例外として、普通はアプリからどのランタイムを使っているのかなんて分からないし、
気にするべきでもないと思います。
(考慮すべきことはマルチスレッドに対応してるかどうかくらい)
ランタイムが違えば、必要なDLLが増えるということはあるけど、
ランタイムが違うことで動かなくなることは多分無いです。
もし動かなかったら、それは別の問題が発生している可能性高し。
> Python バイナリパッケージ由来のファイル
> も何か配布しなければならないのでしょうか?
Pythonがインストールされている環境を前提にするならば配布する必要は無いです。
そうでないなら配布する必要があります。
0885デフォルトの名無しさん
2008/03/22(土) 10:06:27ふむ、そうなのか。ミューテックスとかは
OSで管理するものだから問題ないんだな。
でもマルチスレッド考えるとなんか副作用が
ありそうなんで、暇なときに調べてみる
0886デフォルトの名無しさん
2008/03/22(土) 10:33:000887デフォルトの名無しさん
2008/03/22(土) 10:38:150888デフォルトの名無しさん
2008/03/22(土) 20:13:27みたいなことをlambdaやbindを使ってやる方法ありますか?
0889デフォルトの名無しさん
2008/03/22(土) 20:23:24if_( _1 % 2 == 0 )[
cout << _1 << "は偶数\n"
].else_[
cout << _1 << "は奇数\n"
]
);
こんな感じで書けます。
出典 ttp://www.kmonos.net/alang/boost/classes/lambda.html
0890デフォルトの名無しさん
2008/03/22(土) 20:25:230891デフォルトの名無しさん
2008/03/22(土) 20:26:47std::sort(v.begin(), v.end(), bind(&Class::Func, _1) > bind(&Class::Func, _2));
0893オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 21:04:51OSうんぬんより、mutexは別スレッドからlock/unlock期間中のアクセスを待機させるから安全か
どうかとえば、使用は慎重を期するよ
別プロセスは関係ないが…
共有メモリやらメモリマップドファイルは別だけど
セマフォ、ミューテックスの使用は本当に必要であるかを加味した方が良さそうに思う
boost::thread::mutex(だっけ?) はでも便利だね
スコープから抜ければ勝手にデストラクタがunlockしてくれるのも楽でよい
自作してもauto変数なら当然かも試練、スマソw
>>886
悪の枢軸たるWindowsもそう考えると良いとこあるのかね
でもさ、結局printfなんかもさMSVCRT.dllなんかがラップしてんだよね
メイクファイルでビルドしようとしてリンクエラーで苦戦したことがよくあったなあ
>>888
>>891が答え書いてるけど、bindは便利だよな!
0894デフォルトの名無しさん
2008/03/23(日) 22:06:130895デフォルトの名無しさん
2008/03/23(日) 22:11:55なんで雑談してんの?
411 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/22(土) 23:17:29
相談が無いからだろう
相談できる雰囲気でもないがね
412 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/23(日) 00:44:28
何で雑談しているのかを聞く それも雑談なんじゃね?
自分の胸に聞くのがはえーんじゃね?
415 名前:オガちゃん萌え ◆tyvkWCNtzY [sage] 投稿日:2008/03/23(日) 20:37:34
>>410-412
まぁ固いこと言わないでマターリやろうよ
こんな事書く人間に何を言っても無駄かと
NGが得策
0896オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 22:25:51スレ違いってほど外れた話題はしてないつもりだが?
俺叩く暇あるなら、なんかboostについて書いてくれ
0897デフォルトの名無しさん
2008/03/23(日) 22:31:180898デフォルトの名無しさん
2008/03/23(日) 22:39:32時々コンパイラが音を上げるのが困る
0899オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 23:42:11STLスレで誰か書いていたが、EffectiveSTLにSTLのエラーは読むなってのがあって、実際に本棚に
埋もれたEffectiveSTL読んだらconstキャスト忘れとかのエラーを理解しろみたいなのが書いてあったよ
SingletonとAbstractFactoryパターンをよく使うんだが、AbstractFactoryをテンプレートにして
中にmap<int, string>かなんかやったときにwarningが出まくったことあったw
それこそ、この内容はSTLか。
boost一番よく使うのはツールだな
tokenizer、regex、bindなんかはもう無しじゃ生きていけない
0900デフォルトの名無しさん
2008/03/24(月) 00:33:17C++からその実装されたクラスをnewしてPythonに渡す。
といったような事がやりたいんですが、boost.pythonで出来ますか?
参考書籍、およびサイトなども教えてもらえたらありがたいです。
0901デフォルトの名無しさん
2008/03/24(月) 07:41:37俺はPython使い始めたばっかりで一方向の使い方しかしてないけど興味ある。
できたら教えて欲しいな。
0902デフォルトの名無しさん
2008/03/24(月) 10:14:150903デフォルトの名無しさん
2008/03/24(月) 13:56:39ドトネトは断る!
って、うそ。 C++/CLI は使ってるし。
とはいえ、非UNIXで動かしたいプログラムに
多いんだよな、Boost.Python 使いたくなるケース。
IronPython + mono でやれって?断る!
0904デフォルトの名無しさん
2008/03/24(月) 13:59:17ランタイムDLL類不要になるし。
0905デフォルトの名無しさん
2008/03/24(月) 15:53:59Lua + LuaBindとかSquirrel + SqPlusとかも考えましたが、
Boost.Pythonで無理ならSquirrelにするかな。
ランタイムDLLはオプションをdefineしてやればいらなくなると
どっかで読んだ覚えがあるんですが読み間違いですかね。
0906デフォルトの名無しさん
2008/03/25(火) 22:31:11Unknown compiler version - please run the configure tests and report the results
と言うワーニングが Boost を使っているソースででました。
リンクも成功し、実行もできるのですが。。
このワーニングを消すにはどのようにしたらよいのでしょうか?
0907デフォルトの名無しさん
2008/03/25(火) 22:56:111.34.1がでたのは、VC9が出る前だ。
0908デフォルトの名無しさん
2008/03/26(水) 01:00:40ヘッダーは VC8,VC9 共通みたいでした。
0909デフォルトの名無しさん
2008/03/26(水) 03:24:57boostのどのライブラリでワーニングが出ます?もう少し詳しい状況が分かると調べられるのですが。
0910デフォルトの名無しさん
2008/03/26(水) 05:28:280911デフォルトの名無しさん
2008/03/26(水) 10:04:29おいらは906じゃないけど、SVN で落としたのに置き換えたらエラーがでなくなった
あんがと
0912デフォルトの名無しさん
2008/03/26(水) 10:42:38コンパイル時に config/visualc.hpp 内のワーニングなので、ライブラリは関係なさそうなのですが。。
0913デフォルトの名無しさん
2008/03/26(水) 11:31:541.35の正式版が出るまで無視するってのは駄目か?
どうせ実害はないんだし。
0914デフォルトの名無しさん
2008/03/26(水) 12:17:22まぁ自分の使いたいライブラリがうまく動いていればそれでよし。
0915デフォルトの名無しさん
2008/03/26(水) 16:18:250916デフォルトの名無しさん
2008/03/30(日) 11:14:460917デフォルトの名無しさん
2008/03/30(日) 12:05:34News
* Version 1.35.0
New Libraries: Asio, Bimap, Circular Buffer, Function Types, Fusion, GIL, Interprocess, Intrusive, Math/Special Functions, Math/Statistical Distributions, MPI, System.
Updated Libraries: Graph, Hash, Iostreams, Multi Array, Multi-index Containers, Serialization, Thread, Wave, Xpressive.
March 29th, 2008 12:00 GMT
ひさしぶりのうpだけあって盛りだくさんだなぁ
0918デフォルトの名無しさん
2008/03/30(日) 12:19:330919デフォルトの名無しさん
2008/03/30(日) 12:32:340920デフォルトの名無しさん
2008/03/30(日) 12:47:12というかPOSIXを前提に設計されているようで、
Windowsだと素直に実装できないってのもあるのかな。
0921デフォルトの名無しさん
2008/03/30(日) 13:27:27敬遠してる
0922デフォルトの名無しさん
2008/03/30(日) 17:03:02と本スレ参考にv1.35を
�@vcvars32.bat実行
�Abjam --toolset=msvc-9.0 stage
としたんですが、以下のように出てビルドできません。
何か足りないツールでもあるのでしょうか?
MkDir1 lib
'C:\DOCUME~1\????' ???A?????R?}???h???????O???R?}???h?A
???????\???v???O???????????o?b?` ?t?@?C?????????F?????????????????B
mkdir "lib"
...failed MkDir1 lib...
MkDir1 bin.v2
'C:\DOCUME~1\????' ???A?????R?}???h???????O???R?}???h?A
???????\???v???O???????????o?b?` ?t?@?C?????????F?????????????????B
mkdir "bin.v2"
...failed MkDir1 bin.v2...
...skipped bin.v2\libs for lack of bin.v2...
...skipped bin.v2\libs\test for lack of bin.v2\libs...
...skipped bin.v2\libs\test\build for lack of bin.v2\libs
以下たくさんskipped
0923デフォルトの名無しさん
2008/03/30(日) 17:41:060924デフォルトの名無しさん
2008/03/30(日) 17:50:37ユーザー名は確かに日本語ですわ。
で、多分"Documents and Settings"配下で何かしようと
してるんだと思うんだけどユーザーだけ切り替えればいけるかな。
やってみる。
�@vcvars32.bat実行
�Abjam --toolset=msvc-9.0 stage
の手順は一般的に問題ないっすよね?
0925デフォルトの名無しさん
2008/03/30(日) 18:17:59administratorに切り替えたらビルドできたような気がする。
dllとかlibがbin.v2っていうフォルダに出来てる。
ただ、
bjam --toolset=msvc-9.0 stage だと
アップデートになってしもうた。
1.35で新たに追加されたAsioやら全てをビルドするためには
別のオプションがいる??
0926デフォルトの名無しさん
2008/03/30(日) 18:25:040927デフォルトの名無しさん
2008/03/30(日) 19:31:091.34.1の既存のものはビルドされた(アップデート)んだけども
1.35.0で新しく追加されたものがビルドされてないみたい。
bjam --builddir=builddir-vc9 --build-type=complete --toolset=msvc-9.0 stage 2>&1 | tee c:\boost.log
でやってみたんだけど、static、dynamic(dll)の二つのバージョンが出来たこと以外
変わらんかった。
http://www.boost.org/doc/tools/jam/jam/usage.html
には
bjam ( -option [value] | target ) *
でtargetを指定しなければ全てビルドされると書いてあるんだけどなあ。
0928デフォルトの名無しさん
2008/03/30(日) 19:50:45bjamの最新版は日本語メッセージが文字化けして???になるよ。
0929デフォルトの名無しさん
2008/03/30(日) 20:07:01ああそうなんだ。
とりあえず既存のものはビルドできるみたいだ。
release、debugとも出来てる。
asioとかがビルドできない。ビルド対象を指定するか
設定ファイルなんかが必要なんだろうか。
0930デフォルトの名無しさん
2008/03/30(日) 20:37:58asioはライブラリ不要のはず
0931デフォルトの名無しさん
2008/03/30(日) 21:16:540932デフォルトの名無しさん
2008/03/30(日) 21:28:170933デフォルトの名無しさん
2008/03/30(日) 21:56:29ホントだ。そうみたい。
もしかして1.35でライブラリ作成する必要のある新しいものって
無いのかも?
ソケットで遊んで見る。
0934デフォルトの名無しさん
2008/03/30(日) 22:32:330935デフォルトの名無しさん
2008/03/30(日) 22:40:410936デフォルトの名無しさん
2008/03/30(日) 22:42:11新しいものの中ではsystemが要ビルド。
0937デフォルトの名無しさん
2008/03/30(日) 22:45:49それならstage\libにライブラリできてるから成功してるっぽい。
0938デフォルトの名無しさん
2008/03/31(月) 01:02:350939デフォルトの名無しさん
2008/03/31(月) 01:17:39自分で指定するのめんどくさい。
0940デフォルトの名無しさん
2008/04/01(火) 02:50:31boost.pythonはpythonをcから呼びたい時だけ使うのがいい
0941デフォルトの名無しさん
2008/04/01(火) 14:55:030942デフォルトの名無しさん
2008/04/01(火) 21:32:570943デフォルトの名無しさん
2008/04/02(水) 02:49:16tokenizerを使用したプログラムをデバッグモードで実行したところ
超絶遅くて絶望したんですけど、これは回避できないですか?
0944デフォルトの名無しさん
2008/04/02(水) 03:17:270945デフォルトの名無しさん
2008/04/02(水) 17:54:19Boostの中の人はM$信者なの??
0946デフォルトの名無しさん
2008/04/02(水) 18:15:37信者どころか社員いるし
しかし、パスするテストを増やすのに必要なのは信者じゃなくて人柱と開発者だ
0947デフォルトの名無しさん
2008/04/02(水) 18:44:530948デフォルトの名無しさん
2008/04/02(水) 20:53:59どういう方法が良いでしょうか?
0949デフォルトの名無しさん
2008/04/02(水) 21:02:020950デフォルトの名無しさん
2008/04/02(水) 21:56:08struct parse : public grammar<parse>
{
template <typename ScannerT>
struct definitionmy(parse const& self) {
//略
int_p[bind(&parse::func, self, _1)]; //bindでメンバを渡す
};
void func(const int val);
};
こういうことですか?
他の方法って無いのでしょうかね?
毎回bind書くのはしんどいんですが。
0951デフォルトの名無しさん
2008/04/02(水) 22:35:21極力assign_aとかpushback_aとか定義済みのやつで済ませるようになった。
あと、そのfuncはconst付けないとエラーになるよ。
0952デフォルトの名無しさん
2008/04/02(水) 23:58:07bjam --toolset=msvc-8.0 -sBZIP2_SOURCE=〜 -sZLIB_SOURCE=〜 --stagedir=. stage
ってやってビルドしたら、なぜかreleaseビルドのマルチスレッドのlibファイルしかビルドされないんだが、こういう仕様に変わったの?
前はdebugとかも出てたよね?
0953デフォルトの名無しさん
2008/04/03(木) 00:33:38試行錯誤の結果、こうすれば全部ビルドされた
bjam --toolset=msvc-9.0 stage release debug link=static,shared runtime-link=static,shared
BZIP2_SOURCEとかは事前にsetしてある
0954デフォルトの名無しさん
2008/04/03(木) 00:56:22>funcはconst付けないとエラーになる
boost::functionに一旦入れてから使ったらエラーが出ずに
通っちゃったので気が付きませんでしたw
0955デフォルトの名無しさん
2008/04/03(木) 01:50:21どうやったの?
俺も今Spirit使ってんだが、constが厳しくて
mutableにお出ましいただいている。
0956デフォルトの名無しさん
2008/04/03(木) 02:15:28大まかには950で、
struct definitionmy(const parse &self) {
boost::function<void (const wchar_t*, const wchar_t*)> fnc;
fnc = boost::bind(&parse::func, self, _1, _2);
r = str_p("hoge")[fnc];
};
void func(const wchar_t *p1, const wchar_t *p2);
これで通ってしまいましたよ。
デバッガでfuncが呼び出されるのも確認できました。
0957デフォルトの名無しさん
2008/04/03(木) 02:18:10それで解決しました。でもブレークできない諸刃の剣です。
0958デフォルトの名無しさん
2008/04/03(木) 02:38:06おお、VC++ 2008でもGCC 4.2.3でもエラーでない。
ってエイプリルフールはもう過ぎたぞ。見事に釣られたが。
bindで束縛するときは値渡しだからコピーされているだけだw。
ref使うとやっぱりコンパイルエラーになる。
まあ俺も人のこと笑えない。同じようにbindしている場所がある。
メンバが解析データ保持のshared_ptrだけだから何とも問題が起きなかったわけだ。
0959デフォルトの名無しさん
2008/04/03(木) 04:27:58これってどのぐらい便利なの?
0960デフォルトの名無しさん
2008/04/03(木) 05:38:30http://www.itk.org/HTML/CableSwig.html
boost.pythonと比べたらどっちがいいのかな
0961デフォルトの名無しさん
2008/04/03(木) 15:50:02うは、素で気が付かなかったorz
0962デフォルトの名無しさん
2008/04/03(木) 16:46:25いなくても完了するように見えるんだけど、正しい?
Boost.Python のヘッダファイルやソースコード眺めてても
Python 自身のヘッダファイルはインクルードして無いように見える。
0963962
2008/04/03(木) 17:18:57ヘッダをインクルードしていた。とくにインクルールパス
を指定していないのになぜかビルドに成功する。
bjam の魔法かな? Windows XP2
0964デフォルトの名無しさん
2008/04/03(木) 18:37:290965デフォルトの名無しさん
2008/04/03(木) 23:12:19�d
夜中に手を煩わせて申し訳ない。おかげで全部のlibファイルビルドする事ができました。
bjam自体の仕様が変わったのか、libフォルダへのコピーをしなくなっていたけど。
0966デフォルトの名無しさん
2008/04/03(木) 23:38:48BOOST_DIR/stage/libにはいってない?
--stagedirオプションをつけないとデフォルトではstageディレクトリの中にlibが作られる。
0967デフォルトの名無しさん
2008/04/04(金) 20:10:02すまない、まさにそれだった。
0968デフォルトの名無しさん
2008/04/05(土) 00:50:46extra argument icui18n
なんてエラーが出て前に進めないよ!
まるで僕の人生のようだ。
助けて!
ICU は 3.8.1 使ってます。
0969デフォルトの名無しさん
2008/04/05(土) 01:08:19メモメモ
vc8環境下でICU3.8をビルドしてboost.regexで使うようにすると
icui18n.libとかicudata.libが無いっておこられる
そこでicuin.libとicuind.libをicui18n.lib icui18nd.libに、
icudt.libをicudata.libにコピー&リネームすると通る
regexのテストは一応全通過
本来はどうするべきなんだろうか…
ーーーーーーーー
ってコトらしいけど、どうしたもんかなぁ。
0970デフォルトの名無しさん
2008/04/05(土) 01:09:260971デフォルトの名無しさん
2008/04/05(土) 01:19:430972デフォルトの名無しさん
2008/04/05(土) 01:21:59個人的にはintrusiveが面白そうかなぁ。
0973デフォルトの名無しさん
2008/04/05(土) 01:47:03HAVE_ICU と ICU_PATH を同時に使っちゃだめだったんだ。
多分 HAVE_ICU はもう obsoleted で ICU_PATH だけ設定
すればライブラリファイルは自動判別してくれるみたい。
って、ライブラリのファイル名の問題は解決したけど、
結局以下のエラーでビルドできん・・・
G:/boost-trunk/Version_1_35_0/tools/build/v2/kernel\class.jam:93: in new
*** argument error
* rule object(searched-lib-target)@659.__init__ ( name : project : shared ? : search * : action )
* called with: ( icudt icuin icuuc : object(project-target)@79 : true : /C:/Program Files/ICU4C/icu4c-3.8.1/lib : object(null-action)@658 : : : : )
* extra argument icuin
G:/boost-trunk/Version_1_35_0/tools/build/v2/tools\builtin.jam:349:see definition of rule '__init__' being called
bjam を使いこなすには python の知識が必要なんだろうか・・・
0974デフォルトの名無しさん
2008/04/05(土) 03:01:120975デフォルトの名無しさん
2008/04/05(土) 03:45:58http://www.boost.org/doc/libs/1_35_0/libs/regex/doc/html/boost_regex/install.html#boost_regex.install.building_with_unicode_and_icu_support
ううむ、Windows + VC9 でうまくいかん・・・
直接の原因は buildin.jam で定義されている
class searched-lib-target : abstract-file-target
{
rule __init__ ( name
: project
: shared ?
: search *
: action
)
のコンストラクタの引数 name に、ICU4C で必要なライブラリを
3つ渡しているからなんだが( name は一つしか受け取れない)。
0976デフォルトの名無しさん
2008/04/07(月) 04:20:20標準正規分布のrandom variableを生成するクラスを作ったのですが、
class nrv {
public:
nrv() :
gen(time(NULL)),
dst(0.0, 1.0),
rv(gen, dst) {}
double val() const { // ここのconstをはずすとコンパイルできる
return rv();
}
private:
mt19937 gen;
normal_distribution<> dst;
variate_generator<mt19937, normal_distribution<> > rv;
};
上のconstをはずすとコンパイルできないのはなんででしょうか?
0977デフォルトの名無しさん
2008/04/07(月) 04:29:54この説明で判らないならC++初心者スレ行ってこい
0978デフォルトの名無しさん
2008/04/07(月) 11:25:54よくわかりませんでした(泣)
rv()はvariate_generator::operator()というのはわかりますが、それが手元のboost-1.34.1だと
result_type operator()() { return _dist(_eng); }
という実装になっていて、それが参照とかポインタとかを返してるから、ということでしょうか?
でもこれはdoubleを返すんじゃないかと思ったのですが。
あと、以下のコンパイルエラーの箇所でエラーになる理由は何でしょうか?
class nrv {
public:
nrv(int seed) :
gen(seed), // ここでコンパイルエラー。seedを定数(0とか1とか)にするとコンパイルとおる。
dst(0.0, 1.0),
rv(gen, dst) {}
private:
mt19937 gen;
normal_distribution<> dst;
variate_generator<mt19937, normal_distribution<> > rv;
};
0979デフォルトの名無しさん
2008/04/07(月) 12:20:35C++ではメソッドにconstをつけることができる。つまり、
result_type operator()() const { return _dist(_eng); }
となっていればできる。
後者は多分、seedの型がunsignedじゃないから
オーバーロードの問題が出ているのだと思う。
0980デフォルトの名無しさん
2008/04/07(月) 12:25:25- nrv(int seed) :
+ nrv(mt19937::result_type seed) :
0981デフォルトの名無しさん
2008/04/07(月) 12:30:45前半部分について
result_type variate_generator::operator()() { return _dist(_eng); }
↓
//some pseudo code
result_type operator()(variate_generator * const this) { return _dist(_eng); } //�@
一方、
double nrv::val() const {
return rv();
}
↓
//some pseudo code
double val(const nrv * const this) {
return (this->rv)();
}
↓
double val(const nrv * const this) {
return (this->rv).variate_generator::operator()();
}
↓
double val(const nrv * const this) {
return operator()(&(this->rv)); //�@の呼び出し
}
&(this->rv)の型は少なくともconst variate_generator *だが、�@のパラメータは
variate_generator *であり、variate_generator *をconst variate_generator *
では初期化できない。
0982デフォルトの名無しさん
2008/04/07(月) 20:02:160984デフォルトの名無しさん
2008/04/07(月) 22:31:17同じこと思った香具師はいっぱいいるから代表ってとこだろ
0985デフォルトの名無しさん
2008/04/07(月) 23:18:35>>982 = >>977 だよ
初心者スレに行っても、boostのことがわかってないと
>>981のような回答は難しいんで結局このスレで聞くのが良いと思う
0986984
2008/04/07(月) 23:33:44boost初心者スレ無いのか…
確かにboost以前の問題を解決できる人にboost初心者スレは必要ないような気もするし
スキマにはさまって身動きできない人を救済するのはこっちのスレの役目か
0987デフォルトの名無しさん
2008/04/08(火) 02:45:550988デフォルトの名無しさん
2008/04/08(火) 18:02:39regex のビルドできている人います??
Linux ではできてるんだけど・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。