Boostを語れゴラァ part3at TECH
Boostを語れゴラァ part3 - 暇つぶし2ch624:デフォルトの名無しさん
07/01/16 10:51:49
テンプレートってコンパイル時まで型が決まらないからテンプレートなのに
プリコンパイルの効果あるの?
それとも全部のパターン分インスタンシエイトしちゃうとか?

625:デフォルトの名無しさん
07/01/16 13:01:41
>>624
2回目以降のコンパイル時には効果絶大だろ。
PCH が無いと、一度インスタンス化した型でもソースファイルが違うと
もう一度コンパイルしなきゃいけないし。



626:デフォルトの名無しさん
07/01/16 13:33:11
>>624
プリコンパイルっても別にオブジェクトコード吐くわけじゃなくて、
プリプロセッサ通して構文解析かけて、コンパイラの内部形式に変換しとく程度でも充分効果あるだろ。

627:デフォルトの名無しさん
07/01/16 14:06:43
いちいち stfafx.{cpp|h} みたいなのを作らないと
いけないのがめんどうだよな。hdrstop とかも指定せずに、
臨機応変にやってくれればいいのに。
って無茶か。

628:デフォルトの名無しさん
07/01/16 14:23:58
boost::serialization のシリアライズ先は
テキスト/バイナリ/XML なんだけど、
吐き出したデータを他の言語処理系から
読みたいときには XML しかないかな?

大量のデータを他の処理系とやりとりするときって、
やっぱり今まで通り独自形式で吐くしかないのかなぁ。
いっそのこと RDBMS のテーブルに吐き出してくれたらいいのに。
って、やっぱ自分で書き出すしかないか。

629:デフォルトの名無しさん
07/01/16 14:26:16
>>627
普通にcc foo.hするだけだろ。

630:デフォルトの名無しさん
07/01/16 21:42:08
RDBMSはランダムアクセスは早いがシーケンシャルが遅い。
そのうえ更新頻度が高いとシステムダウンする勢いでCPU負荷を上げ、
リソースを占有してしまう。

631:デフォルトの名無しさん
07/01/16 22:02:00
素直にXMLでいいや・・・
ところで、当たり前かも知れないけど
serialization って deserialization の方がコスト高いよね。
パースにかかるコストが高いんだろうけど。

632:デフォルトの名無しさん
07/01/16 22:40:36
軽く作ればパースはたいしたことはない。
普通の言語と違って構文がスゲー単純だから。
字句はDFAを使うとかすればいいかもしれない。

633:デフォルトの名無しさん
07/01/16 22:41:53
追記。たとえ重いパーサであってもRDBMSのODBCなどの
オーバーヘッドに比べれば屁の河童。

634:デフォルトの名無しさん
07/01/17 12:25:46
現在のバージョンの boost::serialization って、
特に XML にシリアライズする場合には浮動小数点数の
NaN が正しく扱われないんだな。
ちょっとカナシス。

635:デフォルトの名無しさん
07/01/18 02:26:24
浮動小数点といえば、IEEE754はそろそろバージョンうpじゃなかったか

636:デフォルトの名無しさん
07/01/18 11:32:56
boost.decimal みたいなライブラリがほしいなぁ。

637:デフォルトの名無しさん
07/01/18 11:43:43
.NETはDecimal定数が扱えるのがぶっちゃけめちゃくちゃ便利だな。
複素数やリストもそうだけど、定数やリテラルとして使えるかどうかって
結局使い勝手に格段の差が出来ちまうな。

638:デフォルトの名無しさん
07/01/18 14:32:51
>>635
kwsk

639:デフォルトの名無しさん
07/01/18 15:25:16
>>638
URLリンク(ja.wikipedia.org)

640:デフォルトの名無しさん
07/01/18 15:33:30
>>639
thx

641:デフォルトの名無しさん
07/01/19 00:56:43
tuple と lambda を使ってみてたんだけど、

bind(&get<0>, _1);

って式が通らないんだが……。
返り型の指定してもダメだし、ドキュメントいくら読んでもさっぱりわからない。
誰か教えてくれないだろうか……(´・ω・`)

642:デフォルトの名無しさん
07/01/19 01:00:06
質問です。
クラスAとクラスBがあるとしてshared_ptrで相互参照するのはNGというのを最近知りました。
すると、相互参照したい場合は
class A{
weak_ptr<B> b;
}

class B{
shared_ptr<A> a;
}
とすれば良いのでしょうか。ちなみにAは一つしか存在しないBの管理クラスで、Bは複数存在する管理されるクラスなのですが、
その場合はこのように管理される側が管理する側をshared_ptrで参照して、管理する側が管理される側をweak_ptrで保持するのが良いのでしょうか。
あとscoped_ptrというのもあるようで、それぞれどういう時に利用すれば良いのかまだいまいち掴めません。

643:デフォルトの名無しさん
07/01/19 06:57:25
>>641
getは設計が古くなっている。
戻り値指定なしでもできるが長くなるのでこんな感じで

template<typename Result, int i>
struct get
{
/**/ typedef Result result_type;

/**/ template<typename Tuple>
/**/ Result operator()(Tuple& t) const
/**/ { return boost::get<i>(t); }
};

bind(get<double, 0>(), _1);

644:デフォルトの名無しさん
07/01/19 07:27:37
>>642
各オブジェクトの寿命を考えてみたらいいと思うよ。
あと、weak_ptrはオブジェクトを参照するときに
一時的なshared_ptrを作成するのでコストがかかるね。

scoped_ptr, scoped_arrayは、受け取ったポインタを
自分の寿命が切れるときにdeleteするだけのポインタクラス。
C++の仕様がわかっていれば使い道はいろいろ。

645:デフォルトの名無しさん
07/01/19 14:15:52
で、いつ標準化されるんですかね。

646:デフォルトの名無しさん
07/01/20 00:52:42
>>643
おお、ありがとう。
やっぱり戻り値の型が判別できないのが問題なのかな?

色々いじりつつ、もう一度 lambda の sig を読んでみたら、今度はちょっと分かった気が。

template <int i>
struct get {
/**/ template <class Tuple>
/**/ typename boost::tuples::element<i, Tuple>::type operator()(Tuple& t) const {
/******/ return boost::get<i>(t);
/**/ }

/**/ template <class Args>
/**/ class sig {
/******/ typedef typename boost::tuples::element<1, Args>::type Tuple;
/******/ typedef typename boost::tuples::element<i, Tuple>::type Result;
/**/ public:
/******/ typedef typename boost::remove_cv<Result>::type type;
/**/ };
};

bind(get<0>(), _1);

ってことで、こう書いたらとりあえず行けたんだが、こんな感じでいいのかな?
もっといいやり方があったりするんだろうか。

しかし、関数オブジェクトならこれでいい(?)けど、テンプレート関数には sig は使えないよね。
ということは、関数の場合はテンプレート引数を全部指定しないとダメってことかな。
いや、でも、boost::get<> のテンプレート引数全部指定してもダメだったし、キャストしてもムリだったような。
なんかまたよくわからなくなってきた…(´・ω・`)

647:デフォルトの名無しさん
07/01/20 11:19:05
引数指定が間違ってるんだろう。consとかいるぞ
そもそもgetのシグニチャーは公開されてないと思われるので書いてはいけない。
要は君の::getが主役で、boost::getはシンタックスシュガーだ
関数オブジェクトがつねに偉いのだ

648:デフォルトの名無しさん
07/01/21 20:32:31
bindで結合されたオブジェクトをfor_eachで適用するとき,適用されたオブジェクトを取り出すには
for_eachの結果を何に代入すればいいのでしょうか?


struct fn1
{
double sum;
void operator()(double &t )
{sum += t;}
}


fn1.sum=0;

何に代入したらオブジェクトfn1を取り出せる?
=for_each(ar.begin(),ar.end(),
boost::bind( fn1,
boost::bind(fn2,_1 ))
);


代入しないと
fn1.sum==0
となる

649:デフォルトの名無しさん
07/01/21 20:41:39
>>648
bind() された関数オブジェクトの型は決められていないから、無理。
かわりに、結果の書き込み先を参照で持たせるのがいいんじゃない?

総和なら std::accumulate() 使えばいいんだけどね。

ソース貼るならコンパイルできるかどうか見直せよ。

650:デフォルトの名無しさん
07/01/21 20:48:45
boost::bind(boost::ref(fn1),

651:デフォルトの名無しさん
07/01/21 20:52:54
>>650
できました
感謝

652:デフォルトの名無しさん
07/01/22 01:40:45
lambda
のtestコード
algorithm_test.cpp
がMSVC8でコンパイル通らない

653:デフォルトの名無しさん
07/01/22 03:06:39
>>649←恥ずかしい人ハケン

654:デフォルトの名無しさん
07/01/22 06:14:33
よかったね。毎日が発見の連続だね。

655:649
07/01/22 07:01:48
ん?何か変なこと言ったか?

656:デフォルトの名無しさん
07/01/22 16:11:33
みなさん、boost::FileSystemって使ってます?
日本語対応してないとかmingwで一部テストがエラーとか、ちょっと使うのに二の足踏んでます。

でも移植性のある他の代替選択肢もなさそうだしなぁ・・・。

657:デフォルトの名無しさん
07/01/22 16:39:05
>> でも移植性のある他の代替選択肢もなさそうだしなぁ・・・。

boost以外のポータブルなライブラリを使えばよいのでは。
ファイルシステム関連でMBCS/WCSに対応してないって、実用上論外だと思うが。
Shift_JIS環境では使い物にならないし、Win32のFindFirstFileA()って
パス長に思いっきり制限あるし。

658:デフォルトの名無しさん
07/01/22 17:16:19
CVSから1.34拾ってこい。

659:デフォルトの名無しさん
07/01/22 17:47:54
がらっと変わってるよね
念願の basic_path 化とか他盛りだくさん

URLリンク(boost.cvs.sourceforge.net)

660:デフォルトの名無しさん
07/01/22 19:35:35
1.34 早くリリースされないかな?

661:デフォルトの名無しさん
07/01/22 21:28:32
1.35は大変なことになるというか、もう別の言語というか
Fusion, MPI, Asio, Interprocessなどなど

ライブラリに関しては、標準が何かするべきではないと思う
標準は、発表の場を提供することに予算を使うべきだ。
そして、その場所を標準として定義すべきだ(とか言ってしまおう)
実際stlportが泥を被っているわけだしな
BoostがなければC++は死んでたよ

662:デフォルトの名無しさん
07/01/22 22:11:32
>>661
すまんが言いたいことがよくわからん。
もうちょっと具体的 and/or 他人に理解できるようにお願い。

663:デフォルトの名無しさん
07/01/22 22:40:02
signalを関数objectとしてfor_eachに渡す方法はないのでしょうか?

struct obj1
{
void operator()(double &t) const
{std::cout << "obj1:" << t << " " ;}
};
struct obj2
{
void operator()(double &t) const
{std::cout << "obj2:" << t << " " ;}
};


boost::signal1< void ,double> sig;
sig.connect(obj1());
sig.connect(obj2());

std::vector<double > ar;

std::for_each(ar.begin(),ar.end(),sig)

err sigのプライベートメンバーにアクセスできません
となってfor_eachに渡せません
単にobj1,2を両方使いたいだけなんだけど

664:663
07/01/22 22:56:26
自己解決しました
std::for_each(ar.begin(),ar.end(),boost::bind<void>(boost::ref(sig), _1));
でできました

665:デフォルトの名無しさん
07/01/24 09:21:05
gil::transform_channels(pixel1,pixel2,pixel3, ( 1.0/(boost::lambda::_1 - boost::lambda::_2) ) );
がコンパイルエラーになるのですが、
何か見落としているのでしょうか?


666:665
07/01/24 09:51:28
エラーの原因
gil::transform_channels(pixel1, pixel2, pixel3
を使ってるはずが lambdaを使ったとたん
gil::transform_channels(const pixel1,const pixel2, pixel3
に入れ替わってしまうことが原因のようです

667:665
07/01/24 09:52:00
gil::transform_channels(pixel1,pixel2,pixel3, std::plus<double>() );
とするとコンパイルは通ります

668:デフォルトの名無しさん
07/01/24 10:50:48
MSVC++7.1, boost1.33.1の環境です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のコードを実行すると、自分の環境では
boost::regex_search()で例外が発生してしまいます。
("Memory exhausted").

これはboost:regexのバグでしょうか。対処方法はありますか。
別にやっていること自体は大したことでは無いはずです。
(このパターンはこの入力に対してはマッチしません)。
C#, Java, JScript, ICU, 鬼車, 等々で、全く同じ正規表現と入力を用いて
同等のパターンマッチを試みても、何の問題も発生しないことは確認済みです。

669:デフォルトの名無しさん
07/01/24 12:43:19
そんなことより文章のほうに目がいった

670:デフォルトの名無しさん
07/01/24 13:00:18
エロかとおもったら三四郎じゃないすか

671:デフォルトの名無しさん
07/01/24 22:55:12
boost のヘッダは <boost/...hpp> と "boost/...hpp" と、どちらがお勧めですか?

672:デフォルトの名無しさん
07/01/24 23:14:27
後者は書かないことをすすめる

673:デフォルトの名無しさん
07/01/24 23:20:45
>>672
なんで? <...> は標準ヘッダでしょ?
boost は標準じゃないから "..." だと思うよ。

674:デフォルトの名無しさん
07/01/25 00:02:55
>>673
くだすれC言語(初心者用)
スレリンク(tech板)


675:デフォルトの名無しさん
07/01/25 00:03:34
>>673
<>と""の違いは、ファイル探索順の違いしかないと思ったが。

676:668
07/01/25 00:05:11
えーと、つまり俺の問題は俺の環境のみで起きるのであって、そんなもん
知るかヴォケ、悔しかったらboost::regexなんぞに頼らず
テメェがDFAとかNFAとか書きやがれ。

ということでよろしいでしょうか。
このタイプの正規表現で、入力量の大きい時にコケる、という印象なのですが。

677:デフォルトの名無しさん
07/01/25 00:06:17
個人的にはプロジェクト内のものは " "、プロジェクト外のものは < > にしてる。
つまり <boost/....hpp> 派だな。

678:デフォルトの名無しさん
07/01/25 00:08:08
>>676
君のプログラムを試したわけはないが VC7 ってとこにちょっと引っ掛かる。
可能であれば VC8 とか cygwin/mingw とかで試してみなはれ。

679:668
07/01/25 00:13:15
>>678
VC8は持ってないんすよ。
localeまわりでstd::wcoutが腐るとかfstream::open()が上手くいかねーとか
腐った風評しか聞きませんので、移行するとしても二の足を踏んでしまいますが。

VC7.1をboostはサポートしていないのですか?


680:デフォルトの名無しさん
07/01/25 00:16:42
VC8でも同じ例外発生したよん。

681:デフォルトの名無しさん
07/01/25 02:33:59
bindが必要とするresult_typeを
sig templateで代用することはできないのでしょうか?


682:デフォルトの名無しさん
07/01/26 06:33:13
MPLで次元解析する方法みて感動したけど、
いざ自分の問題で使おうと思っても、使いどころが微妙

いり込んだ type の木構造でも使わない限り
enable_ifの延長としてしか使えない

683:デフォルトの名無しさん
07/01/26 20:40:23
boost::bindを
boost::lambda::bind
に変えたら挙動が違う

protectで囲ってあるところを呼んだり呼ばないで落ちたり

どっちのbinsを使うのが推奨なの?

684:デフォルトの名無しさん
07/01/27 00:47:54
>>668
の問題に関して:

URLリンク(capslockabcjp.kitunebi.com)

boostのバグ?

スレでの指摘により、boostの動作が怪しいという指摘がありました。
boost1.33および1.33.1で/\1/を使用した場合に落ちることを確認しました。

685:デフォルトの名無しさん
07/01/27 19:43:57
boostがC++でC++のコンパイラ作るのはいつ?

686:デフォルトの名無しさん
07/01/27 20:43:41
spiritでC++のコンパイラ書けってことか

687:デフォルトの名無しさん
07/01/28 03:04:59
Boostのおなじみの形式のドキュメント
こんなやつをdoxgenみたいに自動生成するツールってないのかな
URLリンク(boost-sandbox.sourceforge.net)


688:デフォルトの名無しさん
07/01/28 16:49:09
ヘッダーファイルの置き場所について教えてください

既存のboostの拡張として
boost/X/Y/z.hpp
に、おきたくなるようなヘッダーがあります。
しかしboost MLに投稿してもrejectされる可能性を考えて
my_lib_name/X/Y/z.hpp
においておくべきか,どうかで迷ってます

ヘッダーの場所を
#define my_lib_name/X/Y/z.hpp INC_XYZ
として後で変更できるようにしておくのが無難なのでしょうか?

namespaceも
boost::X::Y::z
などとせず
#define my_lib_name::X::Y::z NAME_XYZ
としておくのが無難なのでしょうか?





689:デフォルトの名無しさん
07/01/28 17:22:21
>>688
boost 気にすんな。紛らわしい。
どうせ accept されないし。
書き換えるにしてもたいした手間じゃない。

690:デフォルトの名無しさん
07/01/29 16:44:56
>>671
確か、mingwで使おうと思ったときに""だとどうしてもエラーになった気がする。
それ以後ずっと<>にしてる。
""で行けている人居る?

691:デフォルトの名無しさん
07/01/29 17:58:52
#define BOOST_DIR c:/lib/boost_ver_xxx/
#define BOOST_BIND_INC BOOST_DIR##bind.hpp

うまくいかない
#include "BOOST_BIND_INC "

うまくいくのかな?
#include <BOOST_BIND_INC >


692:デフォルトの名無しさん
07/01/29 18:04:41
Makefileの先頭で

INCLUDE=C:/boost
LIB=C:/boost/mingw

こんなんでいけたはず。
というかUNIXルーツのソフトのお約束で常識だったはず。

x.ccをコンパイルする時はこうだった思う。

A>echo "INCLUDE=C:/boost">Makefile
A>echo "LIB=C:/boost/mingw">>Makefile
A>gmake x

693:デフォルトの名無しさん
07/01/29 18:25:49
>>691
それをやるならこんな感じ。

# define BOOST_DIR c:/lib/boost_ver_xxx/
# define PP_IDENTITY(x) x
# define PP_STRINGIZE(x) PP_STRINGIZE_I(x)
# define PP_STRINGIZE_I(x) #x
# define BOOST_INC(name) PP_STRINGIZE(PP_IDENTITY(BOOST_DIR)name)

# include BOOST_INC(bind.hpp)

694:デフォルトの名無しさん
07/01/29 23:43:27
>>691
ちょw

695:デフォルトの名無しさん
07/01/30 19:16:12
ヨーロッパ系の人の作るライブラリーにboostが使われないのは
ライセンスの関係?単なる好み?


696:デフォルトの名無しさん
07/01/30 21:58:14
変なレビュー投稿しちまった

697:デフォルトの名無しさん
07/01/31 05:06:16
spiritって、もしかしてUnicodeは対応してない?

698:デフォルトの名無しさん
07/01/31 11:15:53
いや、普通にいけるはず。
Unicodeのtextファイル相手にfile_iterator使ってる場合はBOMに注意。

699:デフォルトの名無しさん
07/01/31 11:51:17
さんクスコ

700:デフォルトの名無しさん
07/02/02 23:37:31
boost::tuples::get<0>をbindしたいのですが
なぜかうまくいきません。

struct tmp_bi_op_t
{
double sum;
double operator()(double a ,double b)
{
sum +=a+b;
std::cout << "(" <<a << " " <<b << " " << sum << ")";
return a+b;
}
};

tmp_bi_op_t tmp_bi_op;
tmp_bi_op.sum=0;

std::vector<double > vec,vec2(2);
vec.push_back(2);
vec.push_back(1);

std::for_each(
boost::make_zip_iterator(
boost::make_tuple(vec.begin(), vec.begin())
),
boost::make_zip_iterator(
boost::make_tuple(vec.end(), vec.end())
),
boost::bind<void>( boost::ref( tmp_bi_op),
boost::bind(boost::tuples::get<0>,_1),
boost::bind(boost::tuples::get<1>,_1)));
std::cout << tmp_bi_op.sum;

701:デフォルトの名無しさん
07/02/08 22:12:27
こんにちは
vista+vc2005環境にboostを組み込みたいんですけどうまく行きません
何が原因なんでしょうか・・以下の手順で駄目でした

まずboost1_33_1とjamを落とし展開、jamをboostフォルダに移動し、
コマンドプロンプトで以下を実行
(boostのフォルダ以下略)>"C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install
すると一見快調にビルドしてるようでしたが>>380氏と同様のエラーが頻発していて、
かつ「Unicodeで保存してください」ワーニングも量産されてました
6.0では組み込みが成功していたんですが、そのときコンパイラに組み込んでいた
(VCのフォルダ)\INCLUDE\boost-1_33_1みたいなフォルダは生成されてませんでした

次に>>391のサイトにあるインストーラを試してみましたがこれも例のフォルダは見当たらず・・

ひょっとしてvc2005ではboostの組み込み方が違っていて
私は壮大な勘違いをしてるんでしょうか?
今日一日かけて調べてみましたが全然分かりません
どうかよろしくお願いしますm(_ _;;)m

702:デフォルトの名無しさん
07/02/08 23:22:12
>>701
391さんのお任せのやつなら、
VC8.0用を指定して展開位置を指定するとそこににboost-1-33-1のディレクトリが出来ているので、
その中にboostがあるから、自分のプロジェクトのインクルードディレクトリに追加指定すれば
よいかと思いますけど。リンク対象のライブラリ本体はlibの中にバイナリが入ってます。
VCのINCLUDEに入れたければ、boostフォルダごとコピーすれば使えるのはないですか?
VCのLIBにもlibの中身をコピーして。

見当違いでしたら、すみません。


703:デフォルトの名無しさん
07/02/09 19:15:31
>>702
レスありがとうございます。
それでいいんですね、VC6.0でいけてたときは自動でVC以下にフォルダが
できてたような気がしたので、てっきり失敗してるのかと思ってました。
で、プロジェクトにインクルードとライブラリのフォルダを追加したのですが・・・

どうやらboostを認識してるようですがまたもや意味不明のエラーが多量にorz
SP1適用もなんかうまくいってないようなのでもう一度よく調べて出直してきます

704:デフォルトの名無しさん
07/02/09 19:41:07
公式サイトのゲッティング スタートからvc8.0のリンクから飛んだ先にEEのときがある
規制中なので携帯からリンク貼れね

705:デフォルトの名無しさん
07/02/09 19:55:20
>>702
コピーしなくてもいいだろ。

706:デフォルトの名無しさん
07/02/09 20:02:16
ビルドしたboostフォルダは1GB超えるからな

707:デフォルトの名無しさん
07/02/10 21:11:13
C++の標準ライブラリになるまでは様子見だな。

708:デフォルトの名無しさん
07/02/10 22:22:59
Boostがまんま標準化されると思ってる奴がまだいるのか

709:デフォルトの名無しさん
07/02/10 22:45:21
だから様子見なんだろ

710:デフォルトの名無しさん
07/02/10 23:58:59
>>703
俺は、C直下にboost_1_33_1のフォルダ入れて
VS2005std使ってて
VC++のインクルードディレクトリにC\boost_1_33_1
ライブラリファイルフォルダにC\boost_1_33_1\lib
って設定したら、問題なく使えてる。

711:デフォルトの名無しさん
07/02/11 20:27:53
boostのリビューアー募集してるね

712:デフォルトの名無しさん
07/02/13 13:33:23
Xpressive の人のライブラリか?
何かスゲーな。

713:デフォルトの名無しさん
07/02/18 00:37:48
serializationでshared_ptrをシリアライズしようと思ってるんですけど訳分からんです。

とりあえずただの参照でテストしてみたら
unregistered_classが発生したので調べたとおりに
BOOST_CLASS_EXPORT(Derived);
を入れたら今度はunregistered_castが発生したのでいろいろ調べて
boost::serialization::void_cast_register<Derived, Base>(0, 0);
を入れたらただの参照ならシリアライズできるようになりました。

これを今度はshared_ptrに入れてみようかと思ったら
またもやunregistered_classが発生しました。
どうやらsp_counted_base_implとかいうのが絡んでるようで
いろいろ試してみたのですがなかなかうまくいきません。
boost_132::shared_ptrとかいう中途半端なものもあるみたいですけど
これはもしかしたら仕様策定中ですか?

714:713
07/02/19 18:24:41
すいません。抜けてました。
派生クラスをベースクラスのポインタでシリアライズしたいのです。
バージョンは1.33.1です。

715:デフォルトの名無しさん
07/02/21 18:45:54
Accumulatorsの仕様がもう一回変わるとかいってるのですが
もう自分のプログラムにいれちゃったよ

716:デフォルトの名無しさん
07/02/22 10:40:57
TR1、TR2、C++0xとboostの主機能が取り込まれるのを期待しているが、
実際C++0xが2010年位にできたとして、実際主なコンパイラがサポートしだすのは
いつになるんだろう。
GCCは期待できるとして、次期Visual C++で何も動きがないとすると、
結局今後5年くらいはshared_ptrつかうにもboostのお世話になったりして。

1_34いつになるのかなぁ・・・。

717:デフォルトの名無しさん
07/02/22 10:57:48
規格殺すにゃ刃物はいらぬ
MSのサポートがなけりゃいい

718:デフォルトの名無しさん
07/02/22 11:05:36
つか、MSがその頃までC++をサポートしてるかどうか

719:デフォルトの名無しさん
07/02/22 12:26:40
今となっては TR1,TR2 以外のライブラリも増えたんで主機能という風でもないような。
C++0x 後にゃ、今度はその新機能を使いまくりのライブラリが作られるだろうし。

720:デフォルトの名無しさん
07/02/22 14:13:29
>>718
ドライバとか、どうしてもC/C++が必要な領域もあるだろうから、
当分はVisualC++無くならないと思う。たぶん。

721:デフォルトの名無しさん
07/02/22 14:17:11
いずれはドライバも C# の unsafe 使って書いてくれとか言われるのかなw

722:713
07/02/23 19:57:51
どうにか自己解決しました。
デバッグのためのコードが邪魔してたみたいです。
スレ汚しすいませんでした。

723:デフォルトの名無しさん
07/02/25 01:32:35
以前スレで紹介されていたBoostのインストーラーを使いセットアップし、regexを使ってソースを書いたところ、Boost側のソースで

boost\regex\v4\regex_raw_buffer.hpp(177) : error C2661: 'operator new' : 3 個の引数を伴うオーバーロードされた関数はありません。
boost\regex\v4\perl_matcher_non_recursive.hpp(99) : error C2059: 構文エラー : '*'

というエラーが出たんですが、どうすれば直るんでしょうか?
コンパイラはVC++2005Expressです。

724:723
07/02/26 23:31:23
自己解決。
stdafx.hで
#include <boost/regex.hpp>
すればOKだった。

725:デフォルトの名無しさん
07/02/26 23:58:53
boostって何で流行らないの?糞だから?

726:デフォルトの名無しさん
07/02/27 00:06:08
流行ってると思うけど

727:デフォルトの名無しさん
07/02/27 08:26:44
俺だけ取り残されてるわけじゃないんだ! という
必死の念仏でしょう。

728:デフォルトの名無しさん
07/02/27 14:38:27
常に最新の boost を使いたい場合は、
CVS から定期的に取って来て自動的にビルド、
エラー無ければ直前のバージョンと入れ替え、
というようなシステムを自前で用意しないとダメ?

PHP の PEAR のようにリポジトリから
最新バージョンを持ってきてくれると便利なんだが。
って、スクリプト言語の手軽さと比較するほうが間違いか。

729:デフォルトの名無しさん
07/02/27 21:30:35
Visual Studio用にバイナリで配ってない時点で、流行ってないことは明らかだろ。

730:デフォルトの名無しさん
07/02/27 21:58:05
流行っているといえば流行っている
流行っていないといえば流行っていない
結構微妙な位置づけな気がする

巨大な非標準ライブラリってだけで、使いにくい局面は多いよな

731:デフォルトの名無しさん
07/02/27 22:03:29
>>729
bjamの宣伝をしたいからじゃね?

732:デフォルトの名無しさん
07/02/27 22:05:00
対応してるコンパイラが何十種類もあるのにVC++だけ特別扱いするわけにはいかんだろう

733:デフォルトの名無しさん
07/02/27 22:11:59
デバッグ・リリース、静的・動的リンクの
全ての組み合わせのLIB/DLLを合計すると軽く1GiB超えていた覚えがある。

でも今確かめてみたらDLLとそのインポートライブラリに限れば、
10MiB以下に収まっている(1.33.1のVC++ 7.1でのビルド)。

俺は動的リンク版が無いもの以外静的ライブラリを削除しているのだが、
残った静的ライブラリの合計は、およそ221MiB。
(ただしNTFSの圧縮でディスク上は68.5MiBとなっている)


734:デフォルトの名無しさん
07/02/28 00:19:33
>>732
ユーザが多い順にバイナリくらい提供した方がいいだろ。

735:デフォルトの名無しさん
07/02/28 00:26:46
流行ってるかどうかとはあまり関係ない話だな

736:デフォルトの名無しさん
07/02/28 01:08:04
>734
馬鹿除けになるからバイナリは無い方がいい。bjamぐらい使え。
そもそもバイナリ必要なのは一部だけだし。

737:デフォルトの名無しさん
07/02/28 01:09:49
無いと困るような人とその存在すら知らない人が同じフロアで仕事してる
つうか技術寄りな人が勝手に調べて喜んで使ってる感じ

738:デフォルトの名無しさん
07/02/28 10:24:58
VCユーザなら、こっからinstaller落とせるけど。
URLリンク(www.boost-consulting.com)



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch