Boostを語れゴラァ part2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/07(火) 20:53:54前スレ
BOOSTを語れゴラァ
http://pc8.2ch.net/test/read.cgi/tech/1091198276/
0002デフォルトの名無しさん
2006/02/07(火) 20:54:30Boost 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/
■関連書籍■
Boost 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/
0003デフォルトの名無しさん
2006/02/07(火) 20:54:46C++相談室 part46
http://pc8.2ch.net/test/read.cgi/tech/1136690107/
【C++】STL(Standard Template Library)相談室 4
http://pc8.2ch.net/test/read.cgi/tech/1130680264/
0004デフォルトの名無しさん
2006/02/07(火) 21:00:260005デフォルトの名無しさん
2006/02/07(火) 21:03:570006デフォルトの名無しさん
2006/02/07(火) 21:05:050007デフォルトの名無しさん
2006/02/07(火) 21:23:17Lokiもここでやりましょう。
0008デフォルトの名無しさん
2006/02/07(火) 21:37:52http://sourceforge.net/projects/loki-lib/
JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
0009デフォルトの名無しさん
2006/02/07(火) 21:45:36賛成
0010デフォルトの名無しさん
2006/02/08(水) 00:30:540011デフォルトの名無しさん
2006/02/08(水) 00:36:05賛成
「Loki とか入れろ」って声があったんだから、命名についての議論はともかく、
せめて「Boost/Loki を語れゴラァ」ぐらいにしとけよ…。>>1 は阿呆かね。
0012デフォルトの名無しさん
2006/02/08(水) 01:01:32そんなこと言い出すんだったら、
「汎用性のあるテンプレートライブラリを語れゴルァ」でいいんじゃないかと。
0013デフォルトの名無しさん
2006/02/08(水) 01:14:020014デフォルトの名無しさん
2006/02/08(水) 01:18:240015デフォルトの名無しさん
2006/02/08(水) 01:19:45じゃ、MFCについて語ろうぜ。
0016デフォルトの名無しさん
2006/02/08(水) 02:37:270017デフォルトの名無しさん
2006/02/08(水) 03:11:090018デフォルトの名無しさん
2006/02/08(水) 04:05:435年前だぞあれ。いまさら何に使うんだと
0019デフォルトの名無しさん
2006/02/08(水) 04:26:450020デフォルトの名無しさん
2006/02/08(水) 08:50:580021デフォルトの名無しさん
2006/02/08(水) 11:24:33だから、前スレでそういう流れになってたのに >>1 がこんな名前で
スレ立てたんだろう。
0022デフォルトの名無しさん
2006/02/08(水) 11:26:480023デフォルトの名無しさん
2006/02/08(水) 13:26:35Boost.MPL.Bind や、Boost.MPL.Iterator、Boost.TypeTraits、Boost.Phoenix2
といった複雑かつ強力なライブラリには劣り、現状でBoost には存在しない
Loki.Singleton や、Loki.SmartPtr も、より強力なものが、Sandbox で開発中だし。
正直、スレタイにLokiはイランだろ
0024デフォルトの名無しさん
2006/02/08(水) 14:43:13インストールがいらない分、regexよりお手軽なのはいいけど。
0025デフォルトの名無しさん
2006/02/08(水) 17:11:12http://pc8.2ch.net/test/read.cgi/tech/1139266461/l50
0026デフォルトの名無しさん
2006/02/08(水) 17:16:460027デフォルトの名無しさん
2006/02/09(木) 05:59:42002827
2006/02/09(木) 22:37:39int a[2][2] = {{0,1},{2,3}};
boost::array<boost::array<int,2>,3> b = {{ {0,1} ,{2,3} }};//2次元以上だと{}が一つ必要ぽ
こんな感じでいけた
002927
2006/02/09(木) 22:38:25だった...orz
0030デフォルトの名無しさん
2006/02/11(土) 18:38:210031デフォルトの名無しさん
2006/02/11(土) 19:19:27ワクテカしているんですが、boost/serialization/ 以下のファイルと
boost/archive/ 以下のファイルって何か関係があるんでしょうか?
とりあえず boost/serialization/string.hpp を include
してみたんですが、boost::serialization::access なんていう
関数は見つからないし。
0032デフォルトの名無しさん
2006/02/11(土) 19:29:27スタック操作が少なくて済むから。
0033デフォルトの名無しさん
2006/02/11(土) 19:35:03ってワーニング出されてもスピード気にしなければ
無視ってしまっておk?
0034デフォルトの名無しさん
2006/02/11(土) 20:01:23IA32に限れば滅多に減らない希ガスるけどな。
0035デフォルトの名無しさん
2006/02/11(土) 20:16:09x86, MMX, XMM各3つまでならレジスタ渡し可能(VC++の場合)
0036デフォルトの名無しさん
2006/02/11(土) 20:29:43どう指定すればそこまで最適化してくれるの?
0037デフォルトの名無しさん
2006/02/11(土) 20:34:06関数に__fastcall付けるだけ。
だがコールと共に寿命が切れる値でもないと、結局スタックに退避する事になる。
0038デフォルトの名無しさん
2006/02/11(土) 20:40:20003958
2006/02/11(土) 20:48:01あげんなボケ。
このスレは永遠に下げ進行なんだよ。
二度とあげんな。ハゲッ
0040デフォルトの名無しさん
2006/02/11(土) 21:46:56オマエモナ
0041デフォルトの名無しさん
2006/02/11(土) 22:10:440042デフォルトの名無しさん
2006/02/12(日) 05:34:51CRCからSHA1 までよりどりみどり、みたいな。
0043デフォルトの名無しさん
2006/02/12(日) 11:30:20。これはどの方式かね?
ttp://www.boost.org/doc/html/hash.html
0044・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/12(日) 12:07:59Crypto++にありそうな気が。
>>43
それはテーブルルックアップ探索用です。リレーショナルデータベースが使ってるやつ。
たとえば文字列なら数文字をパッキングして辞書順になるような数字に変換して検索するだけかと。
0045デフォルトの名無しさん
2006/02/13(月) 20:27:14BOOST_PP_CAT(::, elem)
のようにして::elemと結合させたいのですが、
pasting "::" and "elem" does not give a valid preprocessing token
とエラーが出てしまいます。
ここで、elemはさらに別のマクロに展開されます。
このように、::を含むようなケースで、うまく結合させるにはどうすればいいかご教示ください。
0046デフォルトの名無しさん
2006/02/13(月) 23:54:13まず、 :: elm じゃ何がダメなのかを説明して欲しい。
0047デフォルトの名無しさん
2006/02/14(火) 01:02:29#define GLOBALNAMESPACE( x )\
:: x
とか
0048デフォルトの名無しさん
2006/02/14(火) 03:59:48::直後にホワイトスペースが許されるのは知りませんでした。ありがとうございました。
…という以前に、::elemと続けて書いても展開されました。
難しく考えすぎてたようです(鬱
0049デフォルトの名無しさん
2006/02/16(木) 07:35:300050デフォルトの名無しさん
2006/02/16(木) 08:55:12VS 2005 Pro
0051デフォルトの名無しさん
2006/02/16(木) 09:03:320052デフォルトの名無しさん
2006/02/16(木) 09:18:27っていうか、 >>49 は環境とエラーメッセージを
もっと詳しく書け。もしくは Boots スレに行け。
0053デフォルトの名無しさん
2006/02/16(木) 09:59:030054デフォルトの名無しさん
2006/02/16(木) 10:42:21なんか実行時型情報つかうのって好みじゃなくて。
って、じゃぁ、Boost を使うなよ!って言われそうだが
0055デフォルトの名無しさん
2006/02/16(木) 10:49:35dynamic_cast している個所があって、
これだけのために RTTI を要求しているようなんだが、
そもそもこんなキャストをしないような実装にはできなかったんだろうか。
0056デフォルトの名無しさん
2006/02/16(木) 10:56:00てか
>なんか実行時型情報つかうのって好みじゃなくて。
なんで好みじゃないん?
0057デフォルトの名無しさん
2006/02/16(木) 10:58:30コンパイルが通った時点で保証されている、と信じたいから
0058デフォルトの名無しさん
2006/02/16(木) 11:23:12boost::smart_cast を使わない実装にできそうな気がするから。
気がするだけだけど。
ちなみに、コード眺めてると、
BOOST_SERIALIZATION_BASE_OBJECT_NVP() マクロを
使わなければ、smart_cast も必要なさそうな気がする。
気がするだけだけど。
そんな気がする今日この頃。
0059デフォルトの名無しさん
2006/02/16(木) 12:42:060060デフォルトの名無しさん
2006/02/16(木) 13:17:130061デフォルトの名無しさん
2006/02/16(木) 14:38:490062デフォルトの名無しさん
2006/02/16(木) 14:42:57作れない。
0063デフォルトの名無しさん
2006/02/16(木) 14:43:08仮想関数はメンバテンプレートになれない。
0064デフォルトの名無しさん
2006/02/16(木) 19:29:380065デフォルトの名無しさん
2006/02/16(木) 21:42:52お前みたいなド素人がプログラミングでメシ食っていこうなんて百年早い
マジ死ねよ
0066デフォルトの名無しさん
2006/02/16(木) 21:45:4857の感覚自体はまともだと思うけど
0067デフォルトの名無しさん
2006/02/16(木) 21:47:290068デフォルトの名無しさん
2006/02/16(木) 21:50:14お前も死ねよ。ド素人が
0069デフォルトの名無しさん
2006/02/16(木) 21:56:10何で?
静的型システムってC++の気に入ってる点のひとつなんだけど
0070・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/16(木) 22:21:350071デフォルトの名無しさん
2006/02/16(木) 22:50:34静的型システムで済むわけがないだろ。
そういう文脈で>>57なんて狂気の沙汰としか思えない。
0072デフォルトの名無しさん
2006/02/16(木) 22:59:09シリアライズしたいクラスに対して
friend class boost::serialization::access;
して、さらに
template <class Archive>
void serialize(Archive, const int);
メソッドを実装する必要があるのです
(そうでない場合はシリアライズしたい
クラスメンバをすべて public にする)。
ですので、クラス作者が実際のシリアライズ操作を
実装することが前提なので、その指摘は間違っています。
007357=72
2006/02/16(木) 23:05:57なぜ >>57 のように思ったかというと、dynamic_cast で
基底クラスを派生クラスにダウンキャストするということは、
派生クラスによって異なる振る舞いをさせたいから、
ということであり、そういうことは本来仮想関数で
実現するべきだろう、と思ったからです。
素人とか狂気とか言われる理由が分かりません。
0074デフォルトの名無しさん
2006/02/16(木) 23:39:57標準化のときも結構もめたんじゃないのかな。
禿の意見は確か、
ある言語にある機能がない場合、PGはそれを自作しようとする。
それなら言語仕様に入れたほうが、まだコストがましになるのではないか。
とかC++の設計と進化で言っていた気がする。
0075デフォルトの名無しさん
2006/02/16(木) 23:43:11文法がどんどん変態的になっていくのはその理念のせいか(w
0076デフォルトの名無しさん
2006/02/16(木) 23:46:290078デフォルトの名無しさん
2006/02/17(金) 03:18:10作れないが次のような物はどうだ。
struct Empty{};
template <typename T,typename Base=Empty>
class FooImpl:public Empty{
public:
virtual void foo1(Foo1 & arg){
(T *)this->bar(arg);
}
virtual void foo2(Foo2 & arg){
(T *)this->bar(arg);
}
};
class Bar:public FooImpl<Bar>{
template <typename T>
void bar(T * arg){
//...
}
}
一応テンプレート関数のような動作をする(受け取れる型などに制限ができるが)関数が作れる。
個人的にはテンプレートの動作速度や型が余分な型変換を削ったりできる場合もあると思うし(doubleとfloat用の仮想関数を2つ作ったりしても1つの記述ですむとか)
使い道事態はあるかな・・・と。
0079デフォルトの名無しさん
2006/02/18(土) 14:33:14え?お前コレ何の役に立つと思ってんの?
class Goo:public FooImpl<Goo>{template <typename T>void bar(T * arg){}}
他にこのようなGooクラスを作るとする。
スーパークラスは、それぞれFooImpl<Bar> と FooImpl<Goo>で、
同じスーパークラスじゃないから、これらを同一的に扱えない。
じゃあ、Barから派生するか?
class Too:public Bar{template <typename T>void bar(T * arg){}}
これで、FooImpl<Bar>*として同一的に扱える。
しかし、Too::barは呼ばれず、Bar::barが呼ばれる。
お前の案は糞の役にも立たない。使い道自体も当然無い。
もうちょっと頭使えよ。
0080デフォルトの名無しさん
2006/02/18(土) 19:22:21ではこのように訂正
struct Base{
virtual void foo1(Foo1 & arg)=0;
virtual void foo2(Foo2 & arg)=0;
};
template <typename T,typename Base_=Base>
class FooImpl:public Base_{
public:
typedef Base_ Base;
void foo1(Foo1 & arg){
(T *)this->bar(ar);g
}
void foo2(Foo2 & arg){
(T *)this->bar(arg);
}
};
class Bar:public FooImpl<Bar>{
template <typename T>
void bar(T * arg){
//...
}
}
008178
2006/02/18(土) 19:49:34struct Base{
virtual int funcint(int arg)=0;
};
template <typename T,typename Base_=Base>
struct BaseImpl:public Base_{
int funcint(int arg){
return (T *)this->func(arg);
}
};
次のように変更するとする
class Base{
virtual int funcint(int arg)=0;
virtual BigInteger funcBigInteger(BigInteger arg)=0;
};
template <typename T,typename Base_=Base>
struct BaseImpl:public Base_{
int funcint(int arg){
return (T *)this->func(arg);
}
BigInteger funcint(BigInteger arg){
return (T *)this->func(arg);
}
};
さて、この両方の仮想関数はほとんど同じような動作をする。
こういうときに両方の型に対してコードが生成されるため、
コードをBigInteger用に増やさなくてもヘッダーファイルに手を加えるだけでBigInteger用の実装が簡単に作れるようになる。
そして、この仕組みを入れたとしても実行時の速度に全く悪影響を与えない(コンパイル時間は別だが)
速度と汎用性のトレードオフでどうするべきか判断付かない時に入れるといざというときに役に立つと考えているし。
汎用性を最初から優先する場合でも速度に配慮する場合に役に立つだろう。
0082デフォルトの名無しさん
2006/02/18(土) 23:55:540083デフォルトの名無しさん
2006/02/19(日) 08:36:420084デフォルトの名無しさん
2006/02/19(日) 08:40:300085デフォルトの名無しさん
2006/02/19(日) 15:04:050086デフォルトの名無しさん
2006/02/19(日) 15:34:32おまえらの脳ミソがへんなんだよ。
どのように見ても、>>81のソースは仮想テンプレート関数にはなってないだろ。
これなら、SFINAE使う方向で考えたほうがましなのを作れるぞ。
0087デフォルトの名無しさん
2006/02/20(月) 03:24:54どのように見たの?
0088デフォルトの名無しさん
2006/02/20(月) 10:27:32( ) ||_| ←こんな感じ
(__ つ三_ |
/__ヽ) || ||
_||_J || ||
0089デフォルトの名無しさん
2006/02/20(月) 12:06:13変態的だけど。
-m {1|2|3} みたいな感じで動作モードを指定する
パラメータを処理したいときって、内部的には
enum にしててもやっぱコマンドラインでは整数で
与えるしかないのかな?なんかもっとスマートな方法内?
0090デフォルトの名無しさん
2006/02/22(水) 17:14:27の意味がようわからんのでなんとも。
自前でパースすればどうだってできるとしか。
0091デフォルトの名無しさん
2006/02/23(木) 23:57:05コールバック書かなくて済むからいいね。
0092デフォルトの名無しさん
2006/02/27(月) 01:58:44boost regexのサンプルgrep.cppのコンパイル方法がわかりません!
Vine Linux 3.2 の g++でコンパイルしています!
0093デフォルトの名無しさん
2006/02/27(月) 03:08:44ソース見てみるとsignalはnoncopyable継承してるみたいだから、
vectorで要素確保するときにコンストラクタ起動できなくてエラーが起こるみたいだけど。
ちなみにboost::arrayに突っ込む分には問題なかったっす。
環境:VC2005 + boost 1.33.1
0094デフォルトの名無しさん
2006/02/27(月) 03:14:540095デフォルトの名無しさん
2006/02/27(月) 17:40:23signalをboost::functionへ突っ込んだらどう?
0096デフォルトの名無しさん
2006/02/28(火) 11:24:520097デフォルトの名無しさん
2006/02/28(火) 12:17:120098HelpME
2006/02/28(火) 15:59:15Boostってユニバーサルバイナリに出来るんでしょうかね?
BoostのライブラリってBoostJamっていう専用の
ライブラリビルドツールを使ってビルドするので
自分でMakeファイル作ってビルドって出来ませんよね。
PowerPC用、intel用にそれぞれ
BoostJamで吐き出されたBoostライブラリ群を
lipoコマンドでマージするしかないっすかね?
たすけて〜〜〜〜!
0099デフォルトの名無しさん
2006/02/28(火) 21:03:00bjamは内部でgccとかを呼び出してるだけ。
自分で適切なMakefile書けばコンパイルできないこともない。
0100デフォルトの名無しさん
2006/02/28(火) 22:35:270101・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/28(火) 22:50:290102デフォルトの名無しさん
2006/03/01(水) 08:02:18単に TMP,TMPDIR,TEMP 環境変数の値を見に行ってるだけなんだな。
0103デフォルトの名無しさん
2006/03/01(水) 14:56:34精度が一桁少ないと思うのはオレだけ?
0104デフォルトの名無しさん
2006/03/01(水) 21:34:01/tmp/ccV99vjI.o(.text+0xa7): In function `main':
boost_muti_thread.cpp: undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)'
/tmp/ccV99vjI.o(.text+0x104):boost_muti_thread.cpp: undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)'
/tmp/ccV99vjI.o(.text+0x13e):boost_muti_thread.cpp: undefined reference to `boost::thread::join()'
/tmp/ccV99vjI.o(.text+0x14d):boost_muti_thread.cpp: undefined reference to `boost::thread::join()'
/tmp/ccV99vjI.o(.text+0x163):boost_muti_thread.cpp: undefined reference to `boost::thread::~thread()'
/tmp/ccV99vjI.o(.text+0x17a):boost_muti_thread.cpp: undefined reference to `boost::thread::~thread()'
/tmp/ccV99vjI.o(.text+0x18e):boost_muti_thread.cpp: undefined reference to `boost::thread::~thread()'
/tmp/ccV99vjI.o(.text+0x1ab):boost_muti_thread.cpp: undefined reference to `boost::thread::~thread()'
collect2: ld はステータス 1 で終了しました
日本語のBoostの解説本に載ってたサンプルコードなのですが,コンパイルできませんでした.
Fedora Core 4でg++を使っています.全てのBoostのライブラリをbuildできており,他のBoost
を用いたコードでは問題ありませんでした.
何かアドバイスをお願いいたします.
0105・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/01(水) 21:36:170106デフォルトの名無しさん
2006/03/01(水) 21:40:42libboost_threadをリンクしなはれ
0107デフォルトの名無しさん
2006/03/01(水) 22:13:14ありがとうございます.
# g++ thread1.cpp -pthread /opt/boost/lib/libboost_thread-gcc-mt.so
でコンパイルできました.
0108デフォルトの名無しさん
2006/03/01(水) 22:26:37ライブラリがビルドできませんでした.ビルドする方法があれば伝授頂きたい
のですが.
環境はFedora Core 4(i386) + l_cc_c_9.0.030です.
以下のようにビルドを試みました.
# export INTEL_PATH=/opt/intel/cc/9.0
# ./configure --with-toolset=intel-linux
# make
よろしくお願いいたします.
0109デフォルトの名無しさん
2006/03/01(水) 22:41:48Boostの日本語コミュニティが無いので以前から疑問だったことを
教えてください.
multi_arrayのオブジェクトをクラスのメンバにしたかったのですが,
extents is not a typeというエラーが出てコンパイルできません
でした.
class HOGE [
private:
boost::mutli_array<double,1>::extent_range range;
boost::multi_array<double,1> x( boost::extents[range(1,10)] );
...................
};
こんな感じにしたいのですが,なぜかextentsでエラーが出ます.
これはboostの仕様なのでしょうか?
0110デフォルトの名無しさん
2006/03/01(水) 23:35:250111デフォルトの名無しさん
2006/03/02(木) 00:00:21class Hoge {
private:
boost::mutli_array<double,1>::extent_range range;
boost::multi_array<double,1> x;
public:
Hoge() : x(boost::extents[range(1, 10)]) {}
};
0112デフォルトの名無しさん
2006/03/02(木) 00:57:53ご返答ありがとうございます.
C++は使い始めてから日が浅くあんまりよく
わかっていない状態で使ってました.
0113デフォルトの名無しさん
2006/03/03(金) 06:26:29C++/CLI でも使えるようにして欲しいよ。
boost::serialization と boost::program_options だけでもいいからさ
0114デフォルトの名無しさん
2006/03/03(金) 07:45:32どんなエラーになるの?
0115デフォルトの名無しさん
2006/03/03(金) 08:56:25boost では結構 __fastcall が使われている。
ヘッダだけで済む奴は問題ないんだけど、
*.cpp で提供されているやつは
ライブラリ構築時に作ったオブジェクトで
__fastcall が使われているから
リンクしようとしたときに「だめだよ。」って優しくおこられる。
boost のビルドの時に __clrcall にしてライブラリ構築すれば
いいんだろうけど、boost/config/auto_link.hpp まわりとか
ライブラリ名とかどうすればいいのかな、と。
さらに boost のマニュアルに従って bjam 使ってインストール
してるんだけど、bjam の中身をよく分かってないんで
どうしたもんかと。
0116デフォルトの名無しさん
2006/03/03(金) 09:02:49extent_rangeは静的メンバで十分だろ。
0117115
2006/03/03(金) 10:45:59リビルドしてみます。って、それだけで簡単にいくんだろうか。
そもそも C++/CLI 使ってるお前が悪いとか言われそうなんだけど。
0118デフォルトの名無しさん
2006/03/03(金) 10:48:34C++/CLIだったらC#でいいじゃないかと本気で思うが。
0119デフォルトの名無しさん
2006/03/03(金) 11:29:38C++中毒患者のスレだ、ここは。
0120デフォルトの名無しさん
2006/03/03(金) 20:56:560121デフォルトの名無しさん
2006/03/03(金) 20:57:56しかし良くあんな事思いついたよな。
0122デフォルトの名無しさん
2006/03/03(金) 21:00:46プリプロセッサつーもんが C に無かったら
もしかしたら思い付かなかったかも知れんな。
0123デフォルトの名無しさん
2006/03/03(金) 21:09:47特殊化ってのはこのマクロ展開そのものだもんな。
0124デフォルトの名無しさん
2006/03/03(金) 21:14:17演算子の優先順位の関係で
思いもよらぬお隣さんと演算されちゃったり
0125デフォルトの名無しさん
2006/03/03(金) 22:56:560126デフォルトの名無しさん
2006/03/03(金) 23:27:130127デフォルトの名無しさん
2006/03/03(金) 23:45:130128デフォルトの名無しさん
2006/03/03(金) 23:48:570129124
2006/03/03(金) 23:56:04ってことだったんだが・・・・
0131デフォルトの名無しさん
2006/03/03(金) 23:56:59うちではlib以下全部で1.37GBだった。
0132デフォルトの名無しさん
2006/03/03(金) 23:58:06山ほどあるコンパイラそれぞれにバイナリを作っていたらきりが無い。
そもそもお前はビルドしてできたlibファイルの大きさがどれくらいか知っているか?
俺のVC7.1でビルドしたもので1GiBytes以上ある。
0133131
2006/03/03(金) 23:59:000134デフォルトの名無しさん
2006/03/04(土) 00:09:300135127
2006/03/04(土) 00:16:37うちのヘボマシンで、どれだけ時間かかんのかな・・・orz
0136デフォルトの名無しさん
2006/03/04(土) 00:23:53ビルドするだけで、インストールしなかった場合、
ディレクトリ構造が、よくわからなくなるんだけど……。
具体的に言うと
bin\boost\libs\regex\build\libboost_regex.lib\vc-7_1\release
の下に、
runtime-link-static
threading-multi
という、二つのディレクトリがあって、
なぜか、runtime-link-static\threading-multi
なんてものもあるんだけど、マルチスレッドには、どちらを使えばいいんだろう。、
libboost_regex-vc71-mt-s-1_33_1.lib
libboost_regex-vc71-mt-1_33_1.lib
微妙に名前が違う。
どちらも、スタティックリンクライブラリなんだけど。
0137デフォルトの名無しさん
2006/03/04(土) 00:24:32libboost-date-time libboost-doc libboost-examples libboost-filesystem
libboost-graph libboost-iostreams libboost-program-options
libboost-regex libboost-serialization libboost-signals libboost-test
libboost-thread libboost-wave
>>129
それがど素人やねん
全体と引数を()でくくるのが80年代からの常識。
0139デフォルトの名無しさん
2006/03/04(土) 00:28:050140・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/04(土) 00:29:410141136
2006/03/04(土) 00:30:50ちょっと見てみたら、
runtime-link-static\threading-multi
の方を使うみたいだ。
じゃあ、いきなりthreading-multiがあるのはなぜだろう。
0142デフォルトの名無しさん
2006/03/04(土) 00:32:21必要なファイルだけとしても、やはり数百MBいきそうだな。
0143デフォルトの名無しさん
2006/03/04(土) 00:33:21素人老人は変えれ
0144・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/04(土) 00:34:240145デフォルトの名無しさん
2006/03/04(土) 00:36:390146131
2006/03/04(土) 00:40:58//ところでみんなinstallせずに使ってるの?
0147・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/04(土) 00:42:39てか、ぶっちゃけRegex++以外のプリコンパイルライブラリ使わない希ガス。
xpressive使い出したらRegex++すら不要に・・・。
0148デフォルトの名無しさん
2006/03/04(土) 00:53:220149デフォルトの名無しさん
2006/03/04(土) 01:03:310150デフォルトの名無しさん
2006/03/04(土) 01:25:170151デフォルトの名無しさん
2006/03/04(土) 01:28:150152デフォルトの名無しさん
2006/03/04(土) 01:34:060153デフォルトの名無しさん
2006/03/04(土) 08:38:31WindowsでもNTFSにはハードリンクが存在する。
0154デフォルトの名無しさん
2006/03/04(土) 08:43:48インストール過程でそれを使ってくれない。
0155デフォルトの名無しさん
2006/03/04(土) 09:51:09threading は single と multi,runtime-link は static と dynamic が
選択肢としてあります. MSVC ではこの 2*2=4 の組み合わせのうち
runtime-link が dynamic で threading が single な組み合わせがありません.
(一部のライブラリはさらに残りの3つの組み合わせの1部をビルドしません)
で, Boost のビルドでは threading が single, runtime-link が dynamic,
がそれぞれデフォルトで,デフォルトに対応したパスは省略されます.
例えば runtime-link-static というパスは,実際には
runtime-link-static\threading-single というパスの省略,といった具合です.
threading-multi は runtime-link-dynamic\threading-multi の省略です.
結果,その3つのディレクトリ構成になります.
で,どちらを使えばよいかというとそれは目的とするビルドによって
適切に決める,としか書きようが無いです.
例えばビルドで必要な他の全てのソースのコンパイルの
コンフィギュレーションとリンクする Boost のライブラリの
コンフィギュレーションを統一するというのがあって,
これが一番分かりやすく,かつ最もオーソドックスな方法かと思います.
>>154
あれ?少なくとも stage ターゲットだと NTFS のハードリンク使ってくれたように
記憶しているんですが……. install ターゲットは違うのかな?
0156デフォルトの名無しさん
2006/03/09(木) 11:13:19自分で実装しろってことなのかな?
0157デフォルトの名無しさん
2006/03/09(木) 11:49:47必要性を見出せなかったから
0158デフォルトの名無しさん
2006/03/09(木) 12:03:20algorithmを使え。
というか君、boostはまだ早くない? その前に標準STLを使いこなして!
0159デフォルトの名無しさん
2006/03/09(木) 13:12:47boost::numeric::ublas::matrixだったりしない?
0160デフォルトの名無しさん
2006/03/09(木) 13:51:06Boostのmulti_arrayにほしい機能があったのでSTLもあんまし
わからないままとりあえず使ってます.
0161デフォルトの名無しさん
2006/03/09(木) 15:37:43使いこなすも何も役に立たないものばかり。たいてい中途半端なつくり。
0162デフォルトの名無しさん
2006/03/09(木) 15:45:430163デフォルトの名無しさん
2006/03/09(木) 15:49:18std::vectorだって+も-もできないし、組み込みの配列型もそうだし。
boost::multi_arrayはただの配列。それ以上でもそれ以下でもない。
0164デフォルトの名無しさん
2006/03/09(木) 15:59:37数学の行列が使いたいなら>>159だし。
0165デフォルトの名無しさん
2006/03/09(木) 17:28:220166デフォルトの名無しさん
2006/03/09(木) 19:30:35Lispでも実装してmapしてろ
0167デフォルトの名無しさん
2006/03/09(木) 21:41:03C++ではstd::transformが近いと思うよ。
0168デフォルトの名無しさん
2006/03/09(木) 21:58:02嫌みにマジレスされてトテモカナスイ
0169デフォルトの名無しさん
2006/03/10(金) 15:52:35嫌み?
0170デフォルトの名無しさん
2006/03/11(土) 02:30:54>>159
確かにそっちの方が今の用途に合ってました.ありがとうございます.
0171デフォルトの名無しさん
2006/03/13(月) 02:47:51どなたか簡単な解説を…
0172デフォルトの名無しさん
2006/03/13(月) 08:51:02部分行列を指定したり、部分行列を行列として扱いたいことあるでしょ。
これはvectorの一部分を指定したり、
それをあたかも別のvectorの様に扱う(vector_proxy)ためのクラス。
0173デフォルトの名無しさん
2006/03/13(月) 21:36:10ためのクラスライブラリって、Boost にありますか?
いままで自分用に作ったモノを使ってきたんだけど、
準標準のものがあるならそれを使うのもいいかなと思って。
0174デフォルトの名無しさん
2006/03/13(月) 22:33:57ublas の vector じゃ駄目なのか?
0175デフォルトの名無しさん
2006/03/13(月) 22:59:17ublasの"u"は何の略なんですか?
0176デフォルトの名無しさん
2006/03/13(月) 23:00:540177デフォルトの名無しさん
2006/03/13(月) 23:02:42おお、そっちの意味だったのか、だからuBLASって書いてあるのね。
0179デフォルトの名無しさん
2006/03/15(水) 17:46:490180デフォルトの名無しさん
2006/03/15(水) 17:51:05そのあたりを取り扱うのに便利なライブラリってないですか?
しこしこ自分で定義した最低限の機能しかないクラスライブラリを
使ってるんですが、絶対みんな同じ事してるよぉ、と思ってます。
0181デフォルトの名無しさん
2006/03/15(水) 23:44:22ublas の vector じゃ駄目なのか?
0182デフォルトの名無しさん
2006/03/16(木) 01:30:410183デフォルトの名無しさん
2006/03/16(木) 03:34:47boost じゃないけど、std::isnan() かな。
std::numeric_limits<double>::quiet_NaN() と == すればいいかとも思ったが、駄目っぽい…。
0184デフォルトの名無しさん
2006/03/16(木) 10:56:13> NaNは、NaNを含むどんな浮動小数点数と比較しても等
> しくない。NaNの内部表現が一種類だとしてもである。
> そこで、変数の値がNaNかどうかは、それ自身と比較
> してみればすぐにわかる。
0185デフォルトの名無しさん
2006/03/16(木) 11:03:010186デフォルトの名無しさん
2006/03/16(木) 11:23:25>>183 std::isnan() って VC++2005 には無い。
>>181
要素の次元まで考慮したいです。
間違って代入したりできないように。
速度ベクトルと位置ベクトルは
あくまで違うものとして扱いたいです。
次元までは扱えませんが、double 等を
BOOST_STRONG_TYPEDEF するという手も有りますね。
0187デフォルトの名無しさん
2006/03/16(木) 11:54:420188デフォルトの名無しさん
2006/03/16(木) 11:56:100189デフォルトの名無しさん
2006/03/16(木) 12:04:44それともそれぞれのアーキテクチャの内部表現で見てるのかどっち?
規格上は特に規定されてない??
0190デフォルトの名無しさん
2006/03/16(木) 15:09:07後出しで糞コンパイラのことなんか出すなよ…。
_isnan()
0191デフォルトの名無しさん
2006/03/16(木) 17:47:28std::vector<int> v(100) ;
std::for_each(v.begin(), v.end()
, boost::lambda::_1 = rand()
) ;
すべての要素に乱数を代入したいのですが、
なぜか、すべてランダムな、ある値になってしまいます。
rand()が一回しか呼ばれていないようなのですが。
毎回rand()を呼ぶようにする方法はあるのでしょうか?
0192ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/16(木) 18:20:46boost::lambda::bind を使う。
std::for_each(v.begin(), v.end(),
boost::lambda::_1 = boost::lambda::bind(rand)
);
あと、boost::generator_iterator を使えば、ファンクタを定義すれば
boost::lambda を使わなくてもいいと思う。
0193デフォルトの名無しさん
2006/03/16(木) 18:57:51>演算の途中でNaNが発生したら例外を投げるようなものが欲しいのかと思ったが。
そう,そんなのがほしいです.なんかいい方法ありませんかね?
0194デフォルトの名無しさん
2006/03/17(金) 01:22:29_fpieee_flt()を使えば設定できるらしいけど。
0195デフォルトの名無しさん
2006/03/17(金) 01:56:26http://docs.sun.com/source/806-4847/ncg_lib.html の辺りだよね。
C99のfloat廻りを使って自分で書くしかないと思う。
0196デフォルトの名無しさん
2006/03/18(土) 14:46:50boost-jamはどれをダウンロードしてインストールすればよいのでしょうか?
それと、bjamのsTOOLSは何を指定すればよいのか教えてください。
よろしくお願いします。
0197デフォルトの名無しさん
2006/03/18(土) 17:02:29よくみるんだな
0198デフォルトの名無しさん
2006/03/18(土) 18:52:52Intel Compiler 8.0を使う場合.
sTOOLS=intel-linux
でOK.あと,bjamを使わなくてもコンパイルできるよ.
./configure --with-toolset=intel-linux
でOKだったはず.ver.8.0じゃない場合はこの手順じゃだめだ.
0199デフォルトの名無しさん
2006/03/22(水) 17:38:55外積じゃなくてテンソル積なんだな。
ちょっとツボった。ググってみると取り違えてるとこが幾つもあったし。
普通の外積は定義されてないかな?
//線形代数の範囲を超えそうだけど
0200デフォルトの名無しさん
2006/03/26(日) 02:48:05ここのサンプルをそのままコンパイル、実行したら
oa << g;
で、
mallocから例外がでてしまいます。
こんなことに陥った方いますか?
もうわけわからんヽ(`Д´)ノ
0201デフォルトの名無しさん
2006/03/26(日) 04:06:110202デフォルトの名無しさん
2006/03/26(日) 04:21:580203デフォルトの名無しさん
2006/03/26(日) 04:26:580204デフォルトの名無しさん
2006/03/26(日) 04:30:430205デフォルトの名無しさん
2006/03/26(日) 04:31:510206デフォルトの名無しさん
2006/03/26(日) 04:33:400207デフォルトの名無しさん
2006/03/26(日) 04:35:090208デフォルトの名無しさん
2006/03/26(日) 04:37:360209デフォルトの名無しさん
2006/03/26(日) 04:40:00| | / / / / / | /__ __/ [][] _| |_| |__ _| |_
| |. / / /⌒ヽ/ / / ̄ ̄|. l / / | _ | |_ レ'~ ̄|
| | / / ( ^ω^ ) / /. / / | |___  ̄| | / / / /| |
| | / / ノ/ / ノ /  ̄ ̄ / \__| | |  ̄ /_ / | |_
| |. / / // / ノ / / ̄ ̄ ̄ |_| |__| \/
| |/ / ⊂( し'./ / /
|. / | ノ' / /
| /. し' ./ /
 ̄ ̄ ̄  ̄ ̄
0210デフォルトの名無しさん
2006/03/26(日) 04:43:480211デフォルトの名無しさん
2006/03/26(日) 04:44:470212デフォルトの名無しさん
2006/03/26(日) 04:46:270213デフォルトの名無しさん
2006/03/26(日) 04:55:530214200
2006/03/26(日) 05:13:37コンパイラはVisualC++.net 2003、
boostのバージョンは1_33_1です。
0215デフォルトの名無しさん
2006/03/26(日) 05:44:400216200
2006/03/26(日) 05:57:53RTTIを有効にしたら直りました。
0217デフォルトの名無しさん
2006/03/26(日) 07:00:440218デフォルトの名無しさん
2006/03/26(日) 09:17:40派生クラス class Y : public X;
virtual メソッドは無し。
デストラクタも非 virtual。
というとき、 shared_ptr<X> px(new Y) ってしたら、
px は最終的にどのデストラクタを呼びます?
ちゃんと ~Y() を呼んでくれるのかなぁ。
仮想デストラクタにしておかないと ~X() を呼ぶだけ?
教えて Boost マスター!
0219デフォルトの名無しさん
2006/03/26(日) 09:30:520220デフォルトの名無しさん
2006/03/26(日) 10:58:34#ifdefかなにかでやる方法はないでしょうか?
0221デフォルトの名無しさん
2006/03/26(日) 11:04:07C++ では無理。
autotools のように、ヘッダの有無をチェックできるツールを使うべし。
0222デフォルトの名無しさん
2006/03/28(火) 13:27:34boost::shared_ptrならYのデストラクタを呼んでくれる。
それどころかboost::shared_ptr<void>ですら平気。
ttp://d.hatena.ne.jp/Cryolite/20060108
0223デフォルトの名無しさん
2006/03/28(火) 15:18:12new Y
なら大丈夫だけど
(X*)new Y
だとアウト。
0224デフォルトの名無しさん
2006/03/28(火) 16:56:05おお
知らんかった
0225デフォルトの名無しさん
2006/03/28(火) 20:32:33オブジェクトの破壊と構築に若干のコストがかかる。
0226デフォルトの名無しさん
2006/03/28(火) 20:48:07↓のようなことが平気で出来るようになる。
class X : public enable_shared_from_this< X > { int value; };
void func()
{
// Xを生成してスマートポインタにセット
shared_ptr<X> p1( new X );
{
// 生のポインタを取り出す。
X * pRaw = p1.get();
pRaw->value = 0;
// ポインタから、スマートポインタを取り出す
shared_ptr<X> p2 = pRaw->shared_from_this();
p2->value = 10;
}
assert( p1->value == 10 );
}
0227デフォルトの名無しさん
2006/03/29(水) 00:32:00>shared_ptr<X> p2 = pRaw->shared_from_this();
これってすごく便利そうだし面白いけど、
実際に使うとなるとどうなんだろう?
途中でdelete p2; とかしちゃったりして
せっかくのスマートポインタの恩恵が半減してしまいそう・・・
0228デフォルトの名無しさん
2006/03/29(水) 00:39:550229デフォルトの名無しさん
2006/03/29(水) 10:11:12enable_shared_from_thisってメンバ関数からthisポインタを
shared_ptr(またはweak_ptr)で渡すための苦肉の策でひょ。
0230デフォルトの名無しさん
2006/03/29(水) 10:14:16渡したいときとかに有効だよ。あまりいい例じゃないが↓
struct thread : public enable_shared_from_this< thread >{
static shared_ptr<thread> create( function1< void, shared_ptr<thread> > pr ){
return shared_ptr<thread>( new thread( pr ) );
}
static shared_ptr<thread> current_thread(){
void * p = current.get();
return ( p == 0 ) ? shared_ptr<thread>( new thread )
: static_cast< thread * >( p )->shared_from_this();
}
private:
static tls current; // 現在のスレッドを保存するためのスレッド固有領域
thread( function1< void, shared_ptr<thread> pr ) : proc( pr ){
hnd = _beginthreadex( ..., this ); // スレッドパラメータとして自分を渡す
}
static unsigned STDCALL threadproc( void * p ){
thread * self = static_cast< thread * >( p );
current.set( self ); // 現在のスレッドを保存
self->proc( self->shared_from_this() );
return 0;
}
...
};
void myproc( shared_ptr<thread> p ){
assert( p == thread::current_thread() );
}
int main(){
shared_ptr<thread> p = thread::create( myproc );
p->join();
}
0231デフォルトの名無しさん
2006/03/29(水) 10:37:35自身のメンバ関数から、自身のスマートポインタを返す時のために作られた、苦し紛れな方法だろ?
class T{
public:
shared_ptr<T> self(){ return shared_ptr<T>(this); } // 参照カウンタが複数できてバグる、アウト!
};
class T : public enable_shared_from_this<T>{
public:
shared_ptr<T> self(){ return shared_from_this(); } // セーフ
};
0232デフォルトの名無しさん
2006/03/29(水) 10:41:45230みたいにほかの使い方をしてもいいだろ。
0233デフォルトの名無しさん
2006/03/29(水) 11:10:400234デフォルトの名無しさん
2006/03/29(水) 23:48:230235デフォルトの名無しさん
2006/03/29(水) 23:54:30え?なになに、悔しかったの?
こんくらいで煽られたとかいってんのかぁ。無菌室で育ったのかなぁ…。
もしくはゆとり教育のせいか…。
今日のニュースで高校教科書策定の話が出てたけど、
それは「脱ゆとり」を目指して作られたらしいよ。
もう一度高校生からやりなおしてみるのはどうだろうか?
0236デフォルトの名無しさん
2006/03/29(水) 23:58:55トリッキーな使い方をするのは自由だけれども。
0237デフォルトの名無しさん
2006/03/30(木) 00:19:34なんか不味いの?
0238デフォルトの名無しさん
2006/03/30(木) 00:27:34>>230のような例になってないのは勘弁してくれな
0239デフォルトの名無しさん
2006/03/30(木) 08:20:20そうしたいということ自体が苦し紛れだ!って話?
別に>>230みたいなのでもいいと思うけど、嫌なの?
0240デフォルトの名無しさん
2006/03/30(木) 09:04:29auto_ptr<thread> th;
hoge(thread * t) {th.reset(t);}
};
try{
auto_ptr<thread> th(new thread(...));
hoge x(th.get());
th.release();
}catch(...){ ... }
ってやらないと、スレッド関連はいろいろマズいんじゃないの?
0241デフォルトの名無しさん
2006/03/30(木) 10:07:54ウザw
0242デフォルトの名無しさん
2006/03/30(木) 10:42:32オブジェクトに参照カウントを持たせて、intrusive_ptr を使うべきではある。
で、counted_base から派生させると楽だったんだけど、
counted_base は非推奨になってしまったのでそういうのは自前で
用意しないといけないが。
0243237
2006/03/30(木) 21:47:23やっぱりintrusive_ptrにするのが筋なのかぁ。
shared_ptrはよく使うけど、intrusive_ptrはほとんど使ったことないんだよね(面倒くさくて)。
thx。調べてみます。
0244デフォルトの名無しさん
2006/03/30(木) 21:57:19ものすごく悔しかったみたいだから許してあげて。
0245デフォルトの名無しさん
2006/03/30(木) 22:00:21ブラックボックス的に便利だからと使うのはちょっと危険。
0246デフォルトの名無しさん
2006/03/30(木) 22:08:34何あのマクロの嵐
0247デフォルトの名無しさん
2006/03/30(木) 23:02:330248デフォルトの名無しさん
2006/03/30(木) 23:57:55ウザw
0249デフォルトの名無しさん
2006/03/31(金) 21:56:58C++奥深すぎ、と思い知らされた
0250デフォルトの名無しさん
2006/03/31(金) 21:58:590251デフォルトの名無しさん
2006/03/31(金) 22:55:00私達中華人民はあなたたちの掲示板を拝見して笑ってみてますよ。ではありがとうございました。
0252デフォルトの名無しさん
2006/03/32(土) 04:28:04罪:しらん。使ったらろくな目にあわないだろう事は目に見えてるから、スルーしてるし
0253デフォルトの名無しさん
2006/03/32(土) 10:49:090254デフォルトの名無しさん
2006/03/32(土) 15:28:510255デフォルトの名無しさん
2006/03/32(土) 15:33:510256デフォルトの名無しさん
2006/03/32(土) 15:41:260257デフォルトの名無しさん
2006/03/32(土) 15:43:240258デフォルトの名無しさん
2006/03/32(土) 15:45:22ここにある
0259デフォルトの名無しさん
2006/04/02(日) 04:47:53恥ずかしいしね
0260デフォルトの名無しさん
2006/04/02(日) 09:32:37どんな下手くそなコードだろうと、本人がこっ恥ずかしいコードだろうと。
自分と違う考え方が表記されてるので常に参考になるものだ。
0261デフォルトの名無しさん
2006/04/02(日) 10:24:54激しく同意。
まぁプログラミングに限らない話だけど。
0262デフォルトの名無しさん
2006/04/02(日) 12:50:490263デフォルトの名無しさん
2006/04/06(木) 10:05:111パスにまとめる機能ってないんでしょうか?
a...(略)... b...
A...(略)... B...
0264デフォルトの名無しさん
2006/04/06(木) 10:45:57> a...(略)... b...
> A...(略)... B...
この例の意味がわからんが、
s/a\(.*\)b/A\1B/ ってことなのか?
0265デフォルトの名無しさん
2006/04/06(木) 10:46:45正規表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131028296/
0266263
2006/04/06(木) 11:31:35(a|b)でマッチさせたときに
置換文字列で順序付きでA、Bを指定できるようなイメージのつもりで書きました。
regex_iteratorの正規表現に(a|b)を指定させて
コールバックさせればいいのは分かるのですが、
置換文字列の方でそのような方法は確立されてないのでしょうか?
0267デフォルトの名無しさん
2006/04/06(木) 13:59:110268デフォルトの名無しさん
2006/04/06(木) 15:16:30「順序付き」の意味が曖昧なんだけど、 (説明が下手すぎ)
regex_replaceで、
"(a)|(b)"
"(?1A)(?2B)"
とは違うのか?
http://www.boost.org/libs/regex/doc/regex_replace.html
0269263
2006/04/06(木) 16:50:10できました、ありがとうございます。
(なぜかデフォルトの引数のmatch_defaultだけだととだめでした。)
boost::regex_replace(std::string("abc"),boost::regex("(a)|(b)"),"(?1A)(?2B)",boost::match_default | boost::format_all);//ABc
[a-z] -> [A-Z]
にしたいときはやっぱり
"(a)|(b)|.....(z)"
"(?1A)(?2B).....(?26Z)"
というおそろしい事態になってしまうのでしょうか?
0270デフォルトの名無しさん
2006/04/06(木) 17:04:32boost::string_algo
0271デフォルトの名無しさん
2006/04/06(木) 18:03:24「なぜか、ありがとうございます」
に読めて無意味にワロタww
0272263
2006/04/07(金) 15:58:35正規表現マッチ部分の置換をファンクタ指定できないぽ・・・
template <typename IteratorT,typename OutIteratorT,typename RegexT,typename ReplaceFnT>
void ReplaceRegexCopy( IteratorT ,IteratorT ,OutIteratorT ,const RegexT& ,ReplaceFnT);
template <typename MatchResultT,typename OutItr,typename NumT> void Replace(....);
0273デフォルトの名無しさん
2006/04/12(水) 09:07:19vc 7.0 でコンパイルすると,
boost::ptr_vector<const int*> pVect(1);
const int* i =new const int(1);
pVect.push_back(i); // コンパイルエラー
pVect[0] = i; // OK
となるのだが…
0274デフォルトの名無しさん
2006/04/12(水) 09:11:140275デフォルトの名無しさん
2006/04/12(水) 09:16:24ところで、boost::program_options で
インタラクティブなモードがあったら便利だなぁ、とか思いません?
いまはオプションの値をコマンドラインと設定ファイルから供給することが
できるわけですが、インタラクティブにキーボードから受け付けてくれるとべんりだなぁ。
あ、でも画面制御が必要なら curses とか使うハメになるから
Boost の枠内では無理なのかな。別に画面制御が必要な方式じゃなく、
単にライン読み込みでいいんだけどな。
0276デフォルトの名無しさん
2006/04/12(水) 09:40:25The story behind this question is that I would like to be able to build a simple
GUI parameter dialog based on the options_description, and I want to map
different types to different widgets.
こんな話題も出てましたね。
0277デフォルトの名無しさん
2006/04/12(水) 17:24:08でrftgyふじこpl
0278デフォルトの名無しさん
2006/04/20(木) 12:31:23コンテナだと、こんてな.end()で得て、
イタレータだとイタレター名()でコンストラクトってことになってるけど、
boost::iterator::filter_iteratorはend()を持っています。
どうしてなんでしょうかね?
0279デフォルトの名無しさん
2006/04/20(木) 13:20:52自分が止まるべき場所を知っていないとまずい場合があるからです.
実際に作ってみればすぐ分かりますが,
最後の要素のいくつかが filter_iterator の条件に合致した場合,
filter_iterator が終了場所を知っておかないと
increment において overrun してしまいます.
0280デフォルトの名無しさん
2006/04/20(木) 13:32:460281デフォルトの名無しさん
2006/04/20(木) 14:08:200282デフォルトの名無しさん
2006/04/24(月) 23:53:37ここんとこC++でいやいや仕事させられてるんで変なライブラリとかも見る機会が
あるんだが、BOOSTとか見ると何であんな複雑怪奇なことをしてGeneric Programmingに
取り組んでいるのか理解に苦しむ。素直にLisp/Scheme使えばいいのに・・・
アレは理解できない・というよりしたくない。エラーメッセージもわけわからんし、
修正→コンパイル→デバッグのサイクルに費やす時間が異常に長いしで不毛なことこの上なし。
166 :デフォルトの名無しさん :2005/12/05(月) 03:40:22
>>165
確かに boost の lambda は笑った。すべてをコンパイル時にやろうという
C++ の執念は凄いが、実用性は?だよね。
0283デフォルトの名無しさん
2006/04/25(火) 00:36:20Lisp/Scheme が素直だとは言えない環境も多くある。
ネイティブバイナリが必要なマイナーな環境でも
C++ と boost で Generic Programming の恩恵が受けられる。
十分な実用性だと思うよ。
0284デフォルトの名無しさん
2006/04/25(火) 00:41:33そこまでして C++ で偽 Generic Programming をやること自体が実用的だろうか、
という問題提起だろ。環境云々は別にして。
Generic Programming 自体が目的(そういう状況が想像できないけど)なら別だが。
0285デフォルトの名無しさん
2006/04/25(火) 00:45:55Generic Programming をすると実用性が下がるという前提がおかしい。
0286デフォルトの名無しさん
2006/04/25(火) 00:56:11あんな中途半端な機能で生産性が向上したりプログラムが読みやすくなったり
するのか、という意味での実用性だよ。速度的なペナルティは少ないからいわゆる
実用プログラムで使っても何ら問題はないと思うけど、使おうという気が起きない。
0287デフォルトの名無しさん
2006/04/25(火) 01:23:41さっきから C++ での Generic Programming じゃなくて、 boost::lambda に限った話だよな。
まさか std::vector 使う気がおきないからって可変長配列を自分で書き起こすわけも無いだろうし。
boost::lambda の「使おうという気」はこんな感じ。
http://www.boost.org/doc/html/lambda/s03.html#id2707350
これ読んで使う気にならないなら使わなくていい。
むしろライブラリの設計自体と思想が合わないだろうから使わないほうがいい。
0288デフォルトの名無しさん
2006/04/25(火) 01:32:40もちろんC++のテンプレート一般の話ではなく、Boostのlambdaの話ね。
その例は知ってるけど、正直言って実際に仕事のプログラムで使おうという気は
起きなかった。C++でここまでできるんだという面白さはあるし、ある意味Boost
らしいなとも思うけどね。
0289デフォルトの名無しさん
2006/04/25(火) 02:54:46ローカルクラスが普通のクラスと同じように扱えるだけでも十分です……
0290デフォルトの名無しさん
2006/04/25(火) 06:47:00CLOSのdebugもたいがい苦しいが。
daemon methodやcall-next-method駆使してある
他人のプログラムは追っていてもわけがわからなくなるよ。
boost::lambdaで一番困るのは、
何故コンパイルエラーになるかすぐに分からない時。
3行くらいになる型同士を比較したり。文句言う人がいるのも分かる。
0291デフォルトの名無しさん
2006/04/25(火) 20:14:570292デフォルトの名無しさん
2006/04/25(火) 23:07:32研究室で遊んでる分には楽しいけどね
0293デフォルトの名無しさん
2006/04/25(火) 23:09:38もっと遅い言語がいっぱいビジネスで使われている現状は無視するのね
0295デフォルトの名無しさん
2006/04/25(火) 23:17:55かかんと思うぞ。>>293はPerlとかPHPとかRubyとかPythonとかそういう系だろ。
0296デフォルトの名無しさん
2006/04/25(火) 23:38:04まで考慮すれば速度的にC++を超える言語なんかアセンブラ/機械語だけだろ。
0297デフォルトの名無しさん
2006/04/25(火) 23:53:46C++を速度的に超える言語はいくつかあると思う。
某サイトのベンチマークではHaskellよりも遅いと出てるし、
速度的にはCとC++は分けて考えないと。
0298デフォルトの名無しさん
2006/04/26(水) 00:04:02Javaが遅いのは許せるがLispが遅いのは許せない
0299デフォルトの名無しさん
2006/04/26(水) 00:05:12PerlとかPHPとかRubyとかPythonは、言語というよりWeb向けのスクリプトでしょ
Lispと比べてどうする?
0300デフォルトの名無しさん
2006/04/26(水) 00:08:27言語自体の問題とコンテナ等ライブラリの実装の問題も分けて考えないと。
0301デフォルトの名無しさん
2006/04/26(水) 00:08:290302デフォルトの名無しさん
2006/04/26(水) 00:09:55そうだよね
C++なんて幾らでもパフォーマンスを上げられるよね
生産性は落ちるかもしれないけどね、まあトレード・オフって奴だ
0303デフォルトの名無しさん
2006/04/26(水) 00:11:12最近のビジネスアプリケーションの多くがそういう「スクリプト言語」で記述されて
いるのは事実だぜ。
0304デフォルトの名無しさん
2006/04/26(水) 00:13:53速度云々よりもランタイム環境(ライセンスなども含めて)の問題が大きいかもね。
0305デフォルトの名無しさん
2006/04/26(水) 01:07:390306デフォルトの名無しさん
2006/04/26(水) 01:19:26開発できるツールとして成立してないじゃん。
0307デフォルトの名無しさん
2006/04/26(水) 01:33:580308デフォルトの名無しさん
2006/04/26(水) 01:44:05この露出狂が!
0309デフォルトの名無しさん
2006/04/26(水) 13:26:49その言語を使える人間が簡単に確保できることがもっとも重要なのさ。
0310デフォルトの名無しさん
2006/04/26(水) 15:58:140311デフォルトの名無しさん
2006/04/26(水) 16:29:08printf("%E\n", lexical_cast<double>("+52.0000E-03"));
で、
> 5.200000E-002
と表示されたが。
0312デフォルトの名無しさん
2006/04/28(金) 15:14:120313デフォルトの名無しさん
2006/04/28(金) 22:27:510314デフォルトの名無しさん
2006/04/30(日) 02:37:120315デフォルトの名無しさん
2006/04/30(日) 14:44:250316デフォルトの名無しさん
2006/04/30(日) 18:52:520317デフォルトの名無しさん
2006/05/04(木) 03:39:43忘れ去られたな。
一人で作ってるライブラリだとこうなることが多い。
0318デフォルトの名無しさん
2006/05/04(木) 03:52:52似たようなのが他にあればそっちを使っても良いけど
0319デフォルトの名無しさん
2006/05/04(木) 10:50:04SingletonはBoostでも作成中みたいだけど、どうなったんかね?
0320デフォルトの名無しさん
2006/05/04(木) 15:54:040321デフォルトの名無しさん
2006/05/04(木) 19:18:33どんなんなるか早く見てみたいな
0322デフォルトの名無しさん
2006/05/04(木) 19:53:12もう2年以上更新が止まってるんだね
もう日本語サイトは用済み? みんな本家を見てるの?
0323デフォルトの名無しさん
2006/05/04(木) 20:09:57テコ入れに君が翻訳に参加すれば状況は変わるお。
頑張ってくれ、応援してるお。
0324デフォルトの名無しさん
2006/05/04(木) 20:21:20Boost自体がもう停滞気味
0325デフォルトの名無しさん
2006/05/04(木) 22:30:05ツール使ってジェネれートされたhtmlソースを見たら
翻訳する気が失せた。
0326322
2006/05/04(木) 22:43:38Javaだと皆直接英語を見ることが多いなあ
インド人とかと仕事する機会が多いことも英語への拍車をかけてるかも
>>324
Javaだと例えばJBossとジェロニモが覇権争いをしてる、みたいな感じでイノベーションに
休む暇が無いって感じなのにね
JavaからC++に来て思ったのがデザインパターン知ってる人がおそろしく少ない点
知っててもホントに基本的なsingletonとかfactoryとかその程度だし
0327デフォルトの名無しさん
2006/05/04(木) 22:49:15昔の話だから今はどうか知らないけど、Javaの場合、日本語訳がウンコだったてのもあるからじゃない?
0328322
2006/05/04(木) 22:51:39優秀な奴がプログラムすると素晴しいものができる、と信じてる
最も成功してるGoogleとかは、開発にC++使ってんのかなあ?
0329デフォルトの名無しさん
2006/05/04(木) 22:54:40無いからな。
0330デフォルトの名無しさん
2006/05/04(木) 23:07:25ttp://goog-sparsehash.sourceforge.net/
使ってないのにこんなもん造ってるならそれはそれで笑えるな
0331328
2006/05/04(木) 23:35:13俺は使ってると信じてるよ、間違い無く使ってるはずだと
Google的なイノベーションを起こすのはC++だってね
だからC++に可能性を感じてるんだが
でもGoogleの基盤システムのソースコードを読んでないから確信のままなんだけどね
でもこれからのイノベーションはこっちの方向なんだろうね
0332デフォルトの名無しさん
2006/05/05(金) 00:12:10プロのプログラマでC++を知らなきゃモグリだが、すべてをC++で済ませてたら無知だ。
0333デフォルトの名無しさん
2006/05/05(金) 00:14:28その意味ではC以外で一番の言語だろ。
0334デフォルトの名無しさん
2006/05/05(金) 00:21:59「すませられる」と「適している」は別モンだろうが。
0335デフォルトの名無しさん
2006/05/05(金) 00:23:26SQLやHTMLを全く知らない職業プログラマとか結構の割合で見るけど、どう思う?
まぁ、「俺は組み込み系一筋です」ってヤツとかならわからんでもないけど、
そうでもないのにSQLやHTMLを知らないようなヤツは、俺は勘弁してくれって思う。
あと、Windowsの基本的な操作すら理解していない職業プログラマとかもいまだにいたりすんだよなぁ。
0336デフォルトの名無しさん
2006/05/05(金) 00:34:52人月単価の弊害かもね、レベルの低い連中を淘汰できないのは
0337デフォルトの名無しさん
2006/05/05(金) 00:38:210338デフォルトの名無しさん
2006/05/05(金) 00:43:08ワラッタ(笑
0339デフォルトの名無しさん
2006/05/05(金) 00:45:09まぁ、よくでる話ではあるけど、やっぱりプログラマって免許制にでもして
あまりにもレベルの低すぎるヤツだけでもこの業界から追放して欲すぃ。
他に就く職業がないからって理由だけで人手不足のこの業界を喰い物する連中を誰か排除してくれ〜
0340デフォルトの名無しさん
2006/05/05(金) 00:49:40うちはそんなの雇わないからへっちゃら。君んとこの人事がアホなだけ。
××試験の結果と役に立つかどうかは別物だから、おそらく免許制は無意味。
0341デフォルトの名無しさん
2006/05/05(金) 00:57:23学歴と一緒。
0342デフォルトの名無しさん
2006/05/05(金) 00:58:22所謂、「足切り」するだけでも全然違うって。
でも、人手不足という現状からそーいったことが現実に行われることはないだろうけどね。
>君んとこの人事がアホなだけ。
反論のしようがございません。orz
0343デフォルトの名無しさん
2006/05/05(金) 07:32:570344デフォルトの名無しさん
2006/05/05(金) 07:52:48Singleton library written by Jason Hise was NOT accepted in Boost.
ってなったみたいだけど。
なんというか、boostにないのが不思議なくらい必要不可欠な
機能なんだから早く問題解決してsandboxにでもいいから
入れてほしいな
0345デフォルトの名無しさん
2006/05/05(金) 08:22:310346デフォルトの名無しさん
2006/05/05(金) 15:44:36> Date: 2005-05-23 16:52 +900
> they uncovered several weknesses in current design and implementation.
だけど、それから新しいの出てないよね。
0347デフォルトの名無しさん
2006/05/05(金) 17:17:03C++プログラマてきには仕事ではHTMLとか少ないんだろ。
それに、あんなもんてきとーなレベルなら勉強するまでも無く使えるだろ。
できないって言ってるのはやりたくないだけ。
それより、SQLっつーかDB。iBATISのC++版みたいなのない?
灰羽とかのような厨くさいのはいらないから
0348デフォルトの名無しさん
2006/05/05(金) 17:42:21> てきとーなレベルなら勉強するまでも無く使える
あー、これ便利な言い方ですよね。
「てきとー」の内容次第で色んなものに対してこう言うことができる。
結局何も言っていないのと同じですが、パッと見はそう見えない。便利便利 :-)
0349デフォルトの名無しさん
2006/05/05(金) 17:45:110350デフォルトの名無しさん
2006/05/05(金) 17:49:43あと、なんとなくageとくよ
0351デフォルトの名無しさん
2006/05/05(金) 17:55:270352デフォルトの名無しさん
2006/05/05(金) 20:03:350353デフォルトの名無しさん
2006/05/05(金) 20:28:08EclipseのC++プラグインはチンケ過ぎる
0354デフォルトの名無しさん
2006/05/05(金) 20:33:26普通にVCとかKDevelop使えばいいじゃないか
0355デフォルトの名無しさん
2006/05/05(金) 21:25:37未だにVC++6.0使ってることに苛立ちを感じない?
時代に取り残された感じがすんだよね
マイクロソフトにも見捨てられてるし
0356デフォルトの名無しさん
2006/05/05(金) 21:31:500357デフォルトの名無しさん
2006/05/05(金) 23:08:160358デフォルトの名無しさん
2006/05/05(金) 23:25:48未だにVC++4を使ってる漏れには、何を感じます?
SA・TSU・I ?
0359デフォルトの名無しさん
2006/05/05(金) 23:30:12便意
0360デフォルトの名無しさん
2006/05/05(金) 23:33:53残尿感
0361デフォルトの名無しさん
2006/05/05(金) 23:52:31相手にすらなってない。ましてやKDevelopは論外。
0362デフォルトの名無しさん
2006/05/05(金) 23:58:260363デフォルトの名無しさん
2006/05/05(金) 23:59:310364デフォルトの名無しさん
2006/05/06(土) 00:02:340365デフォルトの名無しさん
2006/05/06(土) 00:04:02だが、C++に関しても、そういうIDEが出て来ないとダメだ。
C++にとって、これは大きなマイナス。
0366デフォルトの名無しさん
2006/05/06(土) 00:04:360367デフォルトの名無しさん
2006/05/06(土) 00:10:18エラーを表示したりQuick Fixでそのエラー直したりという機能が
ないから、まだまだだな。
0368デフォルトの名無しさん
2006/05/06(土) 00:13:02MSもそこがわかってたのでJavaのコピペのC#を出してきたんだと思うよ。
0369デフォルトの名無しさん
2006/05/06(土) 00:14:48言語仕様を扱いやすくするわけじゃなくて、IDEを扱いやすくしてくれと
いうことなんだが。
それとも、C++の言語仕様が邪魔してるのかな。
0370デフォルトの名無しさん
2006/05/06(土) 00:16:33などとは相性が悪い気がする。その点、C#やJavaは楽だよね。
0371デフォルトの名無しさん
2006/05/06(土) 00:17:480372デフォルトの名無しさん
2006/05/06(土) 00:19:27要所要所で使い分ければいいじゃん、くだらね
0373デフォルトの名無しさん
2006/05/06(土) 00:20:30確かにそういう気はするな。
だが、JavaのIDEで出来てることが、C#で出来てないってことは
やはりMSの開発がまだ遅れてるという要素も強いんじゃないかな。
オープンソースコミュニティも駄目だし。
0374デフォルトの名無しさん
2006/05/06(土) 00:22:01それはそうなんだけど、C++にも〜が欲しいっていう要望だろ。
それは使い分けろじゃ解決にならない。
0375デフォルトの名無しさん
2006/05/06(土) 00:24:25画像の自動生成にHSP使ってる俺はだめですかそうですか
0376デフォルトの名無しさん
2006/05/06(土) 00:24:580377デフォルトの名無しさん
2006/05/06(土) 00:25:30まあ2chなんてそんなもんだ。
0378デフォルトの名無しさん
2006/05/06(土) 00:26:16戻れなくなりつつある。
という人は結構いるはず。
C#の人ですらそういう人は多いかもしれん。
0379デフォルトの名無しさん
2006/05/06(土) 00:31:07一言で言えばC#やJavaは文法が単純(容易に解析できる)なので自動的に
書き換えたりする機能と馴染みやすいということ。
その分、C++のほうが自由度は高いんだけどね。C++の文法解析の大変さは
STLやboostを使ったときのコンパイルの遅さで実感できるよね。
0380デフォルトの名無しさん
2006/05/06(土) 00:35:140381デフォルトの名無しさん
2006/05/06(土) 00:40:13C++の方がはるかに強力。
だから、確かに静的には、C++の方が強力で自由度が高いのは
確か。
ただし、Javaを学習していくと、見た目とは違ってとても動的な
言語であるということがわかってくるよ。
動的な側面を含めれば一概にC++の自由度が高いとは言えなくなる。
0382デフォルトの名無しさん
2006/05/06(土) 03:29:260383デフォルトの名無しさん
2006/05/06(土) 03:39:29詳しく
0384デフォルトの名無しさん
2006/05/06(土) 05:11:38>言語であるということがわかってくるよ。
そうなの? ぜんぜん気がつかなかったけど、具体的にどう使えばそうなるの?
C#の場合はデリゲータが微妙に可能性あるのかなと思ったんだけど、
C#もGenericsはダメだ、無いよりまし程度。
C++はテンプレートと多重継承のおかげでJava, C#とくらべて
C++ > 越えられない壁 > C# > Java
って、感じかと思ってるけど、あくまで言語能力に限った話だね。
Javaとかと比べるといろんなところにめんどくささがあって、たとえば
便利そうなライブラリがあって使ってみようと思うと、ヘッダーをインクルードして、
staticリンク・DLL、マルチスレッド対応、どれにする? とか、
GCCのlibないぞとかBCでソースからコンパイルしようとすると
コンパイルとーらねーとか、ほんとめんどー。
あと、実行環境。C++にもJVMや.Netフレームワークのようなランタイムみたいなのが
欲しい、boostにそういうの期待したいんだけど
0385デフォルトの名無しさん
2006/05/06(土) 05:37:15JavaもC#もC/C++の課題を克服する目的で作られたような所があるからね
BoostもLinux派とWindows派に切り裂かれてるような所があるしね
0386デフォルトの名無しさん
2006/05/06(土) 07:09:18>そうなの? ぜんぜん気がつかなかったけど、具体的にどう使えばそうなるの?
まず、こういう言語の話をするときの動的とか静的っていう言葉の
意味がわかってるか?
わかってるのならJavaのリフレクションを調べてみろ。
例えば、リフレクションを使えば実行時にメソッド名の文字列で
メソッドを呼び出せたりする。
それを聞いただけでもC++よりはるかに動的であることがわかるだろう。
もちろん、動的ということはそれだけエラーの発見が遅れるという欠点があるが
自由度・柔軟性という点で見ると動的なのはやはり有利だな。
まあそもそもIDEでコンパイル前にたいていのエラーがわかっちゃうから
総合的に見ればJavaの方がエラーの発見は早いんだがねw
0387デフォルトの名無しさん
2006/05/06(土) 07:38:16その生い立ち上、Networkに関しては
Java>>>>>>>>>>C++
だな。
NetworkやXMLとの相性の良さはC++じゃどうしようもない。
0388デフォルトの名無しさん
2006/05/06(土) 12:06:02Javaは一般で思われてるほど遅くないけど、やっぱりメモリは馬鹿食いするし、
その点C++は断然有利。
俺も業務ではJavaだけど、家で作るときはDirectX + C++だもんな。
0389デフォルトの名無しさん
2006/05/06(土) 12:15:00Javaは、邪魔だよお
0390デフォルトの名無しさん
2006/05/06(土) 13:07:010391デフォルトの名無しさん
2006/05/06(土) 13:09:440392デフォルトの名無しさん
2006/05/06(土) 13:34:00フリーか安い物で。
0393デフォルトの名無しさん
2006/05/06(土) 13:41:55http://www.compuware.com/products/devpartner/default.htm
0394デフォルトの名無しさん
2006/05/06(土) 19:21:59getMethodとかinvoke ? そういえばそんなのもあったね。
個人的には見た目が(ry というのはおいといて、これって
COMのディスパッチまんまなんだよな。JVMや.NETにはORBが内蔵されてて
こんな感じで使えるようにしてるんだろうな。
つーか、簡単にライブラリを使えるようにするためにはORBが不可欠なんだろう、
C++にはそれが無いからめんどーなんだろうな。
boostってORBあったっけ、boost::python ってどうなってるの? つーことで
>>382
詳しく
0395デフォルトの名無しさん
2006/05/06(土) 19:27:120396デフォルトの名無しさん
2006/05/06(土) 19:59:11下の方使ってみた。
サンキュ
0397デフォルトの名無しさん
2006/05/06(土) 20:06:03C++相談室 part49
http://pc8.2ch.net/test/read.cgi/tech/1146185570/
0398デフォルトの名無しさん
2006/05/06(土) 22:22:10C++の派生スレで出たゴミを本スレに捨てるな
0399デフォルトの名無しさん
2006/05/07(日) 15:15:58だから、COMとかそういうんじゃなくて、言語側で出来るところが違うんだよww
0400デフォルトの名無しさん
2006/05/07(日) 15:50:270401デフォルトの名無しさん
2006/05/07(日) 17:34:22COMって言われてもなw
0402デフォルトの名無しさん
2006/05/07(日) 17:37:09動的と静的の違いがわからんならすっこんでろ
0403デフォルトの名無しさん
2006/05/07(日) 17:41:24>例えば、リフレクションを使えば実行時にメソッド名の文字列で
>メソッドを呼び出せたりする。
因みにない場合はどうなるの?
0404デフォルトの名無しさん
2006/05/07(日) 17:44:100405デフォルトの名無しさん
2006/05/07(日) 18:05:13C++は静的にやるからいいんだよ。
0406デフォルトの名無しさん
2006/05/07(日) 18:43:28昔やり掛けたけど、考えてみればBoostでもJavaでもできるだよな
ちょっとPython に嵌ってみようかな
0407デフォルトの名無しさん
2006/05/07(日) 19:23:58テンプレートライブラリとして提供するべきですよね〜
0408デフォルトの名無しさん
2006/05/07(日) 19:31:59まったくだ。
-fno-rtti -fno-exceptions なターゲットでもテンプレートばりばり
使えるのが C++ のいいところじゃねーか
0409デフォルトの名無しさん
2006/05/07(日) 19:36:070410デフォルトの名無しさん
2006/05/08(月) 01:13:32ttp://d.hatena.ne.jp/shinichiro_h/20051116
0411デフォルトの名無しさん
2006/05/08(月) 01:26:330412デフォルトの名無しさん
2006/05/08(月) 01:27:29リフレクションを提供してたなー。
んでVBからでも(バイナリしか無いCOMオブジェクトの)C++の仮想関数を呼べた。
いまにして思えば結構COMって充実していたな・・・
0413デフォルトの名無しさん
2006/05/08(月) 06:31:25#if, #ifdefはウザイ事この上ない。構文解析がかなり難しい。
コンパイルする時と違って、全forkを追わないといけないから。
typedefもぷちウザイ。
とはいえtypedef template欲しいんだけど…
0414デフォルトの名無しさん
2006/05/08(月) 10:19:26ああいうのが面倒になったから .NET に走ってるんだよ。w
0415デフォルトの名無しさん
2006/05/08(月) 10:58:210416デフォルトの名無しさん
2006/05/08(月) 15:11:070417デフォルトの名無しさん
2006/05/08(月) 16:27:120418デフォルトの名無しさん
2006/05/08(月) 20:21:04激しく同意
0419デフォルトの名無しさん
2006/05/08(月) 20:30:240420デフォルトの名無しさん
2006/05/09(火) 06:18:31namespace io = boost::iostreams;
char buf[100] = {0};
{
io::stream<io::array> stream(buf);
boost::archive::binary_oarchive oa(stream);
oa << std::string("hello");
}
{
io::stream<io::array> stream(buf);
boost::archive::binary_iarchive ia(stream);
long l=0;
ia >> l;
std::cout << l << std::endl; // 5と表示されました
}
0421420
2006/05/12(金) 02:04:47クラス情報だけローカル変数に読み込んですぐ捨てられてしまってます.
型があってる,あってないはユーザーが面倒見ろよということなのでしょうか?
もしくはほかの所でチェックする,しないを切り替えるスイッチがあるのでしょうか?
std::stringやlongとかは実装レベルがprimitive_typeで保存されてしまうようなので薄いラッパーで包んで実験してます
struct mystring {
std::string str;
private:
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar, const unsigned int) { ar & str; }
};
struct mylong {
long l;
private:
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar, const unsigned int) { ar & l; }
};
BOOST_CLASS_IMPLEMENTATION(mystring, boost::serialization::object_class_info);
BOOST_CLASS_IMPLEMENTATION(mylong, boost::serialization::object_class_info);
0422デフォルトの名無しさん
2006/05/12(金) 07:22:33型があってるかどうかは自分で面倒見ろってことなんじゃね?
しかしよく考えたら、Boost に限らずシリアライザって
ちゃんと読み込めたかどうかの判定って難しいよな。
偶然矛盾無い値として読めてるだけかもしれないし。
本来なら XML スキーマを用意してバリデーションするべきなのかな?
0423デフォルトの名無しさん
2006/05/12(金) 07:49:120424デフォルトの名無しさん
2006/05/12(金) 08:02:56xml_oarchive ではバリデーションしないよってこと。
0425デフォルトの名無しさん
2006/05/12(金) 10:06:38てかload_preambleでクラス情報捨てられてるとか分かってるなら自分で実装できんじゃね?
0426420
2006/05/12(金) 19:06:27struct mystring {
static const int id = 1;
private:
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar, const unsigned int v) {
if(id!=v)
throw std::logic_error("aho");
...
}
...
};
struct mylong {
static const int id = 2;
//あとはmystringとおんなじかんじ
...
};
BOOST_CLASS_VERSION(mystring, mystring::id)
BOOST_CLASS_VERSION(mylong, mylong::id)
>> 422
調べてみたのですがC#(.NET Framework クラス ライブラリ)のSerialization...BinaryFormatter.Deserializeメソッドはobject型を返すようになってるみたいです
そして戻り値をas演算子などで予想される型にdynamic_castして型があってるかどうか判定したりして使うように思われます
>> 423
xml_oarchive, xml_iarchiveで保存, 復元するようにすると確かに望んでるように動作することを確認しました.
しかし今回のケースでxmlを使用するのはちょっと贅沢すぎるような気がしました
>> 425
さいわい再実装することなく希望する動作をさせることに成功しました.
しかしながらほかのboostのライブラリとくらべtemplateによる動作の切り替えの幅がせまく,なにかにつけてマクロを使わせてくるように感じました
のでそこらへんをフューチャーする実装を作ってみたいと思います(itukaヽ('ー`)ノ
0427デフォルトの名無しさん
2006/05/13(土) 02:36:55XMLでスマキでつか?
0428デフォルトの名無しさん
2006/05/18(木) 00:43:57struct A
{
template<class U>
void f(U u)
{
std::cout << u << std::endl;
}
};
template<class T,class U> void test(T& t, U u)
{
using namespace boost;
void (T::*fptr)(U) = T::template f<U>;
(t.*fptr)(777); // OK
function<void ()> fun = bind(T::template f<U>, t, u); // Error on vc7.1
fun();
}
int main()
{
test(A(), 777); return 0;
}
0429デフォルトの名無しさん
2006/05/18(木) 00:58:03- メンバ関数ポインタの取得に & が必要。
- 非 const 参照の引数として一時オブジェクトは使えない。
これだけ直したら、 gcc 3.4 と VS2005 で通ったよ。
エラーメッセージはなんて出るの?
0430428
2006/05/18(木) 01:19:38main.cpp(23): error C2784: 'boost::_bi::bind_t<boost::_bi::unspecified,F,_bi::list_av_2<A1,A2>::type> boost::bind(F,A1,A2)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
main.cpp(23): error C2784: 'boost::_bi::bind_t<R,boost::_mfi::cmf1<R,T,B1>,_bi::list_av_2<A1,A2>::type> boost::bind(R (__thiscall T::* )(B1) const,A1,A2)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
main.cpp(23): error C2784: 'boost::_bi::bind_t<R,boost::_mfi::mf1<R,T,B1>,_bi::list_av_2<A1,A2>::type> boost::bind(R (__thiscall T::* )(B1),A1,A2)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
main.cpp(23): error C2784: 'boost::_bi::bind_t<R,F,_bi::list_av_1<A1>::type> boost::bind(boost::type<R>,F,A1)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
main.cpp(23): error C2784: 'boost::_bi::bind_t<R,F,_bi::list_av_2<A1,A2>::type> boost::bind(F,A1,A2)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
main.cpp(23): error C2784: 'boost::_bi::bind_t<R,R(__cdecl *)(B1,B2),_bi::list_av_2<A1,A2>::type> boost::bind(R (__cdecl *)(B1,B2),A1,A2)'
: 'オーバーロードされた関数タイプ 用のテンプレート引数を 'オーバーロードされた関数タイプ' から減少できませんでした。
0431デフォルトの名無しさん
2006/05/18(木) 01:22:43>>429 の修正入れても変わらない?それなら、もうコンパイラのせいかもしれない。
0432428
2006/05/18(木) 01:29:13ありがとうございました。
0433デフォルトの名無しさん
2006/05/18(木) 01:32:02仕事でもなけりゃ、これを機に VS2005 Express に乗り換えればいいんじゃね?
0434デフォルトの名無しさん
2006/05/18(木) 15:33:37function<void ()> fun = bind(static_cast<void(T::*)(U)>(&T::template f<U>), t, u);
0435デフォルトの名無しさん
2006/05/18(木) 17:51:13g++ 3.3.5で通る
#include <iostream>
#include <boost/bind.hpp>
#include <boost/function.hpp>
using namespace std;
struct A
{
template<class U>
void f(U u)
{
std::cout << u << std::endl;
}
};
template<class T,class U> void test(T t, U u)
{
using namespace boost;
void (T::*fptr)(U) = &T::template f<U>;
(t.*fptr)(777); // OK
function<void ()> fun = bind(&T::template f<U>, t, u); // Error on vc7.1
fun();
}
int main()
{
test(A(), 777); return 0;
}
0436デフォルトの名無しさん
2006/05/19(金) 01:14:57コンパイルが通らないと疲労困憊するだろ
0437デフォルトの名無しさん
2006/05/19(金) 03:26:520438デフォルトの名無しさん
2006/05/19(金) 12:36:330439デフォルトの名無しさん
2006/05/20(土) 01:07:170440デフォルトの名無しさん
2006/05/20(土) 03:48:38エラー自体はまさしくコレなんですけどなんか解決策ありますか?
http://lists.boost.org/boost-users/2005/09/13765.php
0441440
2006/05/20(土) 04:03:21thread/src/one.cppの121行目の部分を
return ice_wrapper(&InterlockedCompareExchange, dest, exch, cmp);
から
return InterlockedCompareExchange(dest, exch, cmp);
にダイレクトに呼び出したらうまくいきました。
#defineマクロの所為らしい。
お騒がせしました。
0442デフォルトの名無しさん
2006/05/20(土) 21:08:53class HogeContainer {
intrusive_ptr<IHoge> m_hoge;
public:
void Create() {
IHoge* tmp;
foo->CreateHoge( &tmp );
m_hoge = tmp;
tmp->Release();
}
};
トータルではRelease系の関数無くなってて便利なのは分かるんだが。
なんか上手い方法ないかなあ
0443デフォルトの名無しさん
2006/05/20(土) 21:17:50どこが不満なのかはっきりわからんが、
生成するときのエラーはチェックしろよ。
IHoge* tmp;
if(CreateHoge(&tmp))
{
m_hoge = instrusive_ptr<IHoge>(tmp, false);
}
else
{
throw ...;
}
0444デフォルトの名無しさん
2006/05/20(土) 21:38:03instrusive_ptr使う利点って何?
0445デフォルトの名無しさん
2006/05/20(土) 21:53:29正直言うとこういうの手を出したの初めてなのであんまりよく知らないんで…
なんか色々とあるんですね
0446デフォルトの名無しさん
2006/05/21(日) 11:01:22class A {
public: std::string foo() { return std::string("aaa"); }
};
int main() {
A *a = new A();
std::string s = boost::bind(&A::foo ,a)();
std::cout << s.c_str() << std::endl;
}
上記コードは正しく aaa を吐き出しますが
main()内の2行目を
const char* q = boost::bind(&std::string::c_str, boost::bind(&A::foo ,a))();
にするとうまく動きません。( boost::bind(&A::foo, a)() としても同様 )
どなたかご教授頂ければ幸いです。
0447デフォルトの名無しさん
2006/05/21(日) 12:32:00class A {
public: std::string foo() { return std::string("aaa"); }
};
int main() {
A *a = new A();
const char* q = boost::bind(&std::string::c_str, boost::bind(&A::foo ,a))();
std::cout << q << std::endl;
}
で動くけど(環境はg++ 3.3.5)
エラーメッセージはどんな感じなの?
たぶん膨大なんだろうけど...
0448デフォルトの名無しさん
2006/05/21(日) 12:47:59#include <boost/bind/protect.hpp>
const char* q = boost::bind(&std::string::c_str, boost::protect(boost::bind(&A::foo ,a))())();
でだめなら諦める。
0449デフォルトの名無しさん
2006/05/21(日) 13:17:56レスありがとうございます。
特に>>447さん 説明不足でした。
「うまく動かない」というのは aaa を出力せずに 何も出力されない事を言います。
エラーメッセージは出ていません。コンパイラはVC++.net 2002(VC7.0)のものです。
そして >>448 さんのコードでも出力されませんでした…
boost::protectは見たこともなかったので、もう少し調べてみます。
0450デフォルトの名無しさん
2006/05/21(日) 13:29:25この文が終わった時点でfooの戻り値である一時オブジェクトの寿命も終わっただけではないのか?
0451447
2006/05/21(日) 13:29:59>「うまく動かない」というのは aaa を出力せずに 何も出力されない事を言います。
こちらの環境では447でaaaが出る
参考までに
0452デフォルトの名無しさん
2006/05/21(日) 14:08:36環境にもよるだろうけどこの程度コードなら「たまたまうまくいく」がまかり通るとおもうけど?
0453デフォルトの名無しさん
2006/05/21(日) 14:19:40一時オブジェクトの扱いがvcとgccで違えば結果も違ってくる
0455446
2006/05/21(日) 14:33:36>>450
たぶん、こちらのコンパイラではその説が正しいかと思います。
strcpy(q, boost::bind(&std::string::c_str, boost::bind(&A::foo ,a)())());
と書き換えたら、正しく aaa が出力されました。
そうすると、>>451=>>447さんの環境で動いたのは、>>453さんの仰る通りでしょうか。
これが正しければ寿命の関係から直接 const char* q に入れるのは諦めですね。
0456デフォルトの名無しさん
2006/05/21(日) 14:40:36std::cout << q << std::endl;
と同じ意味だから、要するに鼻から悪魔。
0457デフォルトの名無しさん
2006/05/21(日) 14:56:21>そうすると、>>451=>>447さんの環境で動いたのは、>>453さんの仰る通りでしょうか。
453の「一時オブジェクトの扱い」を一時オブジェクトのスコープと解すると,それは間違い
そうではなくて単にqの指し示すアドレスにある残骸がたまたま表示されてるのだろう
以下のコードでg++でも一時オブジェクトは適切なタイミングで壊されていることが確認できる
#include <iostream>
#include <string>
#include <boost/bind.hpp>
#include <boost/current_function.hpp>
class String: std::string {
typedef std::string Base_;
public:
String (const char *p): Base_ (p) {std::cout << BOOST_CURRENT_FUNCTION << std::endl;}
~String () {std::cout << BOOST_CURRENT_FUNCTION << std::endl;}
const char *c_str () const {return Base_::c_str ();}
};
struct A {
String foo() { return String("aaa"); }
};
int main() {
A *a = new A();
const char* q = boost::bind(&String::c_str, boost::bind(&A::foo ,a))();
std::cout << q << std::endl;
}
0458デフォルトの名無しさん
2006/05/21(日) 17:21:47そうだよね、環境が違えば扱いは変わるよね
同じ日本語でも
男が「愛してるよ」というのは一時オブジェクトだが、
女はそれをstaticなオブジェクトだと勘違いする
そこら辺がトラブルの元だな
0459デフォルトの名無しさん
2006/05/21(日) 19:57:440460デフォルトの名無しさん
2006/05/21(日) 19:58:470461デフォルトの名無しさん
2006/05/21(日) 20:41:080462デフォルトの名無しさん
2006/05/21(日) 20:54:44Commandパターン使えばいいのかな?
0463デフォルトの名無しさん
2006/05/21(日) 23:00:430464デフォルトの名無しさん
2006/05/21(日) 23:16:490465デフォルトの名無しさん
2006/05/21(日) 23:30:11そこで >>438 なわけだが。
0466デフォルトの名無しさん
2006/05/21(日) 23:35:10個人的にはとりあえずpoolが欲しい
0467デフォルトの名無しさん
2006/05/21(日) 23:45:160468466
2006/05/21(日) 23:47:100469デフォルトの名無しさん
2006/05/22(月) 00:03:550470デフォルトの名無しさん
2006/05/22(月) 00:08:120471デフォルトの名無しさん
2006/05/22(月) 00:11:220472デフォルトの名無しさん
2006/05/22(月) 00:55:260473デフォルトの名無しさん
2006/05/22(月) 00:57:290474デフォルトの名無しさん
2006/05/22(月) 00:59:37フツー、スレッド単体じゃなくてプロセスごと死なない?
0475デフォルトの名無しさん
2006/05/27(土) 11:34:170476デフォルトの名無しさん
2006/05/27(土) 13:03:100477デフォルトの名無しさん
2006/05/27(土) 14:25:050478デフォルトの名無しさん
2006/05/29(月) 07:01:03MPLのヘッダをインクルードしているのでだめだった。
0479デフォルトの名無しさん
2006/05/29(月) 07:44:520480デフォルトの名無しさん
2006/05/29(月) 07:52:250481デフォルトの名無しさん
2006/05/29(月) 08:14:240482デフォルトの名無しさん
2006/05/29(月) 15:00:30-iso-templates付けると。付けないと過去の互換モードらしい。
使ったことなくて、
http://womble.decadentplace.org.uk/c++/template-faq.html
ここの情報だけで語っている。
0483デフォルトの名無しさん
2006/05/29(月) 15:26:490484デフォルトの名無しさん
2006/05/29(月) 16:03:190485デフォルトの名無しさん
2006/05/29(月) 22:26:21おまい、綴りが違わねえか?
0486デフォルトの名無しさん
2006/05/29(月) 22:26:550487デフォルトの名無しさん
2006/05/29(月) 22:31:33CodeWarriorだしたとこならMetrowerksで正しいと思うが
0489デフォルトの名無しさん
2006/05/30(火) 20:53:55> ここは、得意の英語で誤るよ
日本語は得意でないようですね
0491デフォルトの名無しさん
2006/05/30(火) 21:31:34ハイブローなギャグかと深読みし、思いとどまってしまった俺。
0493デフォルトの名無しさん
2006/06/02(金) 08:09:210494デフォルトの名無しさん
2006/06/02(金) 10:29:42CodeWarriorは?
まだconfig/compiler/metrowerks.hppしかないけど、
CodeWarriorは9ってのは出ているの?
0495デフォルトの名無しさん
2006/06/02(金) 21:16:280496デフォルトの名無しさん
2006/06/02(金) 23:55:300497デフォルトの名無しさん
2006/06/02(金) 23:56:27香典が勿体ない
0498デフォルトの名無しさん
2006/06/03(土) 02:17:35ってどういう経緯でこのネーミングなの?単語見ても動作が分かりにくいんだけど
0499デフォルトの名無しさん
2006/06/03(土) 02:27:590500デフォルトの名無しさん
2006/06/03(土) 03:30:13何が分かりにくいかわからんのだが…
プリプロセッサで継続する二項パラメータを列挙する だろ
0501デフォルトの名無しさん
2006/06/03(土) 04:53:580502デフォルトの名無しさん
2006/06/03(土) 05:10:40名前見て動作を理解できるものなどほぼ無い
0503デフォルトの名無しさん
2006/06/03(土) 10:10:29ぱっと見て動作が分かるネーミング例を出してみろよ
0504デフォルトの名無しさん
2006/06/03(土) 10:33:050505デフォルトの名無しさん
2006/06/03(土) 10:37:200506デフォルトの名無しさん
2006/06/03(土) 10:40:30BOOST_PP_ENUM_TRAILING_BINARY_PARAMS
に代わるネーミング例だ
0507デフォルトの名無しさん
2006/06/03(土) 10:50:090508デフォルトの名無しさん
2006/06/03(土) 10:58:430509デフォルトの名無しさん
2006/06/03(土) 13:01:070510デフォルトの名無しさん
2006/06/03(土) 13:11:00そもそも処理が複雑なんだから、
一度覚えて、後から思い出せればいい。
0511デフォルトの名無しさん
2006/06/08(木) 22:02:36もう復活しないの?
0512デフォルトの名無しさん
2006/06/14(水) 05:55:240513デフォルトの名無しさん
2006/06/17(土) 14:30:32spirit & phoenix & functionで組んだらRTTIのせいか
オブジェクトがやたらでかくなった(g++ -O2 / -g無し)。
shared_ptr.hppですらtypeid使ってるみたいで、-fno-rttiだと
コンパイルすらできないのは痛い。
0514デフォルトの名無しさん
2006/06/17(土) 16:38:18BOOST_NO_RTTI ってのが提案されてたのを見つけた。
http://lists.boost.org/Archives/boost/2005/01/78468.php
実際に追加されてるかどうかは未確認。
0515513
2006/06/17(土) 18:26:23そもそもg++はRTTIの有り無しのオブジェクトを混ぜてリンクできるくせに
(RTTI無しのオブジェクト内で生成したオブジェクトをRTTI有りの
オブジェクト内で受け取ってtypeidが呼べる。結果は0xへの参照が帰ってく
るみたい)ファイル内にtypeidが混ざっているだけでコンパイル出来ないっ
てのは激しく片手落ちな感じがする。
templateの使用時の事を考えるとtypeinfoの有無はクラス毎に指定したい。
C++0xで入れてくんないかな。っていうか今すぐほすぅい。
0516デフォルトの名無しさん
2006/06/17(土) 18:28:190517513
2006/06/17(土) 18:47:31explassion template(spirit/bind)的な使いかたすると型名が
凶悪に長くなる。もはやコンパイラの実装の問題では済まない
レベルだと思う(バイナリサイズが3倍近くになる)
0518デフォルトの名無しさん
2006/06/17(土) 23:16:09そういう目的で作られるクラスには virtual な関数が無いだろうから、
RTTI は生成されないんじゃないの?
0519デフォルトの名無しさん
2006/06/17(土) 23:20:250520デフォルトの名無しさん
2006/06/17(土) 23:30:02実際に typeid 使ってるなら変わらないけど。
0521デフォルトの名無しさん
2006/06/18(日) 00:01:56virtualな関数が無いクラスに対するtypeidは単なる定数式に展開される。
もちろんオブジェクトごとにtypeidが付くこともない。
0522513
2006/06/18(日) 00:17:25>そういう目的で作られるクラスにはvirtualは無い
そうでも無い気がするけど。
少なくともspiritで言えば "aaa>>(bbb|ccc)"みたいに
生成したクラスはrule<>のような型に入れるしかなくて、
その結果、仮想関数使って実際の型に飛ばすしかない。
ただ、それって単なる実装でしか無い気がするし。
組み込みのこととか考えると、virtualを持っているだけで
型情報を組み込んじゃうってのはあまりに安直なような気がする。
0523デフォルトの名無しさん
2006/06/18(日) 00:30:40単位のオーバーヘッドにはならない(賢い実装ならば)んだけど。
0524デフォルトの名無しさん
2006/06/18(日) 00:34:14function なんかは RTTI によるコードの膨張を嫌って
仮想関数を使わない実装になってる。
spirit もそこらへん改良できるかもね。
0525デフォルトの名無しさん
2006/06/18(日) 08:35:55それは「RTTIが生成されない」ってことじゃないでしょう?
実装上の工夫が行われているだけ。
0526デフォルトの名無しさん
2006/06/18(日) 13:10:51virtual関数を持たないclassのインスタンスは余分なものを持っちゃいけないと
C++の仕様で定義されていたと記憶している。
virtualなものが無いのにインタンスごとにRTTIを持つなんてアホな実装が存在
するなら教えて欲しい。
0527デフォルトの名無しさん
2006/06/20(火) 18:31:40ようにかけるところが C++ のいいところだと思うんだが、
もはや RTTI 必須なのか。
0528デフォルトの名無しさん
2006/06/20(火) 18:47:47virtualが必要なのと同じ理由でしょ。virtualを全く使わなければ>>526の言うように
RTTIの存在自体はオーバーヘッドにならないはずだし。
0529デフォルトの名無しさん
2006/06/20(火) 18:48:50その通りなんだけど、RTTIを使えるように も 書けるところがC++のいいろことだ。
0530デフォルトの名無しさん
2006/06/20(火) 18:56:09ただ、Boost みたいなかなり重要なライブラリでは
できれば RTTI を使わずに実現できる部分は
そうしてほしかったな、と。
0531デフォルトの名無しさん
2006/06/21(水) 04:10:44それは正論だから、ほんとでやる気と時間があるなら >>514 のやつを
進めてサブミットしてほしい。
0532デフォルトの名無しさん
2006/06/27(火) 01:12:130533デフォルトの名無しさん
2006/06/27(火) 01:32:11俺もだが数時間前は普通にアクセスできた。
つか、www.kmonos.net自体403になってるな。
0534デフォルトの名無しさん
2006/06/27(火) 02:27:33もうやめるのかな
0535デフォルトの名無しさん
2006/06/27(火) 02:42:42>>534
ttp://www.kmonos.net/wlog/ はずっと続けてるぞ。
0536デフォルトの名無しさん
2006/06/27(火) 02:59:34bool a = true, b = false;
cout << (_1 ? 5 : 3)(a) << endl; // 5が出力される
cout << (_1 ? 5 : 3)(b) << endl; // 3が出力される
?:はオーバーロードできないからこのコードはコンパイル通らないんだけど、
(_1 ? 5 : 3)に相当するファンクタを別のラムダ式で書き表せないかな?
(3 + _1 * (5 - 3))みたいなのはナシで…。
0537デフォルトの名無しさん
2006/06/27(火) 03:28:13(if_(_1)[cout << constant(5)].else_[cout << constant(3)])(a); // 5を出力
(if_(_1)[cout << constant(5)].else_[cout << constant(3)])(b); // 3を出力
・・・はさすがにあんまりか。
0538デフォルトの名無しさん
2006/06/27(火) 17:08:200539デフォルトの名無しさん
2006/06/27(火) 20:08:40C++ プログラムまわりの標準的な glue 言語として
Python がおすすめってこと?
それとも他の言語バインディングもこれから続々登場?
0540デフォルトの名無しさん
2006/06/27(火) 21:04:39たんにpythonがboost開発者たちにとって主流だからでは。
0541デフォルトの名無しさん
2006/06/27(火) 21:17:57Visual Studio に IronPython も入ってきたら、
今までは使われていなかったところにも Python が普及していきそう。
0542デフォルトの名無しさん
2006/06/27(火) 22:13:43if_then_else_return っていうのがあります.
>>539
もちろん後者のはずです.ただし「続々」かどうかは微妙かも知れません.
個人的にも個々の言語の binding が「続々」出てくるよりは,
やはり言語非依存なものを出して欲しいですし.
プロジェクト自体はありますし
(http://boost-consulting.com/writing/oopsla04.html),
SOC でもプロジェクトの一例として提示してたので(http://tinyurl.com/m7dat),
気長に待てばそのうち動くもの出てくるとは思いますけれど.
0543デフォルトの名無しさん
2006/06/27(火) 22:32:53luabindつうluaとC++つなぐライブラリあるんだけど
boost使いまくってる。いずれBoost.Phythonみたく
なろうって魂胆なんじゃなかろうか。
0544543
2006/06/27(火) 22:41:23luabindと劇似だ。luabindの作者がかかわってるジャン
0545デフォルトの名無しさん
2006/06/27(火) 23:49:17pythonがほかの言語と比べてその方面に力を入れているから。
0546デフォルトの名無しさん
2006/06/27(火) 23:54:39http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20051110PythonJH/manifest.xml
これみてかなり感動した。
0547536
2006/06/28(水) 00:01:50ありがとう。これでできました。
if.hppが必要なことに気付くのに10分くらいかかったけど(汗
#include <boost/lambda/if.hpp>
bool a = true, b = false;
cout << (if_then_else_return(_1, 5, 3))(a) << endl; // 5が出力される
cout << (if_then_else_return(_1, 5, 3))(b) << endl; // 3が出力される
0548デフォルトの名無しさん
2006/06/28(水) 01:44:18ttp://d.hatena.ne.jp/Wacky/20051127/1133069066
ここでMSDN TVの内容をまとめてあるけどすごい。
0549デフォルトの名無しさん
2006/06/28(水) 02:23:020550デフォルトの名無しさん
2006/06/28(水) 04:18:32Pythonは選ばれた言語らしい
0551デフォルトの名無しさん
2006/06/28(水) 06:06:180552デフォルトの名無しさん
2006/06/28(水) 08:38:560553デフォルトの名無しさん
2006/06/28(水) 09:07:45Lua だけみたいだけど、言語依存部分と言語バインディング
全般に必要な部分との切り分けがきちんとされればいいね。
いや、俺にはそんな議論に参加する能力ないんだけど。
0554デフォルトの名無しさん
2006/06/28(水) 22:49:39つ[swig]
0555デフォルトの名無しさん
2006/06/28(水) 23:06:54それは, luabind は元々「Boost.Python に触発されて」っていう開発動機があったはずなので,
(将来的に変わるかも知れませんが)方向性が Boost.Python ぽくなるのは必然かと.
>>553
luabind は Boost に入ってないですよ.
>>554
Boost.Python あるいは luabind などが,先行の SWIG
(あと,例えば Python 限定なら SIP とか)などと完全に一線を画している部分として,
後者が独立した IDL を使用するのに対して,前者は TMP などを駆使して
純粋な C++ による DSEL で IDL を提供する方向性を確固たるものにしていて,
(各々の方向性の得失は置いておくとして)
そういう部分ではかなり方向性が違うんですよね.
0556デフォルトの名無しさん
2006/06/28(水) 23:11:32でも、実際に使ってみるとコンパイルに掛かる時間で「やっぱりBoost一族だな」と思うよw
0557デフォルトの名無しさん
2006/06/28(水) 23:28:02コンパイルしてると困憊るってか
おまい、今時pentiumとか使ってるんじゃないのか?
0558543
2006/06/28(水) 23:59:20その様ですね。Pythonはいじったこと無く必然的に
Boost.Pythonもノーマークだったので気付かなんだ。
luabind使ってて思うのはあまりにゴージャス過ぎるって
事。方向性として、極力Wrapperを書かずに既存のクラス
等をLuaに公開しようとしているためか暗黙の変換が多そう
で怖い。lambda/bind等で転送関数を書けるようにする、
程度の方が安心なんだけどねぇ。まぁ、便利なんだけど。
0559デフォルトの名無しさん
2006/06/29(木) 00:03:30いや、icc -ipoするとXeonでも合間に珈琲買って来れる。
0560デフォルトの名無しさん
2006/06/29(木) 06:40:21a library that provides a miniature language-within-a-language
for solving problems in a particular domain.
Boost の DSEL って early-bound (compile time) なのか
late-bound (runtime) なのかどっちなんだろうね。
って、ソースも読まずにカキコ。
0561デフォルトの名無しさん
2006/06/29(木) 20:45:33ってどういう意味?
0562デフォルトの名無しさん
2006/06/29(木) 22:33:27対象(取り扱う問題の)領域が限定されてる内部言語のこと。
0563デフォルトの名無しさん
2006/06/30(金) 00:16:110564デフォルトの名無しさん
2006/06/30(金) 00:18:59あ、でもプログラミングの世界でジェネリックって言うと
また別の意味に取られちゃうなぁ。
0565デフォルトの名無しさん
2006/06/30(金) 00:33:230566デフォルトの名無しさん
2006/06/30(金) 00:44:490567デフォルトの名無しさん
2006/06/30(金) 01:10:250568デフォルトの名無しさん
2006/06/30(金) 07:20:330569デフォルトの名無しさん
2006/06/30(金) 09:59:200570デフォルトの名無しさん
2006/06/30(金) 10:11:140571デフォルトの名無しさん
2006/06/30(金) 10:22:36DSEL は、親言語に埋め込まれて動作する。独立性は薄いとか親言語の制約を
受けるとかがあるが、親言語で書いたことをそのまま渡しやすい。
でもまぁ今は DSL というと後者だな。
0572デフォルトの名無しさん
2006/06/30(金) 10:49:090573デフォルトの名無しさん
2006/06/30(金) 13:31:520574デフォルトの名無しさん
2006/06/30(金) 23:50:07Generic医薬品のGenericでしょ
0575デフォルトの名無しさん
2006/06/30(金) 23:51:22スペシャルって言い方には、Hな雰囲気が漂ってます、どして?
0576デフォルトの名無しさん
2006/07/01(土) 00:01:210577デフォルトの名無しさん
2006/07/01(土) 00:14:45う〜ん、どうしよ
- 気持ちイイよ
じゃあ、お願い
こんな感じだろうか....スペシャル、お願いします
0578デフォルトの名無しさん
2006/07/01(土) 00:27:01夜更けにアジア系外国人と思わしき女性が
マッサージのポン引きをやっている(多分違法)
のをみてスルーしようとしたんだが
「 き も ち い い よ 」
0579デフォルトの名無しさん
2006/07/01(土) 00:56:250580デフォルトの名無しさん
2006/07/01(土) 19:15:38ここも C++0x スレもいまいち盛り上がらんね。
まあ俺は毎日楽しんでるけどな
0581デフォルトの名無しさん
2006/07/01(土) 20:41:00Firefoxの拡張作ろうと思ったけど、
互換性の問題からtemplateやexception使うの推奨されてない。
Boost使いたいけどあきらめるしかないかな。
0582デフォルトの名無しさん
2006/07/01(土) 21:48:16付いていくのに必死すぎて、ここで話題にする気にはなれんw
0583デフォルトの名無しさん
2006/07/03(月) 19:46:480584デフォルトの名無しさん
2006/07/03(月) 23:50:220585デフォルトの名無しさん
2006/07/04(火) 23:23:51MT法使うとして、毎回範囲を変えるのは無理です?
まぁ、大きな数字を指定しておいて、
毎回 rand() % max ってやればいいんですけど…
0586デフォルトの名無しさん
2006/07/04(火) 23:25:550587デフォルトの名無しさん
2006/07/04(火) 23:45:310588デフォルトの名無しさん
2006/07/05(水) 07:26:05前テキトーにサイコロプログラム書いた時は
[0, 1)の範囲で(一様実数分布で)乱数出して、n面体サイコロ振りたいときはfloor(rand_gen() * n) + 1とやってた
(rand_genはvaliate_generator型)
nによっては分布に影響があるかもしれんが検証してない
0589デフォルトの名無しさん
2006/07/05(水) 08:20:280590デフォルトの名無しさん
2006/07/05(水) 08:49:49uniform_int<>(0, max)(rand)
じゃダメ?
0591デフォルトの名無しさん
2006/07/05(水) 12:47:21[0.0,1.0) じゃなくて [0.0,1.0] の場合は、
uniform_int から作るしかないかな?
0592デフォルトの名無しさん
2006/07/05(水) 14:10:37実数で、0.0と1.0の両方が必要なのってどんな場合?
(0.0, 1.0]なら解るんだけど。
あと、uniform_intからどうやって作るの?
0593デフォルトの名無しさん
2006/07/05(水) 14:23:150594デフォルトの名無しさん
2006/07/05(水) 16:58:41差異を気にする必要があるのってどんな場合なんですか?
boost::uniform_01 の実装だと,仮数のビットが完全にランダムに
生成されるので,例えば IEEE754 倍精度少数だと 2^52 もしくは 2^51 に
1回のイベントの生起を気にしていることになりますけれど,そのレベルの
一様性を気にするアプリケーションって超大規模シミュレーションぐらいしか
ないように思えるんですけれど.
0595デフォルトの名無しさん
2006/07/05(水) 20:24:07逆に言えば、そのような超大規模シュミレーションにも
使えるような汎用性をBoostは持っているということではないか。
0596デフォルトの名無しさん
2006/07/05(水) 23:03:180.0や1.0が定義域に含まれない場合に、困るでしょ。
乱数の質の問題じゃなくて、計算の健全性の問題になってくるので。
0597デフォルトの名無しさん
2006/07/05(水) 23:17:140598591
2006/07/05(水) 23:51:33そこんとこはおいておいてくれ。
>>592
例えば、ゲーム作りとかで「半径xm以内にランダムでばらまく」みたいな仕様が
書かれてたら、まず普通に [0, x] と考えるじゃない。
Cの時代はそもそも rand() が [0, RAND_MAX] だったから、
RAND_MAX で割ればそのまま [0, 1] になったけど、
そういうソースをそのまま uniform_01 * x に置き換えただけじゃ
厳密には同じじゃないよね、って話。
まあ実用上は(ry だけど、596 の言う計算の健全性の問題っつうか。
>594
uniform_01 の精度って渡される乱数生成器の min と max に依存してない?
RNG::result_type が integer で、min〜max が狭いと、差が出てくるような
気がするんだけど、ちゃんと見てないんで違ってたらスマソ。
まあ普通はメルセンヌツイスタとか使うし実用上は(ry なわけだけども。
0599594
2006/07/06(木) 02:36:14あ,そういう話ならもちろんそのとおりですね.
594 では, [0.0, 1.0] な一様乱数を片側もしくは両側が開な一様乱数で生成しても
実用上ほとんどのアプリで問題ないという話しかしてませんでした.すいません.
>>598
あ〜,実装は確かにベースとなる UniformRandomNumberGenerator が生成する
乱数の precision がそのまま uniform_01 の precision になりますね,これ.
ドキュメントでこれは buggy だと言ってるので問題として意識されては
いるようですけれど,書いてあるように効率的な実装は難しそうですね.
0600デフォルトの名無しさん
2006/07/06(木) 12:16:05Generator に精度に関する情報がないので、uniform_int の operator() とか
result_type,min,max 等をごにょごにょしてて必要以上に重くなってる気はする。
と、ググったらこんなのも。
ttp://d.hatena.ne.jp/minamijoyo/20051101
0601デフォルトの名無しさん
2006/07/06(木) 13:40:13valiate_generator::distribution() に新しい範囲で初期化した
distribution インスタンスを代入すればいい。
0602デフォルトの名無しさん
2006/07/06(木) 13:45:47?
auto_ptr と move_ptr の違いってならともかく、
所有権の移動と共有じゃ全然違うじゃん
0603デフォルトの名無しさん
2006/07/06(木) 17:59:21ウィキペディアにこんなこと書かれてた
>高品質の乱数
乱れているのに高品質ってワロタ
0604デフォルトの名無しさん
2006/07/06(木) 23:52:450605デフォルトの名無しさん
2006/07/07(金) 00:19:260606デフォルトの名無しさん
2006/07/07(金) 00:24:520607デフォルトの名無しさん
2006/07/07(金) 00:31:210608デフォルトの名無しさん
2006/07/07(金) 01:13:410609デフォルトの名無しさん
2006/07/07(金) 01:52:550610デフォルトの名無しさん
2006/07/07(金) 21:27:41この流れを読んでたら昔の彼女を思い出しました…書くんじゃなかったorz
今は他の男でtwistしてんだろうなぁ.....orz
0611デフォルトの名無しさん
2006/07/07(金) 21:40:28しかしリアルでやることあんのかあれ。
0612デフォルトの名無しさん
2006/07/07(金) 23:18:270613デフォルトの名無しさん
2006/07/08(土) 13:21:5530年生きてるけど、そんな生き物は見たことないし。
0614デフォルトの名無しさん
2006/07/08(土) 13:48:070615デフォルトの名無しさん
2006/07/08(土) 14:04:040616デフォルトの名無しさん
2006/07/08(土) 16:29:040617デフォルトの名無しさん
2006/07/08(土) 16:41:04一般人>>>>>>>>>Boost使い
0618デフォルトの名無しさん
2006/07/08(土) 18:50:20あと10年でワシのような大魔法使いになれるぞえ orz
0619デフォルトの名無しさん
2006/07/08(土) 23:07:08MPLの実装を読み解くには何年かかりますか?
0620デフォルトの名無しさん
2006/07/08(土) 23:49:12色々勉強になったよ。
0621デフォルトの名無しさん
2006/07/09(日) 01:00:40void func(const int n){}
std::for_each(v.begin(), v.end(), func);
というのがありまして、この std::for_each(〜〜) 自体を
boost::function0<void> に突っ込もうとし、boost::bindで
bind(for_each, bind(vector<int>::begin, &v), bind(vector<int>::end, &v), func);
こんなのを書いているのですが、テンプレート引数を付けたり弄ったりしても
なかなかコンパイルが通りません。
何方かご教授お願いいたします。
0622デフォルトの名無しさん
2006/07/09(日) 01:26:07boost::function0<void> f( boost::bind(&std::for_each<std::vector<int>::iterator, funcの型>, v.begin(), v.end(), func) );
0623デフォルトの名無しさん
2006/07/09(日) 01:29:32v.begin(), v.end()は
boost::bind(&std::vector<int>::begin, &v), boost::bind(&std::vector<int>::end, &v)
に置き換えて
0624デフォルトの名無しさん
2006/07/09(日) 02:08:11Boost.RangeEx使ったらもう少し簡潔に書けると思う。
0625デフォルトの名無しさん
2006/07/09(日) 03:24:51コードまでも、ありがとうございます。
VC7.0 と gcc 3.4.4 (Cygwin) の両方で
そのまま書いてみたのをコンパイルしたのですが、こちらではコンパイルが通りませんでした(vc7.0とgcc3.4)
エラーがずらーーーーーっと…。そして、
boost::bind(&std::vector<int>::begin, &v);
この部分だけコンパイルしてみてもダメだったので
boost::bind(static_cast<std::vector<int>::iterator (std::vector<int>::*)(void)>(std::vector<int>::begin), &v);
こうすると一応できたのですが
その後boost::bind(std::for_each, 〜〜)に入れようとするところでどうしても躓きます…
0626デフォルトの名無しさん
2006/07/09(日) 06:20:54これがダメな時点で無理な気もするが
VS2005でならこれで動いたよ。
vector<int> v;
v.push_back(0);
v.push_back(1);
//for_each<vector<int>::iterator, function<void (const int)> >(v.begin(), v.end(), func);
function< function<void (const int)> (void)> f =
bind(for_each<vector<int>::iterator, function<void (const int)> >
,bind(&vector<int>::begin, &v)
,bind(&vector<int>::end, &v)
,func);
f();
0627デフォルトの名無しさん
2006/07/09(日) 08:30:56vector<int> v;
v.push_back(0);
v.push_back(1);
typedef void (*function_pointer)(const int);
//for_each<vector<int>::iterator, function_pointer>(v.begin(), v.end(), func);
function<function_pointer (void)> f =
bind(for_each<vector<int>::iterator, function_pointer>
,bind(&vector<int>::begin, &v)
,bind(&vector<int>::end, &v)
,func);
f();
0628デフォルトの名無しさん
2006/07/09(日) 13:15:27void myfunc(int n) {std::cout << n << ' ';}
int main()
{
using boost::mpl::identity;
using boost::bind;
typedef std::vector<int> vec;
typedef const vec cvec;
typedef identity<void (int)>::type func_type;
typedef identity<cvec::const_iterator (cvec::*)() const>::type cbegend_type;
typedef identity<func_type* (cvec&, func_type*)>::type rex_for_each_type;
boost::function0<void> f;
{
vec v;
v.push_back(0); v.push_back(1); v.push_back(2);
f = bind(static_cast<rex_for_each_type*>(
boost::for_each<cvec, func_type*>), v, myfunc);
boost::fill(v, 10);
}
f();
std::cout << std::endl;
}
0629デフォルトの名無しさん
2006/07/09(日) 16:00:49ありがとうございます、参考になります。
gcc 3.4.4 (cygwin) と vc++.net 2002(vc 7.0) の両方で試しましたが、ともに動きませんでした。
7.0だと lambda とかも使えないし、いい加減あきらめてVS2003買ったほうがいい気がしてきました。
ちなみに
typedef std::vector<int>::iterator (std::vector<int>::*_t)(void);
boost::function0<void> f = bind(
std::for_each< boost::_bi::result_traits< std::vector<int>::iterator, _t >::type, void (*)(int) >,
boost::bind(static_cast<_t>(&std::vector<int>::begin), &v),
boost::bind(static_cast<_t>(&std::vector<int>::end), &v),
func);
このコードでならgcc 3.4.4(cygwin)で正常にコンパイル&動作が確認できたのですが
vc7.0だと、なぜか未解決の外部シンボル云々…
0630デフォルトの名無しさん
2006/07/09(日) 16:09:422005Expressはタダだし
Stdでも3万円くらいだよ。
0631デフォルトの名無しさん
2006/07/09(日) 16:32:01βの時の使ってみた感じ、くそ重かったんで・・・なかなか手を出そうとは思えないです。
0632デフォルトの名無しさん
2006/07/09(日) 17:47:23自動パラメータヒントを有効にしたままlambdaを使おうとすると、
自分の環境では、IDEごと固まる。
VC8では、インテリセンスの根性が上がっているのか、そういうことは無いんだけど。
0634デフォルトの名無しさん
2006/07/09(日) 19:44:13Boost使いならVC8推奨だけど。
0635デフォルトの名無しさん
2006/07/09(日) 20:36:27gcc 3.4.4 では、こちらでもコンパイルできました。
そして、そのソースをそのままVC7.0上でコンパイルしようとすると失敗するので
インクルードが欠けているというのは無いと思います。
>>634
まじですか、βのときより軽い事を祈ってExpress入れてみようかな…
0636デフォルトの名無しさん
2006/07/09(日) 22:17:47驚異的に簡単で感動した。
variantとfunctionがあれば継承なんていらんね。
0637デフォルトの名無しさん
2006/07/10(月) 02:07:10くわしく
0638デフォルトの名無しさん
2006/07/10(月) 04:33:49using namespace boost;
class visitor : public static_visitor<> {
public:
void operator () (int n, int m) const {}
void operator () (char n, char m) const {}
void operator () (char n, int m) const {}
void operator () (int n, char m) const {}
};
・・・・
variant<int, char> v0;
variant<int, char> v1;
v0 = int(2);
v1 = int(3);
apply_visitor(visitor(), v0, v1);
v0 = char(2);
v1 = char(3);
apply_visitor(visitor(), v0, v1);
v0 = char(2);
v1 = int(3);
apply_visitor(visitor(), v0, v1);
v0 = int(2);
v1 = char(3);
apply_visitor(visitor(), v0, v1);
細かくははしょってるが察してくれ。
0639デフォルトの名無しさん
2006/07/10(月) 11:37:18と
boost:sregex re
の違いは何ですか?
0640デフォルトの名無しさん
2006/07/10(月) 12:53:58http://boost-sandbox.sourceforge.net/libs/xpressive/doc/html/xpressive/user_s_guide.html
0641デフォルトの名無しさん
2006/07/10(月) 16:49:58BoostはいつからSTLと同じように使えるようになる見込みなんでしょうか
0642デフォルトの名無しさん
2006/07/10(月) 17:20:43「STLと同じように」の意味を定義してください
0643デフォルトの名無しさん
2006/07/10(月) 20:49:02標準ライブラリとしてという意味ジャマイカ
0644641
2006/07/11(火) 14:17:48コンパイラインスコした時点ですぐに使えるようになるのはいつの日ですかって話です。
それとも、いつまでもアドインのままでいるつもりなんでしょうか。
0645639
2006/07/11(火) 14:51:37sはstaticの意味でしたか
ありがとうございました
0646デフォルトの名無しさん
2006/07/11(火) 15:03:12TR1, TR2に含まれるものが2009年に標準になる見込みです。
詳しくはC++0xスレへ
0647デフォルトの名無しさん
2006/07/13(木) 01:09:050648デフォルトの名無しさん
2006/07/14(金) 09:43:070649デフォルトの名無しさん
2006/07/16(日) 15:38:040650デフォルトの名無しさん
2006/07/16(日) 15:49:00それが++の意味
0651デフォルトの名無しさん
2006/07/17(月) 20:42:23CPUでコンパイル速度ってどれくらい違いますか?
AthlonXPの3000+で式3つくらい書いてたら10秒は平気でかかる。。。
買い替えしたいと思ってしまった
0652デフォルトの名無しさん
2006/07/17(月) 21:43:34if して for して bind するくらいの式3つでは Pen4M 1.4GHz でも5秒しかかからん。
0653デフォルトの名無しさん
2006/07/18(火) 01:21:52boostが愚か者の道具であることが、今のレスでよく分かった
0654デフォルトの名無しさん
2006/07/18(火) 06:35:320655デフォルトの名無しさん
2006/07/18(火) 11:05:07#include <boost/lambda/lambda.hpp>
using namespace boost::lambda;
int main() {
int i = 1; int j = 2;
(_1 + _2)(i, j); // ok
int k = 1;
(_1 = 2, _1 + i)(k);
}
$ time g++ foo.C
real 0m0.997s
user 0m0.908s
sys 0m0.088s
Pentium M 1.4GHzですが、こんだけしかかかりません。
0656orz
2006/07/18(火) 13:47:540657デフォルトの名無しさん
2006/07/18(火) 22:23:39これか、唐沢クンの英語はちょっと変だな
それに野晒し状態で今頃彼キレてるんだろうなあ
Can I have a hotfix for this problem?
It is examined VS2003 or VS2005 which to be used for our prodcut.
And this is a big problem to use VS2005.
0658デフォルトの名無しさん
2006/07/19(水) 00:38:13何か特殊なケースでのみaccess vaiolationなコードを吐くって事なのかな。
0659デフォルトの名無しさん
2006/07/19(水) 19:53:36コンベンションに従うことにした。
すがすがしい気分になった。
0660デフォルトの名無しさん
2006/07/19(水) 20:12:200661デフォルトの名無しさん
2006/07/22(土) 05:13:44http://pc8.2ch.net/test/read.cgi/tech/1145115971/
460 名前:デフォルトの名無しさん[sage] 投稿日:2006/07/19(水) 20:42:18
57 名前:デフォルトの名無しさん[] 投稿日:2006/02/16(木) 10:58:30
>>56 プログラム全体にわたっての型の整合性は
コンパイルが通った時点で保証されている、と信じたいから
という発言に対し、
65 名前:デフォルトの名無しさん[] 投稿日:2006/02/16(木) 21:42:52
っていうか、>>57 みたいなこと書くやつは死ねばいいと思う。
お前みたいなド素人がプログラミングでメシ食っていこうなんて百年早い
マジ死ねよ
と返す。
これがBoostスレクオリティ。
0662デフォルトの名無しさん
2006/07/22(土) 07:22:38そこで引用されている >>57 書いたの俺だ・・・
そんなところで引用されてたとわ!
0663デフォルトの名無しさん
2006/07/22(土) 14:37:44わざとらしいんだよw
どうせお前だろ?
関係無いスレに泣きついて「だれか僕を肯定してー」なんて馬鹿丸出しwwwwwwwwwwwwwwwwww
0664デフォルトの名無しさん
2006/07/22(土) 15:07:20おまいをこんぱいるしてやる
0665デフォルトの名無しさん
2006/07/22(土) 21:03:14一個のスペースに変換するだけなら
regex("/\\*.*?\\*/")
を" "に置換するだけでいいんだけれど、
/*
hogehoge
foofoo
*/
みたいなのを
/*
*/
に出来なくて困ってる
0666デフォルトの名無しさん
2006/07/22(土) 21:05:16みたいに、/とか*とかコメント内の文字をスペース(改行だけはそのまま)に出来なくて困ってます
0667デフォルトの名無しさん
2006/07/22(土) 21:36:430668デフォルトの名無しさん
2006/07/24(月) 05:06:30ことは出来ないのでしょうか?たとえば xml_oarchive や
text_oarchive に無限大の double を出力すると
1.#INF という文字列で出力されますが、これを再び
読み込もうとすると例外が発生します。
ちなみに非数をストリームに出力したときに実際に出力される
文字列は処理系依存です。
0669デフォルトの名無しさん
2006/07/24(月) 06:29:33参考程度になりますが、一応 XML Schema では float/double の
表現に 0, -0, INF, -INF, NaN が含められています。
自分は XML にシリアライズした後で XST + CSS で表にする
ことがあるので、できればこのあたりは XML Schema に
則ってほしいところですが、xml_{o|i}archive から
派生させたアーカイブクラスを作るべきでしょうか?
0670デフォルトの名無しさん
2006/07/25(火) 17:36:580671デフォルトの名無しさん
2006/07/25(火) 18:02:58c++->cpp, hpp
0672デフォルトの名無しさん
2006/07/25(火) 20:13:310673デフォルトの名無しさん
2006/07/27(木) 00:51:070674デフォルトの名無しさん
2006/07/27(木) 00:53:020675デフォルトの名無しさん
2006/07/27(木) 06:59:37読み込まれるファイルを毎回コンパイルする無駄を省くために
本来は import されるファイルのエッセンス部分のみを記述した
ヘッダファイルのみを読み込む方法が利用されていましたが
結果的にヘッダに関数本体を記述する馬鹿やグローバル変数を
記述する阿呆が大量に発生したため次第に使われなくなりました
0676デフォルトの名無しさん
2006/07/27(木) 09:31:08でもJavaとかC#やった後だと、めんどっちーもん。
VCならコンパイル早いし問題なし。
ソースが増えて重くなったら、その都度変更の少ないクラスからcppに移動。
0677デフォルトの名無しさん
2006/07/27(木) 10:43:55ヘッダなのか本体なのかどうでも良くなってくるんだよね
0678デフォルトの名無しさん
2006/07/27(木) 11:35:180679デフォルトの名無しさん
2006/07/27(木) 13:41:04Boost完全否定だな
0680デフォルトの名無しさん
2006/07/27(木) 15:42:06個人でやるとキショイとか言われて、メリケンがやるとマンセーするんだよな。
まあ確かに個人レベルでやると他の人が読みにくいが
boostくらい浸透してくれるといくらか通用しやすくてありがたいけどな。
0681デフォルトの名無しさん
2006/07/27(木) 23:42:21いつの時代の話だ
もう正規表現エンジン全部がヘッダに書かれる時代だよ
0682デフォルトの名無しさん
2006/07/27(木) 23:55:55ヘッダなんかに書かなくてよかったのになあ。
コンパイルは遅いし、エラーメッセージはわけわからんし。
その点でコンパイラの機能にしているDはよい。
0683デフォルトの名無しさん
2006/07/28(金) 00:05:39テンプレートは C++ でもコンパイラの機能だよ。
プリプロセッサの機能は C と C++ で変わってない。
0684デフォルトの名無しさん
2006/07/28(金) 00:07:38テンプレートはコンパイラが処理してますが
0685デフォルトの名無しさん
2006/07/28(金) 00:09:590686デフォルトの名無しさん
2006/07/28(金) 00:11:470687デフォルトの名無しさん
2006/07/28(金) 00:18:580688デフォルトの名無しさん
2006/07/28(金) 00:35:16そろそろみんなも気付いて欲しいね
0689デフォルトの名無しさん
2006/07/28(金) 01:33:26エラーメッセージ分かり易かっただろうな
0690デフォルトの名無しさん
2006/07/28(金) 14:59:54まぁ一度gcc -Eとかしてみよう
0691デフォルトの名無しさん
2006/07/28(金) 16:26:39でしかないってのはみんなわかってんだろ?
プリコンパイルヘッダなんてもんは規格外だし。
その意味でプリプロセッサっていってんのに。
テンプレートを CPP が処理してないくらい知っとるわ、ボケ。
いっぺん D のテンプレートを使ってみろってんだ。
0692デフォルトの名無しさん
2006/07/28(金) 17:02:06独自の用語を使っていると他人とのコミュニケーションが困難になるよ
0693デフォルトの名無しさん
2006/07/28(金) 17:54:48怖いよ
0694デフォルトの名無しさん
2006/07/28(金) 19:18:34自演乙
0695デフォルトの名無しさん
2006/07/29(土) 00:35:15C++のテンプレートは、
コンパイル時の能力がTuring機械と同等です。
0696デフォルトの名無しさん
2006/07/29(土) 02:26:570697デフォルトの名無しさん
2006/07/29(土) 03:12:370698デフォルトの名無しさん
2006/07/29(土) 03:26:01自分はC/C++、C#、Javaを使うけど、正直C++が一番好き(スリリングだから)
Dの場合はどう? 面白い? メリットは何?
0699デフォルトの名無しさん
2006/07/29(土) 09:45:49自分が作ったライブラリがたくさんあるから。
あと、この間、客からGUIカコヨクしろって
無茶言われてパニクったが、C++/CLI で乗り切れたから。
0700デフォルトの名無しさん
2006/07/29(土) 10:11:02社内ツールだったらそれなりに作ってる
0701デフォルトの名無しさん
2006/07/30(日) 10:20:12C++のテンプレートをさわってみて、テンプレートについて何か言ってみたかったんだよね。
0702デフォルトの名無しさん
2006/07/30(日) 12:55:59池沼ほど自己顕示欲が強いわけだし
0703デフォルトの名無しさん
2006/07/31(月) 01:49:58Dでも無能かと
要するにただの無能
0704デフォルトの名無しさん
2006/07/31(月) 15:46:02Visual C++ でも gcc でも
嵐のようにワーニングが出る。
動いているからいいんだけど、
とりあえずワーニングは無視しとけ、ってスタンス?
0705デフォルトの名無しさん
2006/07/31(月) 16:00:380706デフォルトの名無しさん
2006/07/31(月) 19:39:23やっちゃいけない事をやってるからでは。
0707デフォルトの名無しさん
2006/07/31(月) 21:27:360708デフォルトの名無しさん
2006/07/31(月) 23:20:21えらいメッセージの量でビビタ。
0709デフォルトの名無しさん
2006/08/01(火) 00:02:37ttp://msdn2.microsoft.com/ja-JP/library/thxezb7y.aspx
/Wallだと標準ライブラリでさえ警告出た記憶が・・・
0710デフォルトの名無しさん
2006/08/01(火) 00:28:16ヘッダを1つ間にかますか。どっちも面倒なのは確か。
>709
確かにリリースビルドだと<vector>とかで出る。あれはさすがになんとかしてほしい
0711デフォルトの名無しさん
2006/08/05(土) 18:22:27ttp://www.kmonos.net/alang/boost/classes/posix_time.html
のサンプルをコンパイルしてみると
undefined reference to `boost::gregorian::greg_month::as_short_string() const'
undefined reference to `boost::gregorian::greg_month::as_long_string() const'
undefined reference to `boost::gregorian::greg_month::get_month_map_ptr()'
とエラーがでます。
greg_month.hppを調べてみると確かにgreg_month::as_short_string()は
宣言のみで実装がありませんでした。
コンパイル時に何かコンパイルオプションが必要になるのでしょうか?
環境はvine3.2 gcc3.3.2 boost1.33.1です。
0712デフォルトの名無しさん
2006/08/05(土) 22:11:26ライブラリをリンクしないと駄目なんじゃないか?
0713711
2006/08/05(土) 23:32:37-lboost_date_time
が必要みたいですね。/usr/libを見てみたらありました。
リファレンスのサンプルに必要なライブラリも書いてくれるといいのですけど。
0714デフォルトの名無しさん
2006/08/06(日) 16:26:00今まで気にしてなかったけど、コンパイラ/リンカに
よってはそういうことはできないのか・・・
0715デフォルトの名無しさん
2006/08/06(日) 16:50:090716デフォルトの名無しさん
2006/08/06(日) 23:20:00環境変数を設定するだけではできないのでしょうか?
ビルドした DLL を dumpbin で確かめると x86 のバイナリになっていました。
0717デフォルトの名無しさん
2006/08/08(火) 14:38:30typedef boost::function< void (int,int,int)> myfunc;
myfunc ff = boost::bind( &MyClass::test, &m, _1,_2,_3 );
myfunc ff2 = boost::bind( &MyClass::test, &m, _1,_2,_3 );
bool bl = ff.contains( ff2 ); // ここでエラー
これをビルドすると、boost::operator ==' : 4 のオーバーロード関数があいまいです、とでるのですが、
何かよき対処法はないですか?
0718デフォルトの名無しさん
2006/08/08(火) 20:09:38boost::bindが返す関数オブジェクトにはoperator ==が実装されていないから無理だと思う。
0719デフォルトの名無しさん
2006/08/09(水) 10:40:10m_os << elapsed() << " s\n" << std::endl;
ってなってるんだが、\n と std::endl のせいで
余計な改行があくじゃねぇか。
嫌じゃ。
0720デフォルトの名無しさん
2006/08/09(水) 20:50:54ドキュメントでは Windows にはシンボリックリンクないので
常に false 返すよって書いてあるんだけど、せめて
リパースタグを見てマウントポイントとかなら true を
返してくれないものだろうか。
0721デフォルトの名無しさん
2006/08/09(水) 20:53:26オイラもココでセフレ3人ゲトしますた(^^; 目標セフレ7人!!
http://550909.com/?f4632187
0722デフォルトの名無しさん
2006/08/09(水) 20:55:53そう思うんなら自分でコード書いて dev に投げれば?
0723デフォルトの名無しさん
2006/08/09(水) 21:17:10誰がデブやねん!
0724デフォルトの名無しさん
2006/08/10(木) 00:10:35Vistaのsymbolic linkならそれでいいとおもうけど、
XPのジャンクションなら、チョト違うからfalseの方がいいと思う。
0725デフォルトの名無しさん
2006/08/10(木) 00:16:400726デフォルトの名無しさん
2006/08/10(木) 00:59:00リパーズポイントってアドオン系カスタマイズ機構だから。
マウントポイントは、
今ではリパーズポイントの応用として実装されているけど、
シンボリックリンクに近いのは、
マウントポイントじゃなくて、ジャンクションでしょう?
って板違いかな?
いずれにせよVistaで導入されたsymbolic linkなら、
boost::filesystem::symbolic_link_exists
がtrueでいいと思うけど、他はまずいでしょ。
0727デフォルトの名無しさん
2006/08/10(木) 01:02:570728デフォルトの名無しさん
2006/08/10(木) 01:05:170729デフォルトの名無しさん
2006/08/10(木) 07:18:49ディレクトリ全体の処理がループしないようになってたんだが、
Windows にいしょくして見たらループした。
結局どんなタイプのリパースタグを使っているか個別に判定すると
またあとから Windows のバージョンによる移植性の問題が
出る可能性もあるので、 そもそもそういう判定のために
用意されている Windows の NTFS 系の API
IsReparseTagNameSurrogate で判定するのがいいとオモタ。
自分用にはもうコード書いて使っているので、
そのうち dev に投げるかもしれないけど、
boost のプラットフォーム依存部分の書き方の流儀?
(コンベンション)を理解していないので面倒だなぁ。
0730デフォルトの名無しさん
2006/08/10(木) 22:34:12uBlasを見ると5/18に関数名がsize_mとsize_Mに変わったらしい。
CVSから5/18以前のやつを取ってきたら動いた。
そんなチラシの裏。
boostディレクトリの中にluabindディレクトリができてたんだけど、
そのうちboostと一緒に配布されるようになるのかな?
0731デフォルトの名無しさん
2006/08/10(木) 23:04:020732717
2006/08/11(金) 17:25:45やはり、THANKS
0733デフォルトの名無しさん
2006/08/11(金) 22:15:48..
find_if(vec.begin(), vec.end(), ここでうまいことlambdaにオブジェクトを逆参照させる方法ないですかね
それともこういうときはポインタを受け取る関数オブジェクトを自分で書くべきですか?
0734デフォルトの名無しさん
2006/08/11(金) 22:28:04うまいことやるまでもなく普通にできると思うが。こんな感じで。
# include <vector>
# include <algorithm>
# include <iostream>
# include <boost/lambda/lambda.hpp>
# include <boost/lambda/bind.hpp>
# include <functional>
namespace lam = boost::lambda;
int main()
{
std::vector<int *> v;
v.push_back(new int(4));
v.push_back(new int(5));
v.push_back(new int(-3));
v.push_back(new int(-5));
std::cout << **std::find_if(v.begin(), v.end(), lam::bind(std::less<int>(), *lam::_1, 0)) << '\n';
}
0735デフォルトの名無しさん
2006/08/11(金) 22:35:46特にbind系を使うと
怖いのが慣れちゃうとあまりよみづらいと思わなくなるところ
0736デフォルトの名無しさん
2006/08/11(金) 23:33:02以下のコードのような場合は無理ですかね
class A {
public:
int num;
A(int _) : num(_) {}
};
int main()
{
std::vector<A*> v;
v.push_back(new A(4));
v.push_back(new A(5));
v.push_back(new A(-3));
v.push_back(new A(-5));
std::cout << **std::find_if(v.begin(), v.end(), *lam::_1.num > 0) << '\n';
}
hoge.cc: In function `int main()':
hoge.cc:23: error: 'const struct boost::lambda::lambda_functor<boost::lambda::placeholder<1> >' has no member named 'num'
0737デフォルトの名無しさん
2006/08/12(土) 00:07:48std::cout << (*std::find_if(v.begin(), v.end(), (boost::lambda::_1->*(&A::num)) > 0))->num << '\n';
0738デフォルトの名無しさん
2006/08/12(土) 00:24:08できました。ここまでややこしくなるとlambda使う意義がなくなってしまいますね ^^;
>>734,737 どうもありがとうございました。
0739デフォルトの名無しさん
2006/08/12(土) 01:06:370740デフォルトの名無しさん
2006/08/12(土) 03:32:570741デフォルトの名無しさん
2006/08/14(月) 16:16:160742デフォルトの名無しさん
2006/08/14(月) 20:28:42昔、template スレにあった、IDispatch の呼び出しを行うラッパを思い出した。
pDisp->*("MethodName")( a1, a2 );
みたいな書き方してあってスゲーと思った記憶がある。
0743デフォルトの名無しさん
2006/08/14(月) 21:10:15それどこにあるの?
是非見てみたい。
0744デフォルトの名無しさん
2006/08/15(火) 03:02:15なるほど。勉強になった
0745デフォルトの名無しさん
2006/08/15(火) 07:51:510746デフォルトの名無しさん
2006/08/15(火) 09:18:24そもそも COM を使ったことがないからかもしれないけど、
"MethodName" って char* だよね?
0748デフォルトの名無しさん
2006/08/15(火) 09:29:27operator->*は多重定義できる。
0749デフォルトの名無しさん
2006/08/15(火) 17:00:29引数数は固定になっちゃはないの?
なにかミラクルな方法でもあるのかなぁ.....
0750デフォルトの名無しさん
2006/08/15(火) 17:48:07引数はboostみたいに0〜n個用を用意するとか。
0751デフォルトの名無しさん
2006/08/16(水) 06:33:49しらんかった。
0752デフォルトの名無しさん
2006/08/16(水) 11:10:570753デフォルトの名無しさん
2006/08/16(水) 18:19:300754デフォルトの名無しさん
2006/08/16(水) 18:36:22とりあえずネットでどっかに簡単な説明ない?
多分低レベルな俺には必要ない知識だと思うが、気持ち悪い。
使ったこと無いと言えば、 typeid も使ったこと無いな。
0755デフォルトの名無しさん
2006/08/16(水) 18:39:25いくらでも。
http://www.google.co.jp/search?q=%E3%83%A1%E3%83%B3%E3%83%90+%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF+%E6%BC%94%E7%AE%97%E5%AD%90
0756デフォルトの名無しさん
2006/08/16(水) 18:52:29メンバへのポインタでぐぐれ。
0757デフォルトの名無しさん
2006/08/16(水) 20:23:07多重定義できない演算子ですよ
0758デフォルトの名無しさん
2006/08/16(水) 20:29:14上に出てきたみたいな珍しい演算子がたくさんあって、
しかもオーバーロードできて、しかもその前に
プリプロセッサで変態プレイができるとなると、
見た目何言語かわからん言語にできちゃうよなぁ・・・
だいたい二項演算子[]が可換って(笑
この変態がっ!!
0759デフォルトの名無しさん
2006/08/16(水) 20:49:203["abcdefg"]とかCでもできる。
0760デフォルトの名無しさん
2006/08/16(水) 20:53:570761デフォルトの名無しさん
2006/08/17(木) 00:34:530762デフォルトの名無しさん
2006/08/17(木) 00:41:530763デフォルトの名無しさん
2006/08/17(木) 00:45:190764デフォルトの名無しさん
2006/08/17(木) 00:49:140765デフォルトの名無しさん
2006/08/17(木) 01:03:39x[y] と *(x + y) が等価であることを考えれば当然
0766デフォルトの名無しさん
2006/08/17(木) 01:07:260767デフォルトの名無しさん
2006/08/17(木) 01:15:42標準仕様の策定でもそれに従ったんだろ。わざわざ入れ替え可能にしたわけじゃ
ないと思う。なんのメリットも無いだろう。
0768デフォルトの名無しさん
2006/08/17(木) 01:23:07*(x+y)の意味だと定義されてた(またはそう実装されていることが広く知られていた)わけだ
から、可換であることは自明だし、大昔から有名だよ
0769デフォルトの名無しさん
2006/08/17(木) 02:58:52これはいつ見ても戸惑う。
最初に見たのは、やたらと遊び心のあるC言語の参考書だったような。
0770デフォルトの名無しさん
2006/08/17(木) 03:01:580771デフォルトの名無しさん
2006/08/17(木) 05:21:56const int i = 11;
const char hex = "0123456789ABCDEF"[i];
とかやらね?
やらね?あ、そ。
0772デフォルトの名無しさん
2006/08/17(木) 05:51:58enum foo {FooNone, FooArc,, FooBox, FooChar};
なんてのがあるとして、
void outLog(enum foo bar, const char * mess)
{
fprintf(outFp, "%20s %c %s\n", timeStump(now()), "NABC"[bar], mess);
}
みたいな感じで。
まぁ、勿論範囲チェックは別途行なうわけだが。
0773デフォルトの名無しさん
2006/08/17(木) 05:52:20const char hex[] = "0123456789ABCDEF";
hex[i]
0774デフォルトの名無しさん
2006/08/17(木) 08:24:47std::vectorやランダムアクセスイテレータでは、可換でないのが残念(というべきではない?)
0775デフォルトの名無しさん
2006/08/17(木) 10:17:56まっとうな姿になっただけだろう。
0776デフォルトの名無しさん
2006/08/17(木) 13:30:03IRI と URI を操作するために広く使えるクラスはないですか?
おながいします。
0777デフォルトの名無しさん
2006/08/19(土) 05:24:17http://www.appinf.com/poco/info/
これはboostと何か関係があるもの?
boost library license で提供されているし、
boost とかぶっているところもあるし。
0778デフォルトの名無しさん
2006/08/19(土) 05:28:50http://sourceforge.net/projects/poco
0779デフォルトの名無しさん
2006/08/19(土) 05:41:46ライセンス以外関係なさそう。
APR の C++ 版ってところか。
ライセンスが boost と同じなら、いろいろ使えるかも知れんな。
0780デフォルトの名無しさん
2006/08/19(土) 06:13:3037564
朝練
0781780
2006/08/19(土) 06:14:19見なかったことに
0782デフォルトの名無しさん
2006/08/19(土) 06:27:10ネット周りのライブラリとかぶりまくり。
先知ってたら無駄な開発しなくて済んだのに。
まぁ趣味プログラムだからいいや・・・
0783デフォルトの名無しさん
2006/08/19(土) 19:16:15SOAっぽいことやろうと思うと、JavaかC#しか選択肢が無かったけど、このライブラリィがあれば
C++でも勝負できるね。
0784デフォルトの名無しさん
2006/08/19(土) 22:42:03このライブラリも多機能だけど、あとは
Apache Portable Runtime もそうだよな。
同じような機能があるとどれを使えばいいか迷う。
XML周りとか。でもベースになってるのは expat だね。
0785デフォルトの名無しさん
2006/08/19(土) 22:47:460786デフォルトの名無しさん
2006/08/19(土) 23:04:26そういう事情なら poco の立場はもっと酷いことになるな。
0787デフォルトの名無しさん
2006/08/19(土) 23:57:29http://www.cs.wustl.edu/~schmidt/
APR って ACE と機能的にかぶってる?
0788デフォルトの名無しさん
2006/08/19(土) 23:59:560789デフォルトの名無しさん
2006/08/21(月) 14:12:46亀だけど、確かこんな感じだったような…。当時の本人がいたら補完してホスィ。
struct DispInvoker {
IDispatch * p;
DISPID id;
DispInvoker( IDispatch * p, DISPID id ) : p(p), id(id) {}
CComVariant operator()() {
CComVariant retval;
...
pDisp->Invoke( ..., &retval, ... );
return retval;
}
CComVariant operator()( CComVariant a1 ) {
CComVariant retval;
VARIANT args[1] = { a1 };
pDisp->Invoke( ..., &retval, ... );
return retval;
}
};
struct Dispatch {
IDispatch * p;
DispInvoker operator->*( OLECHAR FAR * nm ) const {
DISPID id;
HRESULT hr = p->GetIDsOfNames(IID_NULL,&nm,1,LOCALE_SYSTEM_DEFAULT,&id);
if( FAILED(hr) ) throw CAtlException(hr);
return DispInvoker( p, id );
}
};
// CComVariant name = (pDisp->*L"get_Name")();
// CComVariant result = (pDisp->*L"doSomething")(L"param");
0790789
2006/08/21(月) 14:19:23当時、テンプレート総合スレの2でコレをみたとき、C++ スッゲと感動した記憶がある。
0791デフォルトの名無しさん
2006/08/21(月) 15:03:07オモスレー
スクリプト言語側の評価機とのインターフェースにも使えそうだ。
アリガトン
0792デフォルトの名無しさん
2006/08/21(月) 20:35:35つか、OLEオートメーション自体スクリプト言語用のインターフェースだしな。
0793デフォルトの名無しさん
2006/08/25(金) 19:16:06可能にするためのシンタックスシュガーを追加する
ライブラリ(?)ってないですかねぇ。
0794793
2006/08/25(金) 19:35:30http://www.codeproject.com/library/cpp_object_properties.asp?df=100&forumid=182321&exp=0&select=1113401
結構複雑に書いてあるなぁ。
getter と setter を自動で宣言するマクロでいいや、
なんて思ってたんだけど、テンプレートのほうが C++ ぽいよね。
0795デフォルトの名無しさん
2006/08/25(金) 23:17:260796デフォルトの名無しさん
2006/08/25(金) 23:19:590797デフォルトの名無しさん
2006/08/26(土) 00:16:580798デフォルトの名無しさん
2006/08/26(土) 01:09:25boostにあるならそっちを使った方がよいと思うよ。
0799793
2006/08/26(土) 08:19:49boost のって普通のコードで使うためのものじゃないのかも。
ふつうプロパティって言うと setter のコードの中で値の
正しさを検証して問題があれば例外投げたり、
もしくは setter に連動したコールバック関数を
定義できたりするモノだと思うんだけど、 boost のやつは
単純に読み書きのアクセス制限のためだけの機能みたいだし。
>>798 たしかに。でも codeproject のコード参考にして
自分のライブラリに取り込んだりしてるよ、結構。
ところで皆さん俺ライブラリに他人のコード参考にして
一部コピペした時って、どのように著作権表示してますか?
俺は「ここからここまでのコードはこのウェブページを参考にしました」
みたいに書いているんだけど、クラスメイトか名前空間とか
競合しないように臨機応変にいじりまくってるし、
そもそもいじってるうちに元のコードの片鱗も無くなってたりするし。
でそんな感じでぐちゃぐちゃになったコードって仕事で使って
いいものかとおもって車輪の再発明してみたり。
俺ライブラリはGPLで出せるんだけど、細かく見ていくと
「あ〜ここの数行はコピペしたんだよな、どっかから」
って感じで、ライセンスがクリアじゃないから出せない。
0800デフォルトの名無しさん
2006/08/26(土) 09:29:59級友を弄る>799がいるのはここですか?
0801デフォルトの名無しさん
2006/08/26(土) 10:13:29著作権表示というか、参考にしたものはコメントに書いておくよ。
ところで仕事に使ったコードを GPL で出しちゃうのか?
0802793
2006/08/26(土) 10:21:42仕事とは関係なく書きためてきたものだから。
部分的にGPLなソフトウェアに組み込んだこともある。
で、それを使うとさらっと書ける仕事がある。
使うとGPLに感染する。
仕方ないので車輪の再発明をする。
デュアルライセンスという考え方で何とかなるのかも試練が、
そもそもデュアルライセンスという考え方が理解できない。
0803デフォルトの名無しさん
2006/08/26(土) 10:26:11利用が制限されることはないだろ。
GPLの基で公開しておいて、自分はクローズドに使うというのは
なんの問題もない。
0804デフォルトの名無しさん
2006/08/26(土) 10:50:40そんな感じでNPLのNetscapeだけ自分に書き換えたOrePLでも作って
OrePL/GPLのデュアルライセンスにするとか。
0805793
2006/08/26(土) 11:22:00で、GPLで公開するとパッチや改善のためのコードが
送られてきて、それをマージするともはや自分だけのモノじゃなくなる。
新しいバージョンのコードはクローズドでは使えない。
0806デフォルトの名無しさん
2006/08/26(土) 14:49:13GPLはウィルスより悪質だとか言われる所以ですなw
0807デフォルトの名無しさん
2006/08/26(土) 15:48:540808793
2006/08/26(土) 16:13:03あ〜でもただ乗りすんな、っていう心の狭い俺には Boost ライセンスは
おおらかすぎるなぁ。
0809デフォルトの名無しさん
2006/08/26(土) 16:14:340810デフォルトの名無しさん
2006/08/26(土) 16:20:21はいはい、後は自分の日記にでも書いてね。
お前の糞ライブラリのライセンスなんてどうでもいいから。
0811デフォルトの名無しさん
2006/08/26(土) 20:21:37予想を裏切らないな、お前
こういうこという椰子が出てくるなと思っていたところだ
0812デフォルトの名無しさん
2006/08/26(土) 20:30:280813デフォルトの名無しさん
2006/08/26(土) 20:32:000814デフォルトの名無しさん
2006/08/26(土) 21:13:21pimplイディオムを使用した時にグルーコードを
いちいち書かなくて済むライブラリもしくはテクが知りたい
0815デフォルトの名無しさん
2006/08/26(土) 21:19:16椰子とか使ってんの?
いつの時代の2チャンネラだよ。古っ
0816デフォルトの名無しさん
2006/08/26(土) 21:49:27全部仮想関数にして継承する方法もあるよ。
インスタンスは new で作ることになるけどね。
パフォーマンス的にあんまり変わらなくて、ちょっとだけ楽だから、
new に抵抗が無い環境で最初から書くなら pimpl よりこっちがお勧め。
0817デフォルトの名無しさん
2006/08/26(土) 22:45:46何言ってるんだ?
0818デフォルトの名無しさん
2006/08/26(土) 22:51:330819デフォルトの名無しさん
2006/08/26(土) 22:53:43あー、そうだった。
じゃ継承する方法のデメリットはほとんど無いね。
やっぱりお勧め。
0820デフォルトの名無しさん
2006/08/26(土) 22:58:28何言ってんだ。
pimplイディオム知ってるのか?
0821デフォルトの名無しさん
2006/08/26(土) 23:00:59お前自分がpimplイディオムもちゃんと分かってない馬鹿と露呈したんだから
ちょっとは勉強してこいよ。
そんなんじゃこの先、ずっと恥の上塗りの連続だぞ?
0822デフォルトの名無しさん
2006/08/26(土) 23:05:190823デフォルトの名無しさん
2006/08/26(土) 23:16:19pimpl と、継承を使う方法は、実装を隠すという同じ目的のための
2つの手法だよ。継承を使うほうには pimpl みたいに名前が付いてないから
マイナーなだけ。
// Foo.hpp
class Foo {
public:
friend Foo* new_Foo();
virtual void f() = 0;
private:
class Impl;
};
Foo* new_Foo();
// Foo.cpp
class Foo::Impl : public Foo
{
// ここに実装用メンバ
public:
void f() { /* ここに関数の実装 */ }
};
Foo* new_Foo() { return new Foo::Impl(); }
0824デフォルトの名無しさん
2006/08/26(土) 23:28:48何がおかしいのかわかってないらしい。
0825823
2006/08/26(土) 23:30:56ごめん。わかんねーや。何がおかしいの?
>>814 が言うようなグルーコードが無いから
こっちの方法がお勧めできると思ったんだけどね。
0826デフォルトの名無しさん
2006/08/26(土) 23:38:40STLのコンテナに入れることが出来ない。
0827デフォルトの名無しさん
2006/08/26(土) 23:41:10ポインタ入れるに決まってるだろ。
0828デフォルトの名無しさん
2006/08/26(土) 23:45:39それと、実装の隠蔽については、boostのドキュメントにあったぞ。どこかは忘れたが。
0829デフォルトの名無しさん
2006/08/26(土) 23:48:27名前が付いてないって...どうみてもそれclass side factoryじゃん。
有名どころなんだから名前ぐらい知っておこうよ。
0830デフォルトの名無しさん
2006/08/26(土) 23:53:35class Fooを派生するときに困る。
0831デフォルトの名無しさん
2006/08/26(土) 23:57:01実装を隠す方法の一部に class side factory パターンを使っているだけ。
実装を隠す方法に class side factory と名前が付いているわけじゃない。
0832デフォルトの名無しさん
2006/08/26(土) 23:58:18実装継承するつもりが無いんで、あまり問題にならない。
むしろ実装継承を排除できる。
0833デフォルトの名無しさん
2006/08/27(日) 00:02:44いや、お前が困るかどうかの話なんかしてないし。
0834デフォルトの名無しさん
2006/08/27(日) 00:17:06グルーコードはコピペでw
0835デフォルトの名無しさん
2006/08/27(日) 02:06:16思いっきしなぶりっ子
だ が そ れ が い い 。
>>815
ばーか
死ね
0836デフォルトの名無しさん
2006/08/27(日) 04:42:15なぜか boost::scoped_ptr<std::locale> のコピーコンストラクタを
呼び出そうとして、そりゃ private だぉ (non-copyableになってる)
って怒られるんですが・・・なんででしょうか?
0837836
2006/08/27(日) 10:07:01template<class Archive>
serialize(Archive ar, const unsigned version);
って宣言してた・・・・
Archive を参照でうけてなかったんで、コピーが発生してました。
しかしテンプレートがらみでエラーが出ると、原因を追っかけるのが
大変ですね。結局エラーが再現する最小のコードにまで削って、
ようやく気がつきました。
秋の気配を感じる心地よい週末、これでようやく持ち帰りの
コードを書き上げられそうです orz
0838デフォルトの名無しさん
2006/08/27(日) 10:09:22そんな貴方に
つ[STLFilt]
http://www.bdsoft.com/tools/stlfilt.html
なかなかいいですよこれ。
0839デフォルトの名無しさん
2006/08/27(日) 10:16:02WindowsならActivePerlがいいですね。
http://www.activestate.com/
0840デフォルトの名無しさん
2006/08/27(日) 14:49:39エラーを特定するのが、えらい大変だっちゅうことだな
0841デフォルトの名無しさん
2006/08/27(日) 15:51:10オールドタイプは去れ
0842デフォルトの名無しさん
2006/08/27(日) 18:21:270843デフォルトの名無しさん
2006/08/27(日) 18:24:55アニヲタ乙
臭いから死んでね
0844デフォルトの名無しさん
2006/08/27(日) 18:38:15アニオタがアニオタと非難するのかw
最高の馬鹿きたw
0845デフォルトの名無しさん
2006/08/27(日) 18:42:09オールドタイプってそういう意味だったのか。
勉強になった。ありがとう臭いアニオタ。
0846デフォルトの名無しさん
2006/08/27(日) 19:18:33意味はよく知らんけど
0847デフォルトの名無しさん
2006/08/27(日) 19:26:11自分がアニオタだって認めちゃってるしw
0848デフォルトの名無しさん
2006/08/27(日) 19:41:200849デフォルトの名無しさん
2006/08/27(日) 19:50:12スレ違い
0850デフォルトの名無しさん
2006/08/27(日) 19:50:160851デフォルトの名無しさん
2006/08/27(日) 22:10:290852デフォルトの名無しさん
2006/08/27(日) 22:54:57コーディネータってこれ?
http://www.itc.or.jp/index.html
0853デフォルトの名無しさん
2006/08/27(日) 22:59:36ここ何のスレだと思ってるんだ
ガンダムの話に決まってるだろう
0854デフォルトの名無しさん
2006/08/27(日) 23:05:260855デフォルトの名無しさん
2006/08/28(月) 00:18:190856デフォルトの名無しさん
2006/08/28(月) 05:28:260857デフォルトの名無しさん
2006/08/28(月) 15:01:000858デフォルトの名無しさん
2006/08/28(月) 18:34:39w2kで
boost::regex re("本");
てするとboost::bad_expression例外が発生するんですけど何が原因でしょう。
SJISだから?
0859デフォルトの名無しさん
2006/08/28(月) 20:10:530860デフォルトの名無しさん
2006/08/28(月) 22:25:15ガンダムで盛り上がっちゃうことがこのスレの限界かもね
でも、それはそれで息抜きも必要ってことで...
ガンダムネタだけど、
seedのOSを書き換えてるシーンは、
どう見てもパラメータを変えてるだけにしか見えないよお
0861デフォルトの名無しさん
2006/08/28(月) 22:47:41著作権なさそうだな
0862デフォルトの名無しさん
2006/08/28(月) 23:18:43よく映画とかの不正アクセスとかのシーン
キーボ連打であと10秒 ヽ(`Д´)ノ とかありえなす
0863デフォルトの名無しさん
2006/08/28(月) 23:18:48バイファムはz80で
0864デフォルトの名無しさん
2006/08/29(火) 13:14:010865デフォルトの名無しさん
2006/08/30(水) 01:23:28パフォーマンスに過ぎないんだが...
0866デフォルトの名無しさん
2006/08/31(木) 03:02:42const double dx = 0.0000001;
boost::function<double (double)> deriv(boost::function<double (double)> func){
return ((bind(func, (_1 + dx)) - bind(func, _1)) / dx);
}
これを
int main(){
const double dx = 0.0000001;
boost::function<boost::function<double (double)> (boost::function<double (double)>)> deriv
= ...
}
こんな感じにしたいのですが。
0867デフォルトの名無しさん
2006/08/31(木) 03:16:190868デフォルトの名無しさん
2006/08/31(木) 03:40:01(lambda (g)
(lambda (x)
(/ (- (g (+ x dx)) (g x) dx)))
という風に書けるんですけど、boost::lambdaはλ式の入れ子構造が使えるのかわからないんです。
0869デフォルトの名無しさん
2006/09/05(火) 05:32:16{
typedef shared_ptr<Hoge> HogePtr;
typedef std::list<HogePtr> Container;
このときにfor_each使うときってどうするんですか?
0870デフォルトの名無しさん
2006/09/05(火) 05:32:54class Hoge { void Func(); };
こんな感じです
0871デフォルトの名無しさん
2006/09/05(火) 07:04:05何か問題でも?
0872デフォルトの名無しさん
2006/09/05(火) 07:12:40mem_fun使ったら怒られてしまったので。
0873デフォルトの名無しさん
2006/09/05(火) 07:18:13じゃぁそのソース(と、できればエラーメッセージも)貼ってもらわないとわからん。
0874デフォルトの名無しさん
2006/09/05(火) 07:27:27class Hoge
{
public:
void Func();
};
typedef shared_ptr<Hoge> HogePtr;
typedef std::list<HogePtr> Container;
Container g_container;
void CallFunc()
{
std::for_each( g_container.begin(), g_container.end(), mem_fun(&Hoge::Func) );
}
で、エラーメッセージはこうです。
>error C2664: 'void boost::mem_fun_t<S,T>::operator ()(T *) const' :
>1 番目の引数を 'boost::shared_ptr<T>' から 'Hoge *' に変換できません。
もちろんですが、std::list<Hoge*>なら上手くいきます。
と、書きながら気づいたのですが、
全メンバに対してmem_funでgetして更にHoge::Funcを呼び出すようにすればいいのかな?
0875デフォルトの名無しさん
2006/09/05(火) 07:34:04あー std::mem_fun はスマートポインタへのサポート無いから、駄目だね。
boost::mem_fn で置き換えるとそのままいけるよ。
ほかにも boost::bind でも boost::lamnda::bind でもいける。
0876デフォルトの名無しさん
2006/09/05(火) 07:40:46ほんとうだ。mem_fnにしたら行けました。ありがとうございます。
0877デフォルトの名無しさん
2006/09/06(水) 08:48:30シリアライザ用意されてないんだね。
0878デフォルトの名無しさん
2006/09/06(水) 09:45:070879877
2006/09/06(水) 13:07:59http://boost.cvs.sourceforge.net/boost/boost/boost/ptr_container/ptr_vector.hpp?view=log
ところで 1.34 の目玉ってなに?
0880デフォルトの名無しさん
2006/09/06(水) 13:15:20http://boost-consulting.com/boost/
0881877
2006/09/06(水) 13:34:340882デフォルトの名無しさん
2006/09/06(水) 18:32:440883デフォルトの名無しさん
2006/09/06(水) 18:52:14何種類も用意されるんだな。
0884デフォルトの名無しさん
2006/09/06(水) 19:57:060885デフォルトの名無しさん
2006/09/06(水) 22:13:330886デフォルトの名無しさん
2006/09/06(水) 22:15:010887デフォルトの名無しさん
2006/09/06(水) 22:46:42じゃあ、Boostと結婚しろ
0888デフォルトの名無しさん
2006/09/06(水) 22:53:210889デフォルトの名無しさん
2006/09/06(水) 23:03:130890デフォルトの名無しさん
2006/09/06(水) 23:08:57Unicodeでパス名が扱えるようになるってことかな?
0891デフォルトの名無しさん
2006/09/06(水) 23:20:14そうか、今までunicodeは使えなかったのか。
個人的にはURLも統一的に扱えると便利なんだが。
0892デフォルトの名無しさん
2006/09/06(水) 23:29:34男の子を産めよ
0893デフォルトの名無しさん
2006/09/07(木) 06:33:17たとえばコマンドラインでデバッグレベルを設定するのに、
optionsDescriptionOfCommandLine.add_options()
("debug-level", value<unsigned>
(&generalOptions.debug_level)->
default_value(0), "debug level");
のようにすれば、
store(command_line_parser(argc, argv).
options(optionsDescriptionOfCommandLine).run(), variablesMap);
notify(variablesMap);
としてコマンドラインの解析が終了するとともに
generalOptions.debug_level に値が格納されます。
とすれば variablesMap からその後改めて
generalOptions.debug_level =
variablesMap["debug-level"].as<unsigned>()
のように値を取り出すことができる意味はあるのでしょうか?
variables_map に as メソッドが用意されている理由が分かりません。
また notify メソッドは何のために必要なのでしょうか?
0894893
2006/09/07(木) 10:11:05コードがコールバック(?)されるようにするためのものみたいですね。
あと、さっき気づいたんですが、あらかじめ用意されている
基本型や std::string など以外の型でも、
1)デフォルトコンストラクタが用意されている
2)代入演算子が用意されている
3)std::istream& operator>> が用意されている
4)std::ostream& operator<< が用意されている
この条件さえ満たせばオプションの型として使えるみたいですね。
0895デフォルトの名無しさん
2006/09/07(木) 10:11:52なにかとてつもないクラスが用意されているんだな!
0896デフォルトの名無しさん
2006/09/07(木) 16:28:03{
namespace BOOST_FILESYSTEM_NAMESPACE
{
template<class String, class Traits> class basic_path;
struct path_traits;
typedef basic_path< std::string, path_traits > path;
struct path_traits
{
typedef std::string internal_string_type;
typedef std::string external_string_type;
static external_string_type to_external( const path &,
const internal_string_type & src ) { return src; }
static internal_string_type to_internal(
const external_string_type & src ) { return src; }
};
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
struct wpath_traits;
typedef basic_path< std::wstring, wpath_traits > wpath;
うれしいね〜
0897デフォルトの名無しさん
2006/09/10(日) 08:02:40std::auto_ptr でさんざんこねくり回してから
最終的な保持場所に boost::scoped_ptr に代入すればいいのか。
こねくり回すときには今まで boost::shaed_ptr を使ってた。
0898デフォルトの名無しさん
2006/09/10(日) 14:13:22書き手の日常が臭ってくる卑猥な文章だったんで少し脚色してみた。
チンポ って マンコ に挿入できるんだな。
指 でさんざんこねくり回してから
最終的な保持場所に チンポ を挿入すればいいのか。
こねくり回すときには今まで バイブレータ を使ってた。
0899デフォルトの名無しさん
2006/09/10(日) 14:14:42卑猥なのはおまえだ
0900デフォルトの名無しさん
2006/09/10(日) 14:25:400901デフォルトの名無しさん
2006/09/10(日) 14:27:17卑猥な比喩だろ
0902デフォルトの名無しさん
2006/09/10(日) 14:29:100903デフォルトの名無しさん
2006/09/10(日) 14:41:150904デフォルトの名無しさん
2006/09/10(日) 16:16:550905デフォルトの名無しさん
2006/09/10(日) 19:38:22知識披露厨ってやつか。 C++ 相談室にも居なかったか?
独り言はチラシの裏にでも書いとけ。
と思ったけど、このスレをさっさと落とすのには役立つから、ここでなら別にいいや。
0906デフォルトの名無しさん
2006/09/10(日) 20:59:16まぁおまえのような奴はどこのスレッドに行っても
うざがれるだけだろうけどな。
俺はBoost厨の集まるゴミスレがさっさと落ちてくれればそれでいい。
死ねよ。
0907デフォルトの名無しさん
2006/09/10(日) 23:31:510908デフォルトの名無しさん
2006/09/11(月) 00:24:270909デフォルトの名無しさん
2006/09/11(月) 00:34:31知識披露厨、発見!
だから何?
0910デフォルトの名無しさん
2006/09/11(月) 00:35:34他人に八つ当たりは見苦しいよ
0911デフォルトの名無しさん
2006/09/11(月) 06:28:540912デフォルトの名無しさん
2006/09/11(月) 11:31:15C++のスレをいくつもたてんなよ。
0913デフォルトの名無しさん
2006/09/11(月) 11:32:590914デフォルトの名無しさん
2006/09/11(月) 12:58:310915デフォルトの名無しさん
2006/09/12(火) 00:42:340916デフォルトの名無しさん
2006/09/12(火) 15:27:40先にarchive関係のヘッダインクルードしてなかったせいで
奇妙なエラーが出て悩んだ...orz
0917デフォルトの名無しさん
2006/09/12(火) 16:28:01boost/archive/xml_iarchive.hpp とかを
先にインクルードしておかなきゃ駄目なんだよな。
ホントは順序依存性があるのは良くないことなんだがな。
あるならあるで #error とか使って止めてくれって思うよ。
0918デフォルトの名無しさん
2006/09/12(火) 16:47:050919デフォルトの名無しさん
2006/09/12(火) 17:38:41どんな順でヘッダふぃあるをインクルードしようが
テンプレートが特殊化される時点では boost::serialization::*
も boost::archive::* も読み込まれているので、問題ないはず、
まぁそれは理想で現実はインクルード順が違うとエラーになるんだが。
何が困るかって言うと、もし自分が使用したいライブラリの中で
さらにインクルードが行われていると、制御するすべがない
場合もある、ということだな。
とはいえ、今のところサードパーティのライブラリが boost
依存なんて聞いたことがないので、自分でインクルード順に
気をつけていればいいだけなんだが。
0920デフォルトの名無しさん
2006/09/13(水) 15:44:08は
ワイド文字や実体参照には対応してないのでしょうか?
0921デフォルトの名無しさん
2006/09/13(水) 15:54:250922920
2006/09/13(水) 16:28:13ワイドで統一してる場合、そこだけchar*になるのも嫌だなと思ったので。
NVPはタグになるから実体参照関係ないですね...
だから、型名を直接埋め込むわけにはいかないのか。
.NETでも
hoge<int,int> -> hogeOfInt32Int32
とかに変換されてるぽいし。
0923デフォルトの名無しさん
2006/09/13(水) 17:11:33make_nvp のソースを見てみれば分かると思うけど、
タグ名への変換は単純にプリプロセッサの文字列化演算子を
使っているだけなので、ワイド文字は想定されていないみたい。
ところで、俺は普通直接 make_nvp を呼び出さずに
BOOST_SERIALIZATION_NVP(aiueo) みたいに呼び出して
タグ名は aiueo で値は変数 aiueo なので、
変数名 = 要素名 なんだけど、わざわざ要素名にワイド
文字を使いたいってことあるのかな?
0924デフォルトの名無しさん
2006/09/13(水) 22:43:06よくレス読めよ
0925デフォルトの名無しさん
2006/09/16(土) 01:18:37いちいちVisual Studioのディレクトリにインストールするとめんどくさいので、
プロジェクトの中にProjectA/inc/boost/とか作って、その中に使いたいヘッダを
どかっと入れようと思うのですが。
boost/config.hとか
boost/config/以下のヘッダ群が気になります。あれも入れた方が良いんでしょうか。
あれらって、インストール時に自動的に生成されたヘッダだったりするんでしょうか。
それともどの環境向けのboostでも同じコードなんですか?
プロジェクトをいずれ色んなコンパイラでビルドできるようにしたいので、boostで必要な
ヘッダを入れて、どの環境のコンパイラでもそのままビルドできるようにできるといいのですが。
0926デフォルトの名無しさん
2006/09/16(土) 01:41:57>boost/config/以下のヘッダ群が気になります。あれも入れた方が良いんでしょうか。
たいていの場合他のヘッダが依存しているので入れないと機能しないはずです.
>あれらって、インストール時に自動的に生成されたヘッダだったりするんでしょうか。
多分no.$(BOOST_ROOT)/boost以下は全てパッケージの段階で存在するファイルのはずです.
>それともどの環境向けのboostでも同じコードなんですか?
ヘッダに関してのみなら多分yes.
単に#ifdefで切り分けていたりとかそういうコードで占められているはずです.
>プロジェクトの中にProjectA/inc/boost/とか作って、その中に使いたいヘッダを
>どかっと入れようと思うのですが。
bcpを使って依存しているファイルのみを自動でパッケージから抜き出せるのでご参考までに.
http://www.boost.org/tools/bcp/bcp.html
0927デフォルトの名無しさん
2006/09/16(土) 04:54:08Boost インストールする場所なんてどこでもいいと思うんだが。
ちなみに俺は各マシンでビルドするのが面倒くさいので、
ビルドしたバイナリをインストーラ付きのパッケージにしている。
で、パッケージのインストール先は C:\Program Files\boost だ。
いや、まぁそんな空白入りのディレクトリに入れるなとか言う批判も
わかるが、VC++ ならそんなディレクトリでもインクルードパスに
追加できるし、無問題。
ホントは Windows も UNIX 系のディレクトリコンベンションに
従っててくれればよかったんだけどね。 C:\usr\local\include とかさ
0928デフォルトの名無しさん
2006/09/16(土) 09:31:03パスに空白があることより、お前の頭に空白があることが問題だ
0929デフォルトの名無しさん
2006/09/16(土) 09:39:30いちいちそんなことで絡むなよ
カルシウム取れ(´ー`)ノ⌒θ
0930デフォルトの名無しさん
2006/09/16(土) 13:19:24おお、ありがとうございます。
bcpなんてのがあったんですね。
>>927
そういうやり方もありますか。環境をWinだけに限ればそのやり方もありかもしれませんね。
しかし、config.hとか見てみると#defineで処理分けていますが、あそこらへん、ユーザーがマクロ名の定義とかする必要があるシチュってあるんでしょうか。
0931デフォルトの名無しさん
2006/09/16(土) 13:21:31それ、誰かに聞かれたの?
聞かれていないならペラペラと無駄なこと書かないように :-)
0932デフォルトの名無しさん
2006/09/16(土) 13:51:40それ、誰かに聞かれたの?
聞かれていないならペラペラと無駄なこと書かないように :-)
0933デフォルトの名無しさん
2006/09/16(土) 13:54:140934デフォルトの名無しさん
2006/09/16(土) 13:57:11いわねぇか。
0935デフォルトの名無しさん
2006/09/16(土) 14:04:28まぁ実際にはループになってないけどねw
聞かれていないなら言うな、と主張してるのは片方だけだからw
0936デフォルトの名無しさん
2006/09/16(土) 14:31:18誰がどのレスで?
0937デフォルトの名無しさん
2006/09/16(土) 16:09:350938デフォルトの名無しさん
2006/09/16(土) 16:55:52できればURLも暫く忘れて来ない方がいい。
0939デフォルトの名無しさん
2006/09/16(土) 17:11:100940デフォルトの名無しさん
2006/09/16(土) 17:47:140941デフォルトの名無しさん
2006/09/16(土) 18:43:580942デフォルトの名無しさん
2006/09/16(土) 18:53:430943デフォルトの名無しさん
2006/09/16(土) 19:42:28boost/tools/
以下のツールプログラムの一括コンパイルのやり方がよく分かりません。
bjamを使うらしいことは分かるのですが・・・。
0944デフォルトの名無しさん
2006/09/16(土) 22:04:47一括コンパイルはわからんけど、bcpだけならtools/bcp/でbjam実行すれば
bin/boost/tools/bcp/あたりに実行ファイルできるんじゃない?
0945デフォルトの名無しさん
2006/09/17(日) 05:00:24アドバイスありがとうございます。でもbjamってmakeと違って良く分からなくて、
どんな引数を与えればよいのか・・・。
0946デフォルトの名無しさん
2006/09/17(日) 07:39:43ttp://www.kmonos.net/alang/boost/build.html
0947デフォルトの名無しさん
2006/09/17(日) 09:39:20bcpならとりあえず-sTOOLS=(ビルドツール名)だけつけとけばいけるよ
0948デフォルトの名無しさん
2006/09/17(日) 11:49:35>>947
ありがとうございます。できました!
最初Cygwinでやってたら失敗して、コマンドプロンプトで成功しました。
しかし、bcp shared_ptr fooとかやってもかなりの量コピーされるなぁ・・・。
0949デフォルトの名無しさん
2006/09/19(火) 16:59:360950949
2006/09/19(火) 17:30:07deleteされてしまって、セグメンテーションフォールトが起きます。
どこがおかしいのでしょうか。
#include <iostream>
#include <boost/shared_ptr.hpp>
struct A;
typedef boost::shared_ptr<A> APTR;
//typedef A* APTR;
void print(APTR);
struct A{
virtual const char *name(){return "A";}
virtual APTR getPointer(){return APTR(this);}
virtual void p(){print(APTR(this));}
virtual ~A(){std::cout << "~A" << std::endl;}
};
struct B : public A{
virtual const char *name(){return "B";}
virtual ~B(){std::cout << "~B" << std::endl;}
};
void print(APTR a){
std::cout << "print: " << a->name() << std::endl;
}
int main(){
APTR b(new B);
print(b->getPointer());
b->p();
}
0951デフォルトの名無しさん
2006/09/19(火) 17:32:530952デフォルトの名無しさん
2006/09/19(火) 17:46:300953デフォルトの名無しさん
2006/09/19(火) 17:53:220954デフォルトの名無しさん
2006/09/19(火) 18:18:350955デフォルトの名無しさん
2006/09/19(火) 18:45:34950じゃ無いがそんなのあったんだな
俺はweak_ptr持たせてその都度lock()してたよ
0956デフォルトの名無しさん
2006/09/19(火) 21:06:39これで俺もBoost馬鹿に。
0957デフォルトの名無しさん
2006/09/19(火) 21:11:110958デフォルトの名無しさん
2006/09/20(水) 01:27:010959デフォルトの名無しさん
2006/09/20(水) 02:34:340960949
2006/09/20(水) 06:59:06shared_ptrの用途は合っていますか?
生ポインタと同じように使って、いろいろなスコープにコピーされるけど、
最後のポインタがなくなるときに、生ポインタも解放される、
という使い方をしたいのですが。
virtualなメンバ関数は継承元ポインタで呼び出したときでも、継承先のメンバ関数が
呼ばれる、という普通のポインタのような継承もしたいのですが。
0961デフォルトの名無しさん
2006/09/20(水) 12:07:38用途はそれで合ってると言える。 "shared" だからね。
継承したときの動作も普通のポインタと同じ。
0962デフォルトの名無しさん
2006/09/20(水) 12:21:14そういう用途なら、IUnknown みたいな参照カウント管理を行うための
クラスを用意しておいて、intrusive_ptr でラップしたほうがいいような気がする。
0963デフォルトの名無しさん
2006/09/20(水) 12:32:38それは効率が問題になってからでいいんじゃないの?
0964デフォルトの名無しさん
2006/09/20(水) 13:02:27侵入型スマートポインタが一番自然な解だと思うが。
0965デフォルトの名無しさん
2006/09/21(木) 08:09:40boost::shared_ptr とかの
普通のスマートポインタじゃなくて?
0966デフォルトの名無しさん
2006/09/21(木) 08:41:210967デフォルトの名無しさん
2006/09/21(木) 15:16:15次のバージョンからでしょうか?
0968デフォルトの名無しさん
2006/09/21(木) 15:52:48yes。
ただし、CVSから、最新版落としてくれば今からでも使える
0969デフォルトの名無しさん
2006/09/21(木) 19:23:17あのエラーメッセージじゃデフォルト引数の問題と気づくのは至難の業だ。
0970デフォルトの名無しさん
2006/09/21(木) 20:12:41boost::filesystem::path の wchar_t バージョン?
0971デフォルトの名無しさん
2006/09/21(木) 20:33:11そのとおり。basic_stringみたいにbasic_pathというクラステンプレートが作られた。
0972デフォルトの名無しさん
2006/09/21(木) 20:55:56ディレクトリ一覧を取得したりして、日本語ファイル名が
含まれていると、今は std::string なのに UTF-8 が
入って返ってきたりするのか。
0973デフォルトの名無しさん
2006/09/21(木) 21:52:35たぶんWin32だとUCS2で入ってくる。
0974デフォルトの名無しさん
2006/09/21(木) 21:54:480975デフォルトの名無しさん
2006/09/22(金) 12:29:24Win32 API が MBCS なり UTF-16 なりで返してくるファイル名を(どうやってか)UCS2に
変換して、それを std::string に入れるの?! そりゃ酷い実装だな・・・
0976デフォルトの名無しさん
2006/09/22(金) 12:47:560977デフォルトの名無しさん
2006/09/22(金) 12:51:50FindNextFileAとか直に書かれてるし。
0978デフォルトの名無しさん
2006/09/22(金) 15:39:20いや、wstringはUTFを扱えないからUCSで処理するだろう。
<演算子とか使えなくなって大改造が必要になる。
だから変換時にUCSの範囲を超えたら例外を投げるか
あるいはそこでの動作保証をしないかのどちらかだろ。
0979デフォルトの名無しさん
2006/09/22(金) 16:21:46Windowsでのワイド文字はどっち?
0980デフォルトの名無しさん
2006/09/22(金) 16:38:48wchar_tにどのエンコードで入ってるかはライブラリやユーザーの勝手。
OSレベルの話ならWindwos2000あたりまではUCS-2、XP以降でUTF-16になったと思うが、
Windowsのどのバージョンが具体的にUnicodeのどのバージョンをサポートしてるかはしらん。
0981デフォルトの名無しさん
2006/09/22(金) 17:05:34最近のことだったのか。UCS2 の範囲を超えたら例外って意味が分からなかったんだよ。
そうすると boost::filesystem はかなり無茶しているなぁ。
Windows API とのやりとりなんてバイト列そのまま受け渡しだから。
0982デフォルトの名無しさん
2006/09/22(金) 18:24:59どうしても文字セットを広げたければUCS4でやるべきなんだな。
0983デフォルトの名無しさん
2006/09/22(金) 18:34:09wchar_t を16ビットで扱うのが悪いということか。
ところで wchar_t って組み込み型?それとも typedef 型?
0984デフォルトの名無しさん
2006/09/22(金) 18:34:20今更言ってもどうしようもないが。
0985デフォルトの名無しさん
2006/09/22(金) 18:38:38C++の規格では組み込み型。VC++はコンパイルオプションでどちらにもできたと思う。
0986デフォルトの名無しさん
2006/09/23(土) 00:56:38random accessできない文字列のiteratorって何に使うの?
0987デフォルトの名無しさん
2006/09/23(土) 01:01:410988デフォルトの名無しさん
2006/09/23(土) 01:21:360989デフォルトの名無しさん
2006/09/23(土) 02:09:43984ではないが、
たとえば検索したり連結したりストリームと読み書きしたりなどといったことはBidirectionalであれば十分。
ランダムアクセスしたければvectorで扱えばよいと俺は思う。
0990デフォルトの名無しさん
2006/09/23(土) 02:36:19vector に入れてランダムアクセスできる型が basic_string に入れたら
ランダムアクセスできなくできなくなるのっておかしくね?
0991デフォルトの名無しさん
2006/09/23(土) 02:57:38basic_stringクラスそのもののことを言っているんじゃないかと。
0992デフォルトの名無しさん
2006/09/23(土) 05:01:00驚いて飛び起きたら、まだ5時だった。
0993デフォルトの名無しさん
2006/09/23(土) 09:59:490994デフォルトの名無しさん
2006/09/23(土) 11:58:31http://engineering.meta-comm.com/boost-regression/CVS-RC_1_34_0/developer/issues_release_.html
まだまだみたいだな・・・
0995デフォルトの名無しさん
2006/09/23(土) 13:41:12今の内容で次スレ立てていいか?
0996デフォルトの名無しさん
2006/09/23(土) 14:00:530997デフォルトの名無しさん
2006/09/23(土) 14:01:04The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/
1.34 では取り込まれる予定
くらいはテンプレのどっかに書いておいてあげたら?
0998デフォルトの名無しさん
2006/09/23(土) 14:05:40あと、 >>879 もリンクに入れてあげて。
0999デフォルトの名無しさん
2006/09/23(土) 15:05:07http://pc8.2ch.net/test/read.cgi/tech/1158991211/l50
これでいいか?
1000デフォルトの名無しさん
2006/09/23(土) 15:11:18乙
でもリンクに入れるのは >>879 じゃなくて >>880 だったと思われ。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。