トップページ⇒tech
950コメント288KB

【C++】Boost使い集まれ!

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
C++の準標準ライブラリ"Boost"の専用スレです。
Download/Documentはこちらからどうぞ:
http://www.boost.org/

関連スレ
C++相談室 part11
http://pc3.2ch.net/test/read.cgi/tech/1032345774/

STLスレッド part2
http://pc3.2ch.net/test/read.cgi/tech/1026793823/
0002デフォルトの名無しさんNGNG

http://pc3.2ch.net/test/read.cgi/tech/1008593126/
0003 ◆hMJAPH9PWA NGNG
2getのチャンス到来?
0004デフォルトの名無しさんNGNG
>>3
(^Д^)
0005C++使いNGNG
キタ━━━(゚∀゚)━━━!!
0006デフォルトの名無しさんNGNG
仕事で使ってる?
0007デフォルトの名無しさんNGNG
http://user.ecc.u-tokyo.ac.jp/~g940455/wp/boost/index.html
0008デフォルトの名無しさんNGNG
使うより読むほうが面白い罠
0009デフォルトの名無しさんNGNG
準標準ライブラリとか言われるとSTLに対する2軍ってイメージが。
0010デフォルトの名無しさんNGNG
「事実上の標準ライブラリ」や「最もよく利用されているライブラリの一つ」の方がよかったかね
0011デフォルトの名無しさんNGNG
http://www.kmonos.net/alang/boost/classes/lambda.html
これをg++でコンパイルするとコンパイラのエラーが出る。
2.95と3.2の両方で。コンパイラのバグなのか、プログラムの
バグなのか、ライブラリのバグなのかは不明
0012デフォルトの名無しさんNGNG
3.2だったら大丈夫でした。自分のマシンが遅すぎただけたった・・・
0013デフォルトの名無しさんNGNG
boostに関する有名な日本語サイト

・boost info
http://user.ecc.u-tokyo.ac.jp/~g940455/wp/boost/

・Hattareme Programming
http://www.dodgson.org/lab/hat/

・Let's boost
http://www.kmonos.net/alang/boost/

・Regex
http://www.s34.co.jp/cpptechdoc/article/regexpp/

・Boostを使おう
http://www.emaki.minidns.net/Programming/tools/Boost/
0014デフォルトの名無しさんNGNG
shared_ptr しか使ってないのですが
こんなわたしも boost 使いですか?
0015sageNGNG
>>14
業界標準のスマートポインタとしてboost::shared_ptrを使う意義は大きいんじゃ?
下手な独自開発のスマートポインタを公開して得意げな連中に比べれば。
0016デフォルトの名無しさんNGNG
げほ、sageミスった
0017デフォルトの名無しさんNGNG
正規表現の部分のみ使わせてもらっているけど、
なかなかいいんぢゃない。

0018デフォルトの名無しさんNGNG
>>13
マンセー
0019デフォルトの名無しさんNGNG
わしはモレーツに boost が好きだ。
0020デフォルトの名無しさんNGNG
日本語のboost解説書が出る予定は無いのでしょうか。
STL本は山のように出ているんだから、一冊くらい出してくれても良いのに。
0021デフォルトの名無しさんNGNG
boostプログラミングのためには最速のPCが必要。
ghcで遊んでて「遅いなあ」とか思ってたけど、
そのはるか上を逝く。当たり前だけど。。

>>20
ネットの情報とソースコード、これで十分でしょ。
出たとしても売れないよ(藁
0022STL刷れ466NGNG
STLスレでVC++6のバグ回避法について伺ったモノです。
http://pc3.2ch.net/test/read.cgi/tech/1026793823/466-469n

もうひとつ教えていただきたい事が・・。
class Foo { public: void bar(int i); }; があるとき、
std::mem_fun1_t< void, Foo, int > f( &Foo::bar ); が
やはりVC6でコンパイルできません。例によって戻りがvoidでなければ
とおります。

この問題をboostで回避することはできないでしょうか?
教えてください。





0023STL刷れ466NGNG
>>22
うぐ、もしかしてboost::mem_fun1_t でOKですか?
手元にいまVCがないんですが・・。

0024デフォルトの名無しさんNGNG
>>22
mem_fun1_t は 参照の参照問題の回避以外はSTLと
確か変わらんので無理だと思った。かわりにmem_fnの
返値構造体を持てばいいのだろうが、実装依存らしいので
これもやめたほうがいいだろう。

…ということで汎用のファンクタにしてしまえ。
boost::function2<void, Foo*, int> f( boost::mem_fn(&Foo::bar) );
0025デフォルトの名無しさんNGNG
GHCより遅いんかい……
0026デフォルトの名無しさんNGNG
>>24
できました。ありがとーございます。
現在、boost::bindがVCでコンパイルエラーになるってので格闘中。
いや本当はbind1stで事足りるんですけどね。
0027デフォルトの名無しさんNGNG
>>21
オレは買うぞ!!
0028デフォルトの名無しさんNGNG
おれもれも
0029デフォルトの名無しさんNGNG
gcc3.2を使うと、
"Unknown compiler version - please run the configure tests and report the results"
というエラーが出てコンパイルできない場合があるのですが、やはりgcc3.1以前を
使わないといけないのでしょうか。
0030デフォルトの名無しさんNGNG
tokenizerで質問です

ウィンドウズアプリケーションで、WinMainの引数から
コマンドラインが渡されていたら、それをstd::setにinsertする処理をしたいんです
そこで

std::set<std::string> CmdLine;
if (*lpCmdLine != NULL) {
 std::string CmdLineStr(lpCmdLine);
 boost::tokenizer<> CmdLineTemp(CmdLineStr);
 for (boost::tokenizer<>::iterator it = CmdLineTemp.begin(); it != CmdLineTemp.end(); ++it) {
  CmdLine.insert(*it);
 }
}

とやってみたのですが、「-a -bc&d」というコマンドラインを渡すと
「a」「bc」「d」に分解してくれちゃいやがります
確かデフォルトの分割は空白でされると聞いたのですが、どうも嘘だったようで・・・
本当は「-a」「-bc&d」にしたいのですが、どうしたらいいんでしょうか?
003130NGNG
あ、ちなみに

if (*lpCmdLine != NULL) {
 std::string CmdLineTemp(lpCmdLine);
 std::size_t breakpoint = 0;
 // テンポラリが空になる(区切りの空白が見つからなくなる)まで繰り返す
 while (breakpoint != std::string::npos) {
  // 空白までを1単位として、メンバへ格納して、その分を削除する
  breakpoint = CmdLineTemp.find(' ');
  CmdLine.insert(CmdLineTemp.substr(0, breakpoint));
  CmdLineTemp.erase(0, (breakpoint + 1));
 }
}

というコードだと何も問題ありませんでした
0032デフォルトの名無しさんNGNG
あるクラスHogeが保持しているvector<Moga>をソートするのに、
Hoge::sortが Cmp cmpfn を受けとる必要があるんですが、

template < typename Cmp > void Hoge::sort( Cmp cmpfn );

と

typedef boost::function< bool, const Moga*, const Moga* > Cmp;
void Hoge::sort( Cmp cmpfn );

のどちらがより適切でしょうか?

003332NGNG
あ、typedef展開して書くの忘れた。そのへんは見なかったことにしてく
ださい..
003432NGNG
>>32
実は前者で書いていたんですが、boost::mem_fn( &Hoge::sort<> )
するとg++(2.93)がinternal compiler errorで御臨終する罠に落ちまして。後者のような書き方ってアリなのかなぁと思ったのです。

あまりSTL,boostともに理解できていないのですが。。

0035デフォルトの名無しさんNGNG
>>29
それをエラーと呼んで良いものか。
0036デフォルトの名無しさんNGNG
>>32に便乗させてください

そもそも自作のクラスが32でいうところのcmpfnを
メンバ変数に保持しなければならないときその型は
何にするのがいいの?そのクラスをクラステンプレート
にしてもいいんでしょうけどインスタンス化が面倒な
予感

何か考え違いをしているのかなぁ。
0037デフォルトの名無しさんNGNG
>>36
STLスレのほうがいいんじゃない?

# ...読んでいる人がまったく同じだったりする罠
# ちなみに漏れは回答わからず(鬱
0038デフォルトの名無しさんNGNG
Boost入れたけどなんかエラーばっかりだ・・・・鬱
試しにヘッダインクルードしただけなのに
VC++6.0 エラー73個
Bcc5.5 内部の致命的エラー2個
0039デフォルトの名無しさんNGNG
boost::graphの使い方解説してるサイトとかない?
0040 ◆FSk/Ubp.Kg NGNG
前に俺も探したけれど、日本語はないみたい。Boostのページを参考にして理解するしかないだろうね。
http://www.boost.org/libs/graph/doc/table_of_contents.html

多分知ってると思うけど、洋書でもいいなら本出てるよ。
The Boost Graph Library User Guide and Reference Manual
 http://www.amazon.co.jp/exec/obidos/ASIN/0201729148
0041デフォルトの名無しさんNGNG
ttp://www.kmonos.net/alang/boost/classes/graph.html は?
0042デフォルトの名無しさんNGNG
>>30
あー本当だ。デフォルトだと ispunct/isspace で切るみたいだね。
 typedef boost::tokenizer<boost::char_separator<char> > SpaceTokenizer;
 boost::char_separator<char> sep(" ");

 SpaceTokenizer CmdLineTemp(CmdLineStr, sep);
 for (SpaceTokenizer::iterator ...
くらいでどうよ?

>>36
そのcmpfnがクラスの性質にとって重要な一部分なら、
例えば std::set みたいにテンプレート化すべきな気がする。
その場合は set< char, less<char> > と set< char, greater<char> >
が別の型であるべきだと思うので。

そうでもないなら、
例えば class WindowManager が各Window用のコールバック関数を
保持する…みたいな場合なら、必要に応じて適当に
関数ポインタなり boost::function なり loki::Functor なりで。
004336NGNG
なるほど..勉強になります。 >>42

>関数ポインタなり boost::function なり loki::Functor なりで。
この、"関数ポインタで受ける" という方法が、具体的にどうなるのか
思いつかないのですが、ちょっと教えて頂けませんか?

0044デフォルトの名無しさんNGNG
>>41にはHello, World的なことしか書いてないので、
使い込むなら別の資料が欲しいところ。しかし英語で探しても
boost本家とBGL本しかちゃんとしたものが見つからん…。
0045デフォルトの名無しさんNGNG
>>44
自ら書く鹿
0046デフォルトの名無しさんNGNG
ソース読めばいいんじゃないの?
004730NGNG
>42
なるほど、char_separator<>なるものが存在したのですか・・・
ざっと解説サイト回っただけだとオフセットセパレータの話ばっかりだったので
キーワードを教えてもらえただけで大変助かりました

どうもありがとう
0048デフォルトの名無しさんNGNG
>>46
graphはregex++以上にソース読むのつらい。
yacc&lexも使ってるし。
0049デフォルトの名無しさんNGNG
>>29
自分はそのチェックをはずして 3.2 で使ってる。
といっても、スマートポインタくらいしか使ってないけど。
0050デフォルトの名無しさんNGNG
試す度胸が無いので恥を忍んで聞きますが
文字列へのポインタconst char* lpstrを
boost::lexical_cast<string>(lpstr)とやると
ポインタそのものの数値が文字列化されてしまうんでしょうか?

数値なら文字列にして、文字列ならそのままにして
ファイルへ保存するクラスを作っているんですが
なんとかテンプレート化できないものか悩んでおりまする・・・
0051 ◆hMJAPH9PWA NGNG
>>50
いやいや、そんなわけないよ。ちゃんとCの文字列型→stringへの変換が行われます。
boost::lexical_cast<string>(static_cast<void*>(lpstr))とやれば別だけど。

ていうかそのくらい試してみればいいのに。
005250NGNG
あれれ・・・試しにやってみたらアブノーマルなプログラムだ!って怒られて強制終了・・・

map< string, map< string, string > > IniMap;

に

template <typename value_type>
inline void SetIni(const char* section, const char* key, const value_type& value) {
 IniMap[section][key] = boost::lexical_cast<std::string>(value);
}

とやってみたんですが、数値なら上手くいくのにconst char*が渡ると怒られます
もしかしてlexical_castの問題じゃなくて、テンプレートに対する理解が足りないとかいう話でしょうか・・・

環境はBCC5.5.1+BCC添付のSTL+BOOST1.28
0053デフォルトの名無しさんNGNG
>>52
文字列に空白が含まれていませんか?
空白が含まれている場合、
operator>>は空白までで区切ってしまうので
全部出力されません。
そのため、bad_lexical_castが投げられてしまいます。

自分の出した解決策はconst char *の時や
string型の時の特殊化(オーバーロード?)を作るです。
うまいことやればうまくいきます。
0054デフォルトの名無しさんNGNG
ちなみにloxical_castは一度、
operator<<を介して文字列スとリームに変換されてから
Targetの方にoperator>>を介して変換されています。
005550NGNG
>>53
空白は含まれていません

型毎に特殊化するって、boost::type_traitsを使う方法でしょうか?
もしそうだとして、type_traitsって実行時に型特性を判断できるんですか?
005653NGNG
>>55
いえ、そうではありません。

単純に
template <typename value_type>
inline void SetIni(const char* section, const char* key, const value_type& value) {
IniMap[section][key] = boost::lexical_cast<std::string>(value);
}

inline void SetIni(const char* section, const char* key, const char* value) {
IniMap[section][key] = value;
}

inline void SetIni(const char* section, const char* key,const std::string &value) {
IniMap[section][key] = value;
}

をそれぞれ用意するだけです。最後の引数を変えたものを用意して
文字列だったらloxical_castを使わずそのまま代入するということです。

それと、loxical_castにconst char *のNULLを渡しても落ちました。
その線はないでしょうか?
005750NGNG
>>56
なるほど、と、いうことは

型が明示されている関数が宣言されていた場合、
どの型にも当てはまらなかった場合にテンプレートが使われる

という認識で良いんでしょうか?

boostとは関係無い話題ですけど・・・
0058デフォルトの名無しさんNGNG
>>56
lexical、な。

>>52
同じ環境でやってみて

#include <map>
#include <string>
#include <boost/lexical_cast.hpp>
using namespace std;

map< string, map< string, string > > IniMap;
template <typename value_type>
inline void SetIni(const char* section, const char* key, const value_type& value) {
 IniMap[section][key] = boost::lexical_cast<std::string>(value);
}

int main()
{
// SetIni( "hello", "world", 3 ); // safe
 SetIni( "hello", "world", "hoge" ); // safe
// SetIni( "hello", "world", "hoge huga" ); // abnormal termination
// SetIni( "hello", "world", (const char*)NULL ); // abnormal termination
}

ってな感じでうまく実行できたけど。念のためもう一度
空白かNULLポインタを疑ってちぇっくした方がいいと思われ。
005932NGNG
>>32です。boost::bindについても教えていただきたいことがありまして・・。
次のコードがコンパイルできません。

#include <vector>
#include <algorithm>
#include <boost/bind.hpp>

class B { // abstract
 public: virtual void foo(void) = 0;
};

class D : public B { // concrete
 public: virtual void foo(void) {}
};

void func(int x, B& y) {}

int main(void) {
 std::vector<int> vi;
 B* d = new D;
 std::for_each( vi.begin(), vi.end(),
         boost::bind(func, _1, (*d))); // *d がまずいらしい
 return 0;
}
0060続きNGNG
g++ 3.2 を使っているんですが、

boost/bind.hpp:211: could not convert `
(+a)->boost::_bi::list1<A1>::operator[](const boost::_bi::value<T>&) const
[with T = B, A1 = int&]((this + 4))' to `B&'

となってしまいます。どうにかする方法はないでしょうか・・。
神々の皆さん教えてください。
006159NGNG
あーーーーー
boost::ref がないだけじゃん・・・・
お騒がせしました。

boost::ref(*d) でつね。

0062デフォルトの名無しさんNGNG
VC6でboostとSTLPort使ってるとき、_STLP_DEBUG を 1 にするとコンパイルできない。鬱。
0063デフォルトの名無しさんNGNG
次からはC++相談室一つにまとめねえ?
boost,geenric,STL,C++相談室
こんなにいくつもいらないよ。
それにC++プログラマで今時テンプレートを
使えないやつの方がヤバイ。
そういうやつはソースも読まずにSTLを
使ってたりするから信用ならん。
boostはもうここまで来たら避けては
通れないっしょ。
Lokiにしたってある程度使ってると
大体慣れてくる(ような気がする)。

という訳で出来ればC++相談室に一本化する
ようなほうにいってくれるとうれしいな。
v(^・^)v
0064デフォルトの名無しさんNGNG
そうだね。
0065デフォルトの名無しさんNGNG
次からって・・・
このスレはC++スレとSTLスレの総意でついこのあいだ独立したばっかりだと思うが・・・

一本化するなら、C++相談室スレッドとC++(準)標準ライブラリスレッドくらいには分けて欲しい
0066デフォルトの名無しさんNGNG

class TEST{

private:
int a, b;

public:
int AddA(int v, const TEST &test){return v + test.a;}
int AddB(int v, const TEST &test){return v + test.b;}
};

vector<TEST>tests;

intalla= accumulate(tests.begin(), tests.end(), 0, boost::bind(&S_FileInfo::AddA, _1, _2)));
intallb= accumulate(tests.begin(), tests.end(), 0, boost::bind(&S_FileInfo::AddB, _1, _2)));



みたいなことをしたいのですが、 boost::bind あたりの使い方がよくわからずコンパイルエラーが起きてしまいます。
どうすればいいでしょうか?
0067デフォルトの名無しさんNGNG
>>65
同意。STL/Boost/Genericスレはノイズが少なくて良い。

0068デフォルトの名無しさんNGNG
>>65
禿堂。
もう関連スレが細分化されすぎて見づらい。

>>63
>今時テンプレートを使えないやつの方がヤバイ
まぁまぁ。気持ちは分からなくもないが人それぞれ、
ソースそれぞれってことで。
0069デフォルトの名無しさんNGNG
>>66
あまり自信ないですが、
>>boost::bind(&S_FileInfo::AddA, _1, _2);
は、
boost::bind( &func , TEST instance, _1, _2 );
では?
そして、この返り血は op( int , TEST & ) なので、accumulateの
関数にはならないかと思うんですが。

0070デフォルトの名無しさんNGNG
>>69
op( int , TEST & ) なので、accumulateの 関数にはならない
はうそでした。申し訳ない・・・

>>int AddA(int v, const TEST &test){return v + test.a;}
thisはいずこに?

class TEST
{
 int AddB(int &v){return v +b;}
}
void sum(TEST &x, int &v )
{
 x.AddA(v);
}

std::for_each( tests.begin(), tests.end(), boost::bind( addop,_1,boost::ref(b) ) );

とかなら分かるけど・・
0071デフォルトの名無しさんNGNG
>>66
やりたいことがさっぱりわからんが、適当に見当つけるとこういうことか?

class TEST{
private:
 int a, b;
public:
 int AddA(int v){return v + a;}
 int AddB(int v){return v + b;}
};

vector<TEST> tests;

int alla= accumulate(tests.begin(), tests.end(), 0, boost::bind(&TEST::AddA, _2, _1));
int allb= accumulate(tests.begin(), tests.end(), 0, boost::bind(&TEST::AddB, _2, _1));
007266NGNG
>>69, 70

せっかくコードを提示していただきましたが、
自分の能力不足か、理解できないです。
スミマセン。

>>71
なぞのサンプルから推測していただきありがとうゴザイマス。
提示していただいたコードでコンパイル通りました。
boost::bind の理解不足でした。

ありがとうございました。
0073デフォルトの名無しさんNGNG
>>63
ソウデモナイヨ。(周囲見てると)
書いてて鬱なのでsage。
0074デフォルトの名無しさんNGNG
boostでできるかどうか良くわかってないんですが、すべてのメンバがpublicな、
(C言語のそれと同等の)structがあるとき、その全てのメンバをprivateにした上
でsetter/getterをなるべく自動的に作成するような、上手い方法はありませんか?
0075デフォルトの名無しさんNGNG
全てのメンバを、自動生成したsetter/getter通すって、
publicにあるのといっしょじゃないの?
0076デフォルトの名無しさんNGNG
>>75
できれば全部virtualだと嬉しかったりします。
0077デフォルトの名無しさんNGNG
あなたの人生が実はvirtualです。
0078デフォルトの名無しさんNGNG
>>77を見てちょっと落ちた俺は駄目人間。
0079デフォルトの名無しさんNGNG
マトリーックス!
0080デフォルトの名無しさんNGNG
あなたの人生が実は mutable です。
0081デフォルトの名無しさんNGNG
よーしパパ ジェネレイティブに書いちゃうぞーとか言ってんの。もう見てらんない。
0082デフォルトの名無しさんNGNG
実を言うと私の心はconstなんです。
0083デフォルトの名無しさんNGNG
>>81
まぁ、iteratorでforループまわす真似を何があっても絶対しないばか
りか同僚のそういうコードを片っ端から書き直してみたりとか、それ
でいてindirect_iteratorは使いまくってみたりとかしてたらブチ
キレる人もいるわな(わら

008483NGNG
generativeなコード書いてブチキレられてる人は、自分を含めまだ
知らないってことで失礼。

はやくブチ切れられるようになりたーい。

0085デフォルトの名無しさんNGNG
>>74
真面目な話、
親クラスのメンバをQUERYする
方法がないから、そう簡単な方法は
ないと思われ。
0086デフォルトの名無しさんNGNG
>>85
i see.
あきらめます。
0087デフォルトの名無しさんNGNG
>>83
汎用厨は反省汁!!








・・・・・・オレモナー
0088デフォルトの名無しさんNGNG
3日くらいろくに寝ないでboostしてたら、いつのまにかboost::function,bind,mem_fn
を使いこなし、成り行きで(苦笑) templateのpartial specializationをしている自分
がいて、いまちょっと感動してる。。3日前はstd::bind1stもよくわからなかったのに。

このスレにお世話になることがあったらよろしくおねがいします。

008988NGNG
・・・早速なんですが、VisualC++6(SP5)で、次がエラーになってしまいます。

typedef boost::tuple<int> hoge;

tuple_test_VC6.cpp(63) : warning C4091: 空白の宣言が見つかりました。
tuple_test_VC6.cpp(63) : error C2143: 構文エラー : ';' が '<' の前に必要です。
tuple_test_VC6.cpp(63) : error C2059: 構文エラー : '<'

g++だと問題なかったのですが、VCで通す方法はありませんか?
ご存知の方、ご教授ください。
0090デフォルトの名無しさんNGNG
>>88-89
用件は単刀直入に(w
009188NGNG
>>90
まことにすんません。嬉しかったものでつい。

0092デフォルトの名無しさんNGNG
I see dead people
(((;゚Д゚)))
0093デフォルトの名無しさんNGNG
>>88
で、3日寝ると忘れる、と。
009488NGNG
>93
ありそ。
0095デフォルトの名無しさんNGNG
誰か、Effective Boostを書いてくれ。
0096デフォルトの名無しさんNGNG
Effective Boost
0097デフォルトの名無しさんNGNG
正直、本が出ないことには仕事で使いづらいな。
0098デフォルトの名無しさんNGNG
一般的には、自分は使えるけどまわりが・・という状況だね。
おれもれも。

0099デフォルトの名無しさんNGNG
boost::mem_fn について教えてください。

http://www.boost.org/libs/bind/mem_fn.html によると、
It supports member function pointers with more than one argument らしいんですが、
2つ以上の引数をとるメンバ関数ポインタをmem_fnに渡して嬉しいケースって何かありますか?
そうして得られたfunction objectはbind1st/2ndで扱えないと思いますので、それなら
mem_fnなんて使わないでboost::bindだけ使っていれば良い気がしてなりません。

0100デフォルトの名無しさんNGNG
99+1
0101デフォルトの名無しさんNGNG
1.29 公開されました。
0102デフォルトの名無しさんNGNG
ひとまずmplのデバッグが完了したということにして
いいのですね?
0103デフォルトの名無しさんNGNG
boostのthreadってLokiのやつと比べるとダサクネ?
Cのインターフェイスをラップしただけのものなんて
正直入れないで欲しいな。
0104デフォルトの名無しさんNGNG
2chのみんなー、mplをもっと流行らせよう!!!
こいつはすごい プライベートでも仕事でもメタメタProgramminging
0105デフォルトの名無しさんNGNG
お、boost::format 入ったか。うれしいな。
0106キタ━━━━━━(゚∀゚)━━━━━━ !!!!!NGNG
ぬうおおおおお!更新キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0107105NGNG
ねえ、だれか>>99教えてよ・・
0108デフォルトの名無しさんNGNG
>>99
template<class Ite1, class Ite2, class Ite3, class Func>
for_each_3( Ite1 a, Ite1 end, Ite2 b, Ite3 c, Func f )
{
 while( a != end ) f(*a,*b,*c), ++a, ++b, ++c;
}
とかやりたい時…って普通やりたくないか、そうか。うむ。
010999NGNG
うん、、ない・・・・・・
0110デフォルトの名無しさんNGNG
Cygwin用のBoost.Jam executable(bjam.exe.gz)をダウンロードして
gunzip bjam.exe.gzで解凍しようとしたら

gunzip: bjam.exe.gz: not in gzip format

とのエラーになる。

どうやって解凍すればいいの?
0111デフォルトの名無しさんNGNG
>>110
bjam.exe.gz: MS Windows PE Intel 80386 console executable not relocatable

って言われるから、単に拡張子が間違っているじゃねーのか ?
とりあえず、bjam.exe にリネームして、ウィルスチェックしてから実行すればいいと思う。
(なんかあっても、責任は取れないけど...。)
0112デフォルトの名無しさんNGNG
boostの前にセットアップでつまずく罠
jamっての辞めてほしいんすけど。
0113110NGNG
>>111
mv bjam.exe.gz bjam.exe
./bjam.exe
としてみたら

bash: ./bjam.exe: Permission denied


boostが嫌いになりそうだ...
0114デフォルトの名無しさんNGNG
$chmod 755 bjam
はしてますか?
0115110NGNG
ls -lで見て
-rwxr-xr-x 
となっています (chmodする前から)
0116デフォルトの名無しさんNGNG
>>113
chmodじゃないの?ていうか、それくらい(略

>>112
そだね。漏れもmakeにしてほすぃ、と思う。
けど、boostのソースん中にjamのソースは入ってるから、バイナリだけ作って、
boost入れたら消せばいい。バイナリ自体も配付されてるしな。
0117デフォルトの名無しさんNGNG
>>110
IEで落とすと、IEが落としながら勝手に解凍したりしつつ
拡張子はそのまんまという迷惑なことをやってくれるが、
そういうことでなくて?
0118デフォルトの名無しさんNGNG
debパッケージ待ちだな、こりゃ。
0119デフォルトの名無しさんNGNG
shared_ptrってスレッド越しに渡してもちゃんと参照カウントされますか?
もしくはちゃんと参照カウントさせて別スレッドに渡す方法ってありますか?
例えばPostThreadMessageとかで
0120デフォルトの名無しさんNGNG
マルチスレッドオプション付きでコンパイルすれば
ちゃんとMutex入りとかになったはず、確か。
0121110NGNG
Cygwin用のbjamじゃなくてWindows用のbjamをダウンロード(こちらはzip)
してCygwin上で実行したらうまくいった。
出来上がったライブラリの拡張子がlibになってしまうのでaに変えたが、
それ以外は(今のところ)問題なし。

お騒がせしました。
0122デフォルトの名無しさんNGNG
bjamでビルドすると、STLportを使ってくれません。
makeだとちゃんとSTLportを使ってくれるんですが。
0123122NGNG
つД`) ウエーン
0124デフォルトの名無しさんNGNG
>>122
コンパイラによるので何とも言えんが、ちゃんと
 -sTOOLS=gcc-stlport
とか
 -sTOOLS=msvc-stlport
とかやってるか?
0125122NGNG
>>124
はい、msvc-stlportを指定してビルドしてみましたが、使ってくれませんでした。
コンパイラはVC7です。
0126デフォルトの名無しさんNGNG
せめて正規表現部分だけでも標準化されないかなとかいってみるテスト
0127デフォルトの名無しさんNGNG
>>126
これ?
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1386.htm
0128デフォルトの名無しさんNGNG
VC6に 1.29.0(の少なくともcast.hpp)を入れると
using namespace boost; しなくても、min( a, b ); が
多重定義でコンパイルエラーになるのは俺だけでしょうか。

とりあえず、std::min( a, b ); にして凌いだけど、、、
なんで、グローバル名前空間にminが見えるわけ?
今後 min はstdを明示的に指定しないと使えない?

マイクロソフトみたいな真似はやめれ!
0129デフォルトの名無しさんNGNG
>>128
インクルードしないようにすればいいじゃなくて?
0130デフォルトの名無しさんNGNG
>>129
いや、試したけど大体何インクルードしてもエラーになる。
あと、多重定義ってのは嘘で、オーバーロードの曖昧さでした。

ライブラリのバージョン上げた途端コンパイル通らなくなって
カナーリビビッタヨ
0131デフォルトの名無しさんNGNG
>>128
うちだと VC6SP5 + boost 1.29.0 (STLは標準のもの) で

#include <algorithm>
#include <boost/cast.hpp>
using namespace std;
//using namespace boost;
int main()
{
  return min(1,2);
}

using namespace boostしてもしなくても、何の問題もなく通ったけど。
<windows.h> のminのせいとかいうオチは流石にないよな?
0132デフォルトの名無しさんNGNG
>>131
もしかしてSTLPortのせい?

#include <algorithm>
#include <boost/cast.hpp>
using namespace std;
int main()
{
 return min( 1, 2 );
}
error C2667 〜
error C2668 〜

なんだけど、確かにSTLPort下げると通る!
013336NGNG
しつこくてスマソですが誰か>>46解説熱望

0134デフォルトの名無しさんNGNG
>>133 ソース読むほかないんじゃない?
0135133NGNG
46じゃなくて、>>43の解説希望、でした・・・・.....

0136デフォルトの名無しさんNGNG
windows.h
#define min(x,y) (x<y?x:y)

マイクロソフトは最高最強のソフトメーカーです
0137デフォルトの名無しさんNGNG
WTLだけ相手にしましょうや。
0138デフォルトの名無しさんNGNG
>>135
関数ポインタがわからんのか?
0139デフォルトの名無しさんNGNG
>>138
いやわかりますが・・
関数ポインタに boost::bind とかで作った関数オブジェクトを代入できるんですか?
0140デフォルトの名無しさんNGNG
>>136
マイクロソフト≒My糞ソフト
0141デフォルトの名無しさんNGNG
糞レス(・A・)イクナイ! >>140

0142デフォルトの名無しさんNGNG
>>140
ワロタ
0143デフォルトの名無しさんNGNG
>>139
できないよ?だから42氏が、必要に応じて
関数ポインタを使うなりboost::functionを使うなり適切な物を、
とゆーとるのではないだろうのか。
0144デフォルトの名無しさんNGNG
>>136
#undef minしちまえ
0145デフォルトの名無しさんNGNG
namespace windows{
#include "windows.h"
}
(ry

ヽ(`Д´)ノもう来ねえよ!ウワァァン!!!
0146デフォルトの名無しさんNGNG
>>145
>>136
0147デフォルトの名無しさんNGNG
>>144
ソナコトシテイイノ?
0148デフォルトの名無しさんNGNG
>>145
激しくワラタ。

>>147
#include <windows.h>
#undef min

// 自分用minの定義
0149デフォルトの名無しさんNGNG
#define min(l,r) !max(l,r)
動きません。助けてください。
0150デフォルトの名無しさんNGNG
そらそーだろ
0151デフォルトの名無しさんNGNG
うわ、凄いマヌケなことしてる気がしてきました。
なにか間違ってます?
0152デフォルトの名無しさんNGNG
#define min(l,r) max(!(l),!(r))
こうだったかな?
0153デフォルトの名無しさんNGNG
! についてもうちょっと研究するんだな
0154128NGNG
boostスレがネタスレになってる
俺のせい?
0155デフォルトの名無しさんNGNG
>>148
#define NOMINMAX
#include <windows.h>
#include <algorithm>

>>149
マクロはやめれ
0156デフォルトの名無しさんNGNG
>>155
イイ!
0157デフォルトの名無しさんNGNG
プリプロセッサで変態的プログラミングを行うスレはここですか?

boost::preprocessorでどうぞ。


#define PRED(D,STATE) BOOST_PP_LESS_D(D,(STATE),1001)
#define OP(D,STATE) (BOOST_PP_INC(Abone(STATE)))

static int Abone(int res){
  std::cout << res << " あぼーん\n";
  return res;
}

int main(){
  BOOST_PP_WHILE(PRED,OP,1);
  std::cout << std::endl;
  return 0;
}
0158デフォルトの名無しさんNGNG
ん?BOOST_PP_INCって定数しか扱えない罠?
0159デフォルトの名無しさんNGNG
ttp://www.c-view.org/tech/lib/boost/boost/preprocessor/arithmetic/inc.hpp

定数しか扱えなかったみたいだ。。。吊ってくる。。。
0160デフォルトの名無しさんNGNG
>>154
うむ、これはおまいのせいなので、ここは罪滅ぼしにSTLPort+boostの
どの辺がマズかったのか調べて報告してくれると嬉しいなっと。
0161デフォルトの名無しさんNGNG
boost/config/platform/win32.hpp にある

#ifdef BOOST_MSVC
namespace std{
// Apparently, something in the Microsoft libraries requires the "long"
// overload, because it calls the min/max functions with arguments of
// slightly different type. (If this proves to be incorrect, this
// whole "BOOST_MSVC" section can be removed.)
inline long min(long __a, long __b) {
return __b < __a ? __b : __a;
}
inline long max(long __a, long __b) {
return __a < __b ? __b : __a;
}
// The "long double" overload is required, otherwise user code calling
// min/max for floating-point numbers will use the "long" overload.
// (SourceForge bug #495495)
inline long double min(long double __a, long double __b) {
return __b < __a ? __b : __a;
}
inline long double max(long double __a, long double __b) {
return __a < __b ? __b : __a;
}
}
using std::min;
using std::max;
# endif

上でやってるminマクロのundefとかは良いとして、一番下の一体何?
0162161=154NGNG
>>161 の追記
とりあえず、対策は
boost/config/stdlib/stlport.hpp に

#undef BOOST_MSVC // min, max バグ修正

とか入れとけばOKみたい
バグっぽいので、次期バージョンでは修正されているでしょ
0163161=154NGNG
連続カキコスマン
>>162 は嘘だ、BOOST_MSVCは他のとこでも使われてる!
#define BOOST_STLPORT_MSVC とか定義して >>161 のとこだけ外してくれ
0164デフォルトの名無しさんNGNG
AppleのUniversal HeadersはちゃんとC++対応してるのになー
Microsoftも見習ってほしい
0165148NGNG
>>155
サンクス、勉強んなった。
ところで、windows.hって…VCなんだよね…。
0166デフォルトの名無しさんNGNG
>>165
偉大なるビル大師に命を賭して忠誠を誓う際に使います(w
BCは…使ったことないのでスマソ…
0167デフォルトの名無しさんNGNG
最新版のboostでも、VCでindirect_iteratorは使えないんでしょうか?
不便でしょうがない・・。

0168デフォルトの名無しさんNGNG
>>167
VC7なら昔から通っていたみたいだが、VC6の話でつか?
http://www.boost.org/status/cs-win32.html
0169デフォルトの名無しさんNGNG
boost を VC6-STLport でコンパイルしてたら 「コンパイラのヒープが足りない」
とか言って Stop しますた。
メイクファイルいぢって /Zm200 オプションつけて動かしたらコンパイル通ったけど、
これで OK なの?
0170名無し~3.EXENGNG
GentooLinuxにboostが入りました。1.28と1.29です。
これであの変なjamとかいうのを覚えなくて済みます
0171デフォルトの名無しさんNGNG
誰もレスしないので…

>>169
漏れも同じ環境だけど出なかったよ。
> 「コンパイラのヒープが足りない」
ヒープかよ…なんだろ?
とりあえず…メモリは十分?
0172169NGNG
>>171
レスありがと。

致命的なエラー C1076 だそうで。
P�V-800MHz、Mem-933MB、Windows 98SE、VC6SP5、STLport-4.5.3、boost-1.29.0。
169 の通り一応コンパイル通して、とりあえず Web に転がってる簡単な
サンプルとか動かしたけど問題出ないような。
やや不気味。
0173デフォルトの名無しさんNGNG
>>172
テンプレートを展開するときに必要なメモリがヒープの大きさを越えたんだろ。
0174172NGNG
>>173
いやー、それは何となくわかるんだけど。
ただ、こういうエラーが出るという情報が全く知らなかったんで、
漏れが何かおかしい事をしたか不安だったわけで。

したら、ついさっき↓を見つけて安心しますた。
http://page.freett.com/shelarcy/diary2002-10.html#boost_1_29_0_regex
0175デフォルトの名無しさんNGNG
C って最強じゃん?!
0176171NGNG
ごめん。
漏れの確か128だった。
0177安芸NGNG
あげといてもいいっすかね
0178デフォルトの名無しさんNGNG
>>117
その age かたはダメ。
唐揚げにして
0179デフォルトの名無しさんNGNG
boost::anyの使い方について、何か面白い例ないでしょうか?
0180唐揚NGNG
>>179
テンプレート使うのがメンドクセー状況下(VC++が自動生成するクラスとか)
で、あるクラスに、(継承関係のない)任意のクラスのオブジェクトを保持しなければならんとき、
意地でもvoid*を避ける目的で使ったことがある・・がそれだけ。


0181デフォルトの名無しさんNGNG
ありがとうございます。どうやら、型を特定せずにいろんな値をコンテナに
プッシュできるようになっているみたいですね。もう少し使ってみます。

便乗質問よろしいでしょうか?boost::multi_arrayを使おうと思い、ドキュメント
のサンプルをコンパイルしたら下のようなエラーが出てコンパイルできません。
コンパイラはBCC5.6.1です。

Assertion failed C:\Program Files\Borland\CBuilder6\Include\boost/multi_array/multi_array_ref.hpp(172) : id != 0 at c:\helena\bcc\indep\symtab.c(1142)

gcc3.2(MinGW)だときちんとコンパイルできます。やはりBCCは糞でしょうか?
0182デフォルトの名無しさんNGNG
181です。
compiler status(cs-win32.html)を見ると、bcc5.5.1ではmulti_arrayが
failとなっているので、その流れでbcc5.6.1もだめなのでしょうね。
0183デフォルトの名無しさんNGNG
boost::any の紹介文が、"typesafe union" だからなぁ。
unionなんぞになかなかご登場願わないC++としては使いどころも限られ。
って感じですかね?
0184デフォルトの名無しさんNGNG
>>183
ですよね。mem_funを使った動的バインディングをコンテナで適用する
程度ですからね。
0185デフォルトの名無しさんNGNG
>mem_funを使った動的バインディングをコンテナで適用する
って?
0186デフォルトの名無しさんNGNG
>>185
こういう事を言いたかったのです。

struct A {
virtual void func() { std::cout << "A" << std::endl; }
};

struct B : public A {
void func() { std::cout << "B" << std::endl; }
};

int main()
{
std::vector<A*> v;
v.push_back(new A);
v.push_back(new B);
std::for_each(v.begin(), v.end(), std::mem_fun(&A::func));
}
0187デフォルトの名無しさんNGNG
boost::anyとどう関係が・・・・・
低脳でスマンコ
0188デフォルトの名無しさんNGNG
>>187
boost::anyとはあまり関係ないか・・・・スマソ
0189デフォルトの名無しさんNGNG
>BCCは糞でしょうか?
それだとVCの勃ち場が。

0190デフォルトの名無しさんNGNG
>>189
VCの方が若干boostに対しては優しいみたいだよ。BCCはテンプレート
周りが弱いようだ。
0191デフォルトの名無しさんNGNG
なるほど。http://www.boost.org/status/cs-win32.html
BCCは良いのかと思っていたが↑をみると悪い意味でいい勝負だね。

まぁ http://pc3.2ch.net/test/read.cgi/tech/1026793823/756n- などを見る限り両方うんこ。
0192デフォルトの名無しさんNGNG
>>190
優しいというか、VCユーザの方が多いのでそっちの対応には
力が入っているだけというか。
0193デフォルトの名無しさんNGNG
any は、map 等の連想コンテナとあわせて、アプリケーションでつかうデータの保存に使ってるよ。

ex )
 class ApplicationDataContainer
 {
 public:
  typedef std::string KeyType;
  typedef boost::any ValueType;
  typedef std::map< KeyType, ValueType > ContainerType;

  template< typename T > void SetValue( const KeyType id, const T& value )
  {
   return data_[id] = value;
  }
  template< typename T > void GetValue( const KeyType& id, T& value ) const
  {
    ContaierType::const_iterator i = data_.find(i);
    value = boost::any_cast<T>( i->second );
  }
 private:
  ContainerType data_;
 };

 boost::any は、union で定義されている VARIANT などとは比べ物になりませんな
0194デフォルトの名無しさんNGNG
>>193
なるほど・・・・boost::anyに入れたら、取り出す時はboost::anycastを
使うのか。という事は保存状態は、多分void*とかになってるんだろうな。
0195デフォルトの名無しさんNGNG

>>194
違う。

テンプレートを利用した、エレガントでナイスな仕組みになっている。
一度、ソース読んでみろ。
0196193NGNG
>>194
boost::any は、 void* のようなポインタじゃなくて、
ちゃんと ValueType 型(代入された値の型)のオブジェクトを作成し、
そこへ 引数を渡しているから、元のオブジェクトがすでに無くても大丈夫。

 void*    var1;
 boost::any var2;
 {
  std::string s("文字列");
  var1 = reinterpret_cast<void*>( &s );
  var2 = s;
 }
 std::cout << reinterpret_cast<std::string*>(var1)->c_str() << std::endl;  // だめ
 std::cout << boost::any_cast<std::string>(var2).c_str() << std::endl;    // OK
0197デフォルトの名無しさんNGNG
>>195
ソース読んでみました。こんな短いクラスでanyのような機能を実現
できるんですねえ。

>>196
std::cout << reinterpret_cast<std::string*>(var1)->c_str() << std::endl;  // だめ
は大丈夫じゃないかと思うのですが、やっぱりだめなのでしょうか。
0198デフォルトの名無しさんNGNG
>>197
大丈夫なワケないだろ・・・
スコープとポインタ理解してるか?

{
 std::string s("文字列");
 var1 = reinterpret_cast<void*>( &s );
} // string sはスコープを越えたので破棄される
/* この時点でvar1は解放済みの領域を指している */
std::cout << reinterpret_cast<std::string*>(var1)->c_str() << std::endl; // NG

たまたまうまく動いたからといって
それが正しいコードとは限らない
(むしろこの場合深刻なバグにつながる)
0199デフォルトの名無しさんNGNG
>>198
すんまそん。{}のブロックに囲まれていたのを見過ごしていました。

#というか勝手に取り去って悩んでいた・・・・
0200デフォルトの名無しさんNGNG
出た(藁
「いらないと思ったのではずしたら変な動きをします」系
初心者でもっともやっかいなタイプだな

まぁ、そこで終わらなければ上達が速いタイプでもあるんだが
何とかと天才は紙一重
0201デフォルトの名無しさんNGNG
恐らく消したっつーより、コピペ忘れかと。
言葉を額面通りにしか受けとれんよーでは、まだまだ。
相手の状況も考えて判断下さんとな。
0202デフォルトの名無しさんNGNG
>>201
文中にある要素をどうやったらコピペし損ねられるんですか(藁
しかも>>199で
>#というか勝手に取り去って悩んでいた・・・・
と自発行動であったことを明言してるし

スレ違いsage
0203デフォルトの名無しさんNGNG
>>200、202
頼むからスレ荒らすな。
せっかくマターリ進行なのに。
0204デフォルトの名無しさんNGNG
boostのdynamic_bitsetを使ってエラトステネスのふるいによる素数を求める
プログラムを作ってみたのですが、std::bitsetとの違いって一体何なのでしょ
うか?やっぱり実行時にサイズを決められることだけでしょうか?

#include <iostream>
#include <boost/dynamic_bitset.hpp>

int main()
{
int mx;
std::cout << "max = ";
std::cin >> mx;
boost::dynamic_bitset<> bt(mx);

for (int i = 2; i < mx; i++)
if (bt[i] == 0)
for (int j = i + i; j < mx; j += i)
bt[j] = 1;
for (int i = 2; i < mx; i++)
if (bt[i] == 0)
std::cout << i << ' ';
std::cout << std::endl;
}
0205デフォルトの名無しさんNGNG
>>204
と、思ってたけど違うの?
ってか、名前からしてそれだけのような
きがするが。
マニュアル読むしかないようなきが。
0206デフォルトの名無しさんNGNG
>>204
基本的にはそれだけ。
あと、まぁ、 is_subset_of / is_proper_subset_of が存在すること。
0207デフォルトの名無しさんNGNG
is_subset_of と is_proper_subset_of の違いって、よくわからないんだけど、
is_proper_subset_of の方が真部分集合であるということでしょうか?

boostのhelpを読んでいたらそのように読めるのですが。
0208デフォルトの名無しさんNGNG
よーしパパtransform_iterator_generatorつかっちゃうぞー。
0209デフォルトの名無しさんNGNG
VC6では動かなかった。
終了。
0210デフォルトの名無しさんNGNG
boost::iterator_adaptors結構難しいね。中身も複雑だし。
誰か使ってみた人います?
0211デフォルトの名無しさんNGNG
indirect_iterator とか transform_ とか filteri_ とか、できあいのものなら便利につかってますが…

ムズカシイネ。

0212デフォルトの名無しさんNGNG
>>210
これ見た?そんなに難しくはないと思うよ。
http://user.ecc.u-tokyo.ac.jp/~g940455/wp/boost/iterator_adaptors.html
0213デフォルトの名無しさんNGNG
>>211
indirect_iteratorsとtransform_iteratorsとfilter_iteratorsの3つを覚えて
おけば取り敢えずは人に自慢できそうですね:-)。

>>212
なるほど。boostのhelpは英文なのでいま一つ理解できませんでしたが、
日本語で書いてもらうとやっぱり読みやすいですね。サンクス。
0214デフォルトの名無しさんNGNG
>>213
クッションとなる関数 (indirect_ ならポインタはずしだけ行ってファンクタを又呼び) を用意したほうがわかりやすいという罠もあるけどね。3日後に意味がわからないことがたまにある。。。。。
0215デフォルトの名無しさんNGNG
>>214
そうなんですか。boostの中身は確かに標準STLを組み合わせれば実現
できそうなものが多いですね。

indirectのindirectというのは二重にかぶせればいいのかな?
0216デフォルトの名無しさんNGNG
>>215
それはポインタのポインタをコンテナに入れてるってことか?
それはちょいと設計見直した方がよいような気が。
0217デフォルトの名無しさんNGNG
>>216
そうです。いや、単に動くかどうか試してみたかったのです。
どうやら動くようです。

int main() {
std::vector<int**> is;
int a[] = {11, 22, 33};
int *aa[] = {&a[0], &a[1], &a[2]};
is.push_back(&aa[0]);
is.push_back(&aa[1]);
is.push_back(&aa[2]);

std::cout
<< std::accumulate(boost::make_indirect_iterator(boost::make_indirect_iterator(is.begin())),
boost::make_indirect_iterator(boost::make_indirect_iterator(is.end())), 0)
<< std::endl;
}
0218monologueNGNG
boost::bindのおかげで、algorithmから呼び出せるメンバ関数の幅が大きく広がった。
が、それでも引数の微妙な型合わせが必要な場合がある。
で、xxx_iteratorシリーズご登場。

という流れなのかなぁ。std::あるごりずむ( b, e, boost::bind(&CMFCのなんちゃら::ほげ,... )
とか書いてるときはキモチいいのは確かなんだけど。

0219デフォルトの名無しさんNGNG
うどん vs そば
http://ex.2ch.net/test/read.cgi/entrance/1035686805/
0220デフォルトの名無しさんNGNG
みなさんboostの何をつかってらっしゃいますか?
漏れの場合は(最近のソースコードをgrepしてみると)多い順に

1. bind (圧勝)
2. shared_ptr
3. lexical_cast

あとは少しだけfunction, any, format, tuple, scoped_array , ... 数えるとキリがない
という感じです。
0221デフォルトの名無しさんNGNG
漏れは
 1. scoped_ptr
 2. lambda
 3. noncopyable
 4. date_time
てな感じだな。shared_ptrを使う機会が意外とほとんどない。
0222デフォルトの名無しさんNGNG
>>220
アンケートか。ほんだら揚げとこか。

1. noncopyable
2. regex
3. format
0223デフォルトの名無しさんNGNG
1) bind
2) shared_ptr, scoped_ptr
3) prior, next, ref, cref

こまかいのばっかだな〜。
BCC なものでlambda がいけないのが痛いです。
0224 ◆i.HARPeeuc NGNG
1. format
2. regex
3. noncopyable

前は sprintf() をラップする std::string format(const char *fmt, ...)
を書いたもんだけど・・・。
0225 ◆i.HARPeeuc NGNG
ああ、vsprintf() でした。
0226デフォルトの名無しさんNGNG
1) function
2) ptr_fn
3) shared_ptr
0227デフォルトの名無しさんNGNG
1. array 固定長で十分な場面は結構少なくない。
2. scoped_ptr
3. regex これを使い始めてからruby/perlはあまり使わなくなった。
4. format printf一族と手が切ることが出来た。
0228デフォルトの名無しさんNGNG
>>221
スタック上にオブジェクトを置くのではなくscoped_ptrを使うとうれしい
のってどういう時なんですか?
使いどころを激しく教えてホスイです!
0229デフォルトの名無しさんNGNG
1. scoped_ptr
2. format
3. regex
4. lexical_cast
5. tokenizer

…文字列処理が多いんで。
0230デフォルトの名無しさんNGNG
>>227
boost::array 知りませんでしたが
http://www.kmonos.net/alang/boost/classes/array.html
いいですね。普通の配列風に初期化できるのはすごくいい。
begin, end, size できて、本物のコンテナに入れなおすのも楽だし…
0231デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
int num1;
printf("あなたの年齢を入力してください。\n");
scanf("%d",&num1);

double num2;
double num3;
printf("あなたの身長と体重を入力してください(センチ、キログラム)。\n");
scanf("%lf",&num2);
scanf("%lf",&num3);
printf("あなたの年齢は'%d'です。\n");
printf("あなたの身長は、%lf、あなたの体重は%lfです。\n");
return 0;
}


このプログラムを実行したところ身長の入力をした時にruntime errorが
出てきたんですけど、エラーは0なんですけどこれはなぜなんでしょうか?
ご指導いただけたら幸いですm(__)m
0232デフォルトの名無しさんNGNG
>>231
このスレに質問するのは著しく不適切です。

0233デフォルトの名無しさんNGNG
>>231
C/C++の宿題なら俺にやらせろ!
http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50
0234233NGNG
宿題じゃなかった写し
0235デフォルトの名無しさんNGNG
すいません・・・他の板にカキコさせていただきますm(__)m
0236デフォルトの名無しさんNGNG
>>228
>>221じゃないけど、
例えばコンストラクタでnewしてデストラクタでdeleteするとき。
そのポインタをscoped_ptrでラップする。
vectorでもいいけど、オーバースペックかな?と思う時があるのと、
const auto_ptrよりも意味が明確に思えるんで。
0237デフォルトの名無しさんNGNG
>>228
俺が良く使うのは、pimpl イディオム使って実装を隠蔽するケース。
0238デフォルトの名無しさんNGNG
>>236-237
なるほど、それは確かに便利ですね。ありがとうございました。
0239デフォルトの名無しさんNGNG
scoped_ptr は所有権を移譲できないというところが潔くて好きだ。
その点、auto_ptr は中途半端。
0240デフォルトの名無しさんNGNG
>>230
boost::aryって int hoge[] = {1, 2, 3}; の模倣はできないんですかねえ?
固定長配列、私の用途だと要素数を明示したくないことがしばしば。
0241デフォルトの名無しさんNGNG
>>240
s/ary/array/;
anyと混ざった・・・鬱
0242デフォルトの名無しさんNGNG
質問れす。
next, priorに関連することなのですが、
なんでポインタ型のイテレータ(cont.begin()がT*を返す)
を直接インクリメント(デクリメント)する
のはダメなの?

typedef vector<int> cont_type;
cont_type cont;
...
for(cont_type::iterator it=++cont.begin() //bad!
  ; it!=cont.end()
  ; ++it)
{
...
}

文法的にも問題あるようには見えないんだけど...
なにか文法的に矛盾してしまうこととかあるの?
0243デフォルトの名無しさんNGNG
>>242
スレ違い。
0244デフォルトの名無しさんNGNG
>>244
一応next, priorに関連すると思うんだが…
0245デフォルトの名無しさんNGNG
>>242
右辺値と左辺値を勉強してきてくれ。
++ 演算子は右辺値にしか適用できない。
T* は左辺値。
右辺値を返す関数は型が T*&。
0246デフォルトの名無しさんNGNG
>>245
レスTHXです。
そっか。考えてみたら、
++246;
と一緒か。
結局スレ違いだった。スマソ...
0247デフォルトの名無しさんNGNG
>>245
左右が逆じゃありませんこと?
かくいうおれもよく間違えるんだが。
0248245NGNG
>>247
すまん、逝ってくる・・・。
0249デフォルトの名無しさんNGNG
boost::tupleのset_open()とかの使い方がよくわかりません。マニュアルを見て下のような
プログラムを書いてみたのですが・・・・・どういう時に使うとよいのでしょうか?

typedef boost::tuple<int, double, std::string> Btids;

Btids func()
{
return boost::make_tuple(1, 1.1, "abc");
}

int main()
{
Btids x;
x = func();
std::cout << boost::get<0>(x) << ' ' << boost::get<1>(x) << ' ' << boost::get<2>(x) << std::endl;
std::cout << boost::tuples::set_open('[') << boost::tuples::set_close(']') << boost::tuples::set_delimiter(',') << x;
}
0250デフォルトの名無しさんNGNG
どうして1が5つ出てしまうのでしょうか?

typedef boost::shared_ptr<int> Bsi;

bool ValueComp(const Bsi& bs1, const Bsi& bs2){
return *bs1 < *bs2;
}

int main()
{
std::vector<Bsi> vsi;

vsi.push_back(Bsi(new int(1)));
vsi.push_back(Bsi(new int(4)));
vsi.push_back(Bsi(new int(3)));
vsi.push_back(Bsi(new int(5)));
vsi.push_back(Bsi(new int(2)));

std::sort(vsi.begin(), vsi.end(), ValueComp);

std::vector<Bsi>::const_iterator pos = vsi.begin();

while (pos != vsi.end())
std::cout << *pos++ << std::endl;
}
0251デフォルトの名無しさんNGNG
250です。

*pos++を**pos++としたら数字は表示されました。
しかしまだソートがうまく行きません。
0252デフォルトの名無しさんNGNG
・・・・・と思ったらstd::sortをコメントアウトしていました。スマソ。
boost::shared_ptrはstd::auto_ptrと違い、コンテナに入れてソートしても
いいんですよね。
0253デフォルトの名無しさんNGNG
>>251
VC6SP5 でうまく行っておりまする・・・。
0254デフォルトの名無しさんNGNG
>>253
ありがとうございます。

ついでなのですが、ValueCompを次のような叙述関数で書くべきなのでしょ
うか?これはboostの質問ではないですね。

struct ValueComp : public std::binary_function<const Bsi&, const Bsi&, bool> {
bool operator()(const Bsi& bs1, const Bsi& bs2) {
return *bs1 < *bs2;
}
}
0255デフォルトの名無しさんNGNG
>>254
メシ食ってたYO!!!

関数オブジェクトを用いる一番の利点は、コンパイラに処理をインライン展開
させる事らしい。
250 の書き方だと関数ポインタが発生するから、インライン展開できなくなる。
not2() とかも使えないし。
それでもいいなら好きなように。
0256デフォルトの名無しさんNGNG
>>255
ありがとうございます!!手間を惜しまず関数オブジェクトにします!
0257デフォルトの名無しさんNGNG
>>245
>++ 演算子は右辺値にしか適用できない。
適用すると右辺値になる、が正解じゃないの?
0258デフォルトの名無しさんNGNG
boost::lambda使っておられる方いらっしゃいますか?
0259デフォルトの名無しさんNGNG
つーかboost::lambdaって何に使うの?
あの辺の構文てオナニーにしか見えないんだが。
開発者のジョークだろ。
0260デフォルトの名無しさんNGNG
lokiの方がオナーニだろ。
0261デフォルトの名無しさんNGNG
boost::smart_ptrのvector vのソートの時とか
std::sort(v.begin(),v.end(),*_1 < *_2);
と書くほうが 関数オブジェクト用意するより見やすくない??
ifだとか色々使うのはもう潔く関数オブジェクトにしたほうがいいとは思うけど
0262デフォルトの名無しさんNGNG
compose系のほうがオナーニに感じるなぁ。
意地でもワンライナーな皆さんを応援しちゃうぞ、みたいな。

# 好んで使いますが(w

0263デフォルトの名無しさんNGNG
lambda使うと、bind2ndとか難解な構文を使わなくても仮引数で表現
できる所がうれしい。

難を言えば、gccぐらいでしか動かない事かな。

composeってcompose_f_gx_hyとか?あれは欲しいよ。二つの文字列
をある基準で比較する時なんかにstd::lexicographical_compareと
組み合わせてよく使っている。
0264デフォルトの名無しさんNGNG
>>263
composeの奴、書いてみてー。
0265デフォルトの名無しさんNGNG
>>264
STLスレッドからの転載だけど、例えばstringを大小文字区別しないで辞書順に
挿入したりソートしたりする時とか。

struct StrCmpi {
bool operator() (const std::string& s1, const std::string& s2) const {
return std::lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end(),
boost::compose_f_gx_hy(std::less<char>(), std::ptr_fun(std::toupper), std::ptr_fun(std::toupper)));
}
};

int main()
{
typedef std::map<std::string, size_t, StrCmpi> Ssize;
Ssize mp;

mp.insert(std::make_pair("test1", 123));
mp.insert(std::make_pair("Test2", 456));

Ssize::const_iterator pos;
for (pos = mp.begin(); pos != mp.end(); ++pos)
std::cout << "string = " << pos->first << ", size_t = " << pos->second << std::endl;
}
0266デフォルトの名無しさんNGNG
あっこれ関数オブジェクトにして使ってください。
0267デフォルトの名無しさんNGNG
こんな感じで。

struct StrCmpi : public std::binary_function<const std::string&, const std::string&, bool> {
bool operator() (const std::string& s1, const std::string& s2) const {
return std::lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end(),
boost::compose_f_gx_hy(std::less<char>(), std::ptr_fun(std::toupper), std::ptr_fun(std::toupper)));
}
};
0268デフォルトの名無しさんNGNG
ptr_fun はイマイチだなぁ。inline化されるような方法はないだろうか。
0269デフォルトの名無しさんNGNG
>>268
ptr_fun使わないで、関数オブジェクトを呼び出すようにすれば
いいじゃん。その代わり既存のライブラリは使えなくなるが。
0270デフォルトの名無しさんNGNG
Kylixが最近C++対応したみたいだけど、コンパイラってg++なんだっけ? bccもどきなんだっけ?
後者だったりする場合、boostって使えてますか? 使ってる人感想きぼうん
0271デフォルトの名無しさんNGNG
ボロボロかも>>270
http://216.239.33.100/search?q=cache:hOeO5TxQ0e8C:boost.sourceforge.net/regression-logs/cs-linux.html+Kylix+boost+bind&hl=ja&ie=UTF-8
0272デフォルトの名無しさんNGNG
GCCでええやん。
0273デフォルトの名無しさんNGNG
>>270
BCCはboost::lambda、boost::format、boost::array、boost::multi_array以外は
だいたい通るよ。kylixが糞なのだと思う。
0274デフォルトの名無しさんNGNG
>>271
今 C++ コンパイラ作り直してるから、それが出て完成度が高まるまで
待つしか。
0275デフォルトの名無しさんNGNG
から揚げ
0276デフォルトの名無しさんNGNG
商用のプロジェクトでboost使ってライセンス的に問題が生じた経験の
ある人いる?
0277デフォルトの名無しさんNGNG
>>276
boost使っても、コードの中に"boost"とかいう文字列でも入らなければ、
使った事はまずわからないような気もするが。

テンプレートライブラリはそういう点ズルができそう。
0278276NGNG
だめぽ>>277

$ g++ hoge.cpp
$ nm a.out |grep boost
080493fc W _ZN5boost12lexical_castISsiEET_T0_
0804a3ea W _ZN5boost16bad_lexical_castC1ERKS0_
0804a3ca W _ZN5boost16bad_lexical_castC1Ev
0804a488 W _ZN5boost16bad_lexical_castD0Ev
0804a40c W _ZN5boost16bad_lexical_castD1Ev
0804a4c2 W _ZNK5boost16bad_lexical_cast4whatEv
0804b00c V _ZTIN5boost16bad_lexical_castE
0804a548 V _ZTSN5boost16bad_lexical_castE
0804b018 V _ZTVN5boost16bad_lexical_castE
$ strings a.out |grep boost
N5boost16bad_lexical_castE
$ strip a.out
$ strings a.out |grep boost
N5boost16bad_lexical_castE
0279276NGNG
>>277
それに、ライセンスは守るっていう前提でヨロスコ・・
0280デフォルトの名無しさんNGNG
VC++のReleaseBuildでもやはり若干形跡が残るなぁ。

.?AVbad_any_cast@boost@@
boost::bad_any_cast: failed conversion using boost::any_cast
.?AVuse_count_is_zero@boost@@
0281デフォルトの名無しさんNGNG
Type_info::name
だよね。きっと。
0282デフォルトの名無しさんNGNG
長文すまそ。
たとえば regex.hpp には次のような条がある。
/*
*
* Copyright (c) 1998-2002
* Dr John Maddock
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Dr John Maddock makes no representations
* about the suitability of this software for any purpose.
* It is provided "as is" without express or implied warranty.
*
*/
ということで、バイナリには "Copyright (c) 1998-2002 Dr John Maddock"
を埋め込んで、ドキュメントには上の条文全文を記しておけばよいらしい。
でも不安なのは、"this software" というのが何を指すかだ。こちらが作った
プロダクト全体を指す、とか解釈されたらたまらんw
0283続きNGNG
また、scoped_ptr.hpp では、
// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
// Copyright (c) 2001, 2002 Peter Dimov
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// This software is provided "as is" without express or implied
// warranty, and with no claim as to its suitability for any purpose.
//
// See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation.
//
となっている。こちらは copyright notice だけでよいらしい。
でも、"the above copyright notice" じゃなくて、"this copyright notice"
になっているところが不安。まさか条文全体のことを指してるとかw
0284デフォルトの名無しさんNGNG
ナルホド。じゃぁ、

[copyright.h]

namespace {
const char* regex_hpp = "Copyright (c) 1998-2002 Dr John Maddock";
const char* scoped_ptr_hpp = "(C) Copyright Greg Colvin and Beman Dawes 1998, 1999."
"Copyright (c) 2001, 2002 Peter Dimov";
}

とでもしておいて、boostをincludeするときにコイツも一緒にincludeすればいいかな。
ありがとう。
0285デフォルトの名無しさんNGNG
http://www.boost.org/more/lib_guide.htm#License

基本的にMITとか変形BSD的なライセンスだから、そんなに気にせんでいいと思うが。
・ソースを公開するときにはboostのライセンス表記をそのまま残す
・ドキュメントにはCopyRight表記を残す
で。
0286デフォルトの名無しさんNGNG
結構面倒だね
0287デフォルトの名無しさんNGNG
>>284 みたいに、バイナリに文字列を埋め込まないと駄目なの?
コメントじゃいかんの?

0288デフォルトの名無しさんNGNG
Must not require that the license appear with executables or other binary uses of the library.
0289デフォルトの名無しさんNGNG
さんきゅす
0290デフォルトの名無しさんNGNG
ここでいう "license" には copyright notice も含まれるんか?
0291デフォルトの名無しさんNGNG
・ソースを公開するときにはboostのライセンス表記をそのまま残す
といわれても、普通は#includeするだけだから残すもなにもないとおもうんだけども。。
0292288NGNG
>>290
俺も貼ってからそれ疑問に思った。
0293デフォルトの名無しさんNGNG
>>291
ライブラリ部分を改変した場合の話なんじゃ?
0294デフォルトの名無しさんNGNG
>>293
なる舗道
0295デフォルトの名無しさんNGNG
まとめると…

・バイナリへの埋め込みは推奨(義務ではない)。
・作成したプログラム等に付属するドキュメント等には
明記する必要はなし。
・ライブラリを改変等した場合に©表記の必要が
でてくる。

であってる?
0296デフォルトの名無しさんNGNG
・バイナリへの埋め込みは義務ではない。
・作成したプログラム等に付属するドキュメント等にはライブラリ冒頭の
ライセンス条項をそのまま転記する必要がある(*)。
・ライブラリを改変等した場合に元のライブラリ冒頭の?表記を削除
してはいかん。


(*)必要ないライブラリもある(scoped_ptr他)

だと思われ。
0297デフォルトの名無しさんNGNG
>>296
s/?表記/copyright表記/

化けてしまったよ。
0298デフォルトの名無しさんNGNG
組み込みでEmbedded-C++ではない、普通のC++を使えているラッキーな人で、
boostも使っている人っています?boost使うことを密かに画策中なんですが。
0299デフォルトの名無しさんNGNG
boostを使う理由って、単に使ってみたいってだけだろ。
0300デフォルトの名無しさんNGNG
>>299
おいおい
0301デフォルトの名無しさんNGNG
>>299
僻むほど難しくないから使ってごらん。
ほんとに。
0302デフォルトの名無しさんNGNG
>>301
簡単ですがそれが何か?
0303298NGNG
煽る屑は放置するとして、298にお答え希望〜
0304デフォルトの名無しさんNGNG
boostを使う理由がないので使っていません。
0305298NGNG
>>304
僕は便利だと思っているのですが、それはどうやら間違った考えだったので304=299さんのように
boostなどはきっぱりと使うのをやめ、まっとうなコーディングに戻ります。
お導きありがとうございました。

...とでも言って欲しいんでしょうか?意図を量りかねる。
0306デフォルトの名無しさんNGNG
>>305
> 意図を量りかねる。
それは馬鹿だから。
0307299NGNG
perl最強!!
perl >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> boost
0308デフォルトの名無しさんNGNG
>>307
perl厨のせいにしようとしてるよ。
必死だな。よっぽど悔しかったと思われる。
0309デフォルトの名無しさんNGNG
STLスレの887の実装って、var型に依存しない形にするにはどうしたらいいんでしょうか?
いろいろ試しているんだけどよくわからない・・だれかhelp.

typedef boost::indirect_iterator_pair_generator<
std::vector<var*>::iterator, // 元になるイテレータ(or ポインタ)
var // operator*(operator*())が返す修飾なしの型
// ここにconstと非constについての参照型やポインタ型が並ぶが省略可
> iterator_gen; // とりあえず命名

std::vector<var*> var_list;
iterator_gen::iterator i(var_list.begin());
iterator_gen::const_iterator j(var_list.begin());
0310デフォルトの名無しさんNGNG
皆さんにお伺いしたいのですが boost の利点と欠点を教えてもらえないでしょうか?
面白かつ便利そうなので使ってみようと思うのですが,いまいち情報が少なくて...
コーディングしたときの速度なんかについても教えてほしいです.
やはり,便利と速度は両立しないのでしょうか?ここが特に気になります.
0311デフォルトの名無しさんNGNG
>>310
bind, iterator_adaptors あたりは、最適化(inline化)しないと遅いかもしれない。
でも、最適化かければぐちゃぐちゃにinline化されてなかったことになる(言い過ぎ)
のであまり気にしてない。

そもそも、boostと一口にいわないで、boostのどれ、と言わないと答えにくいと思われ。
0312デフォルトの名無しさんNGNG
>>311
どうinline化されるのか見たいんだけど、asm出力見る以外の方法ないかな?
http://public.kitware.com/GCC_XML/HTML/Index.html を使うのはどうかと
妄想しているんだけど使ったことあるひといません?

0313デフォルトの名無しさんNGNG
Macintosh版CodeWarrior8でBoost使ってる方いますか?
regex++を使いたいと思って入れてみたんですが,
CodeWarrior5用のプロジェクトファイルは発見できたものの,
8では読み込めずどうしたものかと。。。

regex++の場合は単に,hppをincludeすればいいというわけにはいかないんですよね?
0314デフォルトの名無しさんNGNG
>>309
template<typename A> struct iterator_gen :
  boost::indirect_iterator_pair_generator<
    std::vector<A*>::iterator,
    A
  > {};

あと適当にHelper関数作ったほうが便利だと思うけど、
std::iterator_traitsとかboost::type_traits の詳細を忘れた。。。
0315デフォルトの名無しさんNGNG
教えていただきたいことがあります
vc60にて、"boost/lambda/lambda.hpp" をインクルードしただけで
"fatal error C1001: 内部コンパイラ エラー" というエラーが発生してコンパイルができません。
回避方法をご存知の方がいらっしゃったら教えてください。よろしくお願いします。
0316デフォルトの名無しさんNGNG
>>315
http://www.boost.org/status/cs-win32.html
無理そう。。。。
0317デフォルトの名無しさんNGNG
AnSi C++対応を目指すことすらしないコンパイラに何かを期待しても

無   駄   で   す
0318rubyist@カラアゲうまうまNGNG
ぶぁか
0319デフォルトの名無しさんNGNG
http://www.zdnet.co.jp/news/0211/09/nebt_08.html
「2003年初頭リリースのMicrosoft C++コンパイラ新版では
ISO C++標準に対して98%近い準拠になる」

残り2%の非対応部分にboostが引っ掛かってしまう悪寒
0320デフォルトの名無しさんNGNG
そのページにあるリンクにこんな記事が。。。’
http://www.zdnet.co.jp/news/0211/09/nebt_03.html

こんな肩書きの仕事があるんだねえ。
0321デフォルトの名無しさんNGNG
ちなみに98パーセントまで対応したというのなら、
そこりの2パーセントがなんなのかを列挙して欲しいところですな。
0322デフォルトの名無しさんNGNG
確か、templateのexportには対応せんとどこかで言ってた気がした。
0323デフォルトの名無しさんNGNG
今、http://www.boost.org/libs/smart_ptr/shared_ptr.htm を
読んでるんだが、ここに出てくる "intrusive counting" とか
"intrusive-counted smart pointer" の意味がよく分かりません。
誰か教えてくだされ。
0324デフォルトの名無しさんNGNG
>>323
http://www.kmonos.net/alang/boost/classes/intrusive_ptr.html
でも読むべし。
0325デフォルトの名無しさんNGNG
なるほど。サンクス。
つまり、参照カウントであれリンクリストであれ、管理される対象としての
オブジェクトの中身をいじるようなのがintrusive (侵入的) と呼ばれるわけだね。
0326デフォルトの名無しさんNGNG
どなたかdate-timeライブラリ使われた方いらっしゃいます?
0327デフォルトの名無しさんNGNG
exportサポートしてる処理系なんてほとんどないだろ。二つ、三つくらいか?
0328デフォルトの名無しさんNGNG
>>327
存在することの方が驚きだ(ぉぃ 具体的に、どのあたりの処理系が
サポートしてるんでしょう? ちょっとドキュメント読んでみたいぞ。
0329デフォルトの名無しさんNGNG
Comeau C++ はサポートしてるらしいね。漏れは他はしらないや。
0330デフォルトの名無しさんNGNG
VC60 にて Lambda が使えないことについての件、了解しました。
どうもありがとうございました。
0331デフォルトの名無しさんNGNG
Lambda をランバダと呼んでしまうのはダメですか?
0332デフォルトの名無しさんNGNG
VisualScheme.netではランバダ許可。
0333デフォルトの名無しさんNGNG
Lambda って何で Lambda なの?
Λ ・・・モナーの耳、でもないし・・・。
0334デフォルトの名無しさんNGNG
λ(x)≡x^2+2*x+1
0335デフォルトの名無しさんNGNG
あー違った…。

modulo ≡λ(x, y : N→N) x%y
0336333NGNG
スマン、そっちじゃなくて、boost::lambda。
0337デフォルトの名無しさんNGNG
だから、

λ算法→lispのlambda→boost::lambdaじゃないの?

でも、λ算法がなぜλなのかは知りませんです。
0338デフォルトの名無しさんNGNG
亀レス気味だが。

>>276 - >>297
Boostのライセンスは、cppllの、
ttp://www.tietew.jp/cppll/archive/5773
のスレッドが参考になります。
0339由来NGNG
   コンナノワカンネェヨ…

     __λ...________
     {
     }
日本海{
0340デフォルトの名無しさんNGNG
preprocessorメタプログラミングは面白いんだけど、
これってやっぱり仕事で使うのはヤバイ?保守性下がる?
コードは小さくなりそうなんだけど。。。
0341デフォルトの名無しさんNGNG
面白いけど、これを実務に使うのはどうかと…。
強力だし、面白いから癖になって乱用しそうなヨカソ
0342デフォルトの名無しさんNGNG
BOOST_PP_LIST_*は凄いね。
Typelistには前に驚いたけど、これにもびっくり。
Cをそれほど深くやっていたわけじゃないので正直驚いた。

マクロプログラミングマンセー!!!
0343デフォルトの名無しさんNGNG
マルチステージコンパイレーションと一言でいってしまうと、
今まで強調されてたマクロの弊害が、ウソみたいに思えてくるから不思議ですね。
マンセー!!!

でもやっぱりこれはライブラリ内のような特殊な場所だけで使うべきものかな。
可読性も重要な要素だし。。。
0344デフォルトの名無しさんNGNG
いろいろとやってみたけど、使えるデータ型はリストだけだね。
リストはまともに動くとして、配列は、SIZE(要素数),
ELEM(要素取得),DATA(そのままの値)の三種類のマクロしかないし、
タプルに至ってはかなり動作がおかしい。汗
#define LIST (a, b, c)
BOOST_PP_LIST_TO_TUPLE(LIST)
でTUPLEを作成すると
⇒ ( a , b , c )
と余分なスペースが入ってしまいます。
これがBOOST_PP_TUPLE_*マクロにおいては致命的だったりします。
使おうと思ってるひとは要注意です。

boost内部で結構使いまくってるから、それ見ればいいんだろうけど、
そこまでやるような元気はいまのところはないしなあ。。。
0345デフォルトの名無しさんNGNG
時間の無駄
0346デフォルトの名無しさんNGNG
>>344
動作がおかしいのはあなたの頭ではないかと
存じますがいかがでございましょうか?

> #define LIST (a, b, c)
それtupleでしょ?

> これがBOOST_PP_TUPLE_*マクロにおいては致命的だったりします。
なにが?

#include "boost/preprocessor/list/adt.hpp"
#include "boost/preprocessor/list/to_tuple.hpp"
#include "boost/preprocessor/list/size.hpp"
#include "boost/preprocessor/tuple/elem.hpp"
#include "boost/preprocessor/tuple/reverse.hpp"
#include "boost/preprocessor/tuple/to_list.hpp"
#include "boost/preprocessor/stringize.hpp"
#include "boost/preprocessor/arithmetic.hpp"

#define LIST (a, (b, (c, BOOST_PP_NIL)))
#define LIST_SIZE BOOST_PP_LIST_SIZE(LIST)
#define TUPLE BOOST_PP_LIST_TO_TUPLE(LIST)
TUPLE
BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(LIST_SIZE, 1, TUPLE))
#define TUPLER BOOST_PP_TUPLE_REVERSE(LIST_SIZE, TUPLE)
BOOST_PP_TUPLE_TO_LIST(LIST_SIZE, TUPLER)

( a , b , c )
"b"
(c, (b, (a, BOOST_PP_NIL)))
0347デフォルトの名無しさんNGNG
>>346
いや、LISTの件は打ち間違い。訂正ね。

>( a , b , c )
だからこれがうまいこと処理されないのよ。
これから無駄なスペースを取り除くのはREPEATを使ってやるしかなさそうだけど、
今考え中。
0348デフォルトの名無しさんNGNG
あ、ちなみにBOOST_PP_TUPLE_ELEMだけはスペースに関係なくちゃんと
評価されます。
0349デフォルトの名無しさんNGNG
おれの頭がおかしかったかも。。。

REVERSEとTO_LISTとELEMに関してはなんの問題もないと思う。
というかスペース云々も関係なし。
REMとEATの使い方がおかしいらしい。もうちょっと試してみますね。

失礼しました。m(  )m
0350デフォルトの名無しさんNGNG
んー、やっぱり boost/preprocessor/tuple/rem.hpp の
BOOST_PP_TUPLE_REM(3)(a, b, c)はどうもうまくいかないなあ。
(a, b, c)のところが文字列そのままなら上手くいくんだけど、
#define切った値だとうまくいかず。

やってることは
#define TUPLE (a, b, c)
BOOST_PP_TUPLE_REM(3)TUPLE
ってだけなんだけど、
BOOST_PP_TUPLE_REM_3(a,b,c)
ってところまででプリプロセッサが評価するのやめちゃう。
あと一つなんだけどなあ。。。
上のヘッダーにはちゃんと
#define BOOST_PP_TUPLE_REM_3(a, b, c) a, b, c
ってのが入ってます。

無知な私に誰か助け舟よろしこ。
環境 cgywin g++ 3.2
0351デフォルトの名無しさんNGNG
>>350

#include "boost/preprocessor/cat.hpp"
#include "boost/preprocessor/tuple/rem.hpp"
#define TUPLE (a, b, c)
BOOST_PP_CAT(BOOST_PP_TUPLE_REM(3), TUPLE)

a, b, c
0352デフォルトの名無しさんNGNG
>>351
素晴らしいです。thanx!!!
0353デフォルトの名無しさんNGNG
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/preprocessor/tuple/rem.hpp>

//リストからタプルとその要素数を作成
#define LIST (a, (b, (c, BOOST_PP_NIL)))
#define LIST_SIZE BOOST_PP_LIST_SIZE(LIST)
#define TUPLE BOOST_PP_LIST_TO_TUPLE(LIST) //( a , b , c )

//タプルのカッコを外す
BOOST_PP_CAT(BOOST_PP_TUPLE_REM(LIST_SIZE),TUPLE)
//⇒ a, b, c

//条件により、タプルの消去または整形を行う
#define OP(x, y, z) (x * y * z)
#define MACRO(n) BOOST_PP_CAT(BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT(LIST_SIZE)),TUPLE)
MACRO(0) //expand to nothing
//⇒
MACRO(1)
//⇒ (a * b * c)

/*
いちおう後から誰か見るかもしれないので、まとめてみました。
BOOST_PP_TUPLE_REM、および、BOOST_PP_TUPLE_EATのサンプルコード
においては上のようにBOOST_PP_CATを使うのがよさそうです。
*/

/* >>346さん、>>351さん、激しく感謝! */
0354デフォルトの名無しさんNGNG
#include <boost/preprocessor/list/size.hpp>
#include <boost/preprocessor/list/to_tuple.hpp>
抜けてた

おれもう、ダメぽ
0355ヒキコモラNGNG
boostのソースすげー勉強になる!
0356デフォルトの名無しさんNGNG
激しくアホな質問していいでしょうか?

他の人と共同でプログラムを作成するときに、
・AさんはBoostをインストールしている
・Bさんはインストールしていない
こういう状況で、AさんのコードをBoostのインストール無しで
Bさんの環境で使用することはできるのでしょうか?
0357デフォルトの名無しさんNGNG
>>356
もちろんできません。
0358デフォルトの名無しさんNGNG
ただしAさんのコードにboostが使ってなければOK。
0359デフォルトの名無しさんNGNG
regexとgraphとthreadはリンクが必要だけど
あとはただのテンプレートライブラリです。
0360デフォルトの名無しさんNGNG
コンパイル済みのオブジェクトファイルなら使えるんではないかい?
0361デフォルトの名無しさんNGNG
>>359-360
それをBさんのPCに設置するのを「インストール」とは言わんのか
0362デフォルトの名無しさんNGNG
>>360
それかLIBにするか。でもexportキーワードをサポートしてないコンパイラだと
そもそもboostをLIBにすることはできん。
0363デフォルトの名無しさんNGNG
>>361
実行ファイルに埋め込まれたものを設置する場合
「Aさんのプログラムをインストール」と言うことはあっても
「Boostをインストール」とは普通言いません。
>>359にあるライブラリを使わなければすべてインライン展開
されますから別途ランタイムも必要ありません。
0364デフォルトの名無しさんNGNG
>>363
コンパイル済みプログラムではなくてコードと書いてありますが何か?
0365デフォルトの名無しさんNGNG
要は釣りです。みなさん以後、356の質問は無視ということで
0366デフォルトの名無しさんNGNG
365=363 可哀想に・・・
0367356NGNG
釣ったりするつもりじゃなかったんですけどね・・・
でも、なんとなくわかりました。
ようするに、大抵のやつは、boost以下のディレクトリを
そのままコピーしちゃえば使えるってわけですね。
0368デフォルトの名無しさんNGNG
新しいスレが出来たからこのまま落とした方がよいのでしょうか。
0369デフォルトの名無しさんNGNG
良くない
きちんと消化してから移行
0370デフォルトの名無しさんNGNG
この勢いだと消化されるのは来年の春ぐらいだな・・・
0371デフォルトの名無しさんNGNG
あちらのスレにはアンチboostがいるみたいだからやりにくいや。やっぱり
こちらで細々とやっていきます。
0372デフォルトの名無しさんNGNG
ネタ期待age
0373デフォルトの名無しさんNGNG
boost::mplとLokiのタイプリストはどっちを使えばいいのでしょう?
Lokiの方が実装が綺麗なんですが、boostは機能が多い。またSTLに
似せて作られているので使いはじめるのは割と簡単。また半公式的
ライブラリという形でサポートも一応続けられるだろう。

みなさんのお考えを聞かせて。
0374名無しさん@EmacsNGNG
boost::mpl::push_backの使い方がどうもよく分らないです。

#include<boost/mpl/vector.hpp>
#include<boost/mpl/push_back.hpp>
#include<boost/mpl/at.hpp>
using namespace boost::mpl;
typedef vector<int,int,int> types1;
typedef push_back<types1, int>::type types2;
typedef at_c<types2, 2>::type type;
BOOST_STATIC_ASSERT((boost::is_same<type,int>::value));
int main(){}

このようなコードでコンパイルすると以下のようなメッセージが出ます。
test.cc: `boost::mpl::push_back<types1, int>' の初期化:
test.cc:7: `boost::mpl::at_c<types2, 2>' から実体化されました
test.cc:7: ここで実体化されました
test.cc:7: base class `
boost::mpl::push_back_traits<boost::mpl::aux::vector_tag<3>
>::algorithm<types1, int>' has incomplete type
test.cc: `boost::mpl::at_c<types2, 2>' の初期化:
test.cc:7: ここで実体化されました
test.cc:7: no type named `tag' in `struct types2'
test.cc:7: 文法エラー が `;' トークンの前にあります
test.cc:8: `is_same' undeclared in namespace `boost'
test.cc:8: `type' was not declared in this scope
test.cc:8: 構文解析エラー が `>' トークンの前にあります
test.cc:8: ISO C++ forbids declaration of `BOOST_STATIC_ASSERT' with no type

何がおかしいんでしょうか?
環境はcygwin g++-3.2です。
0375デフォルトの名無しさんNGNG
>>374
作者さん曰く、

http://lists.boost.org/MailArchives/boost/msg40024.php
> Basically, what compiler is trying to say here is that
> 'push_back' on 'vector' is currently not implemented, - sorry! I know it
> differs from what the docs say, and it's on my to do list. Meanwhile, if you
> switch to using 'push_front' instead, everything will work just fine.

だそうな。
0376デフォルトの名無しさんNGNG
>>375
どうもありがとう。mplが非公開な理由が分りました。
しばらくはその実装を見ながらゆっくりじっくり勉強する方がよさそうですね。
0377デフォルトの名無しさんNGNG
hackあげ
0378カラアゲNGNG
みんぷるあげ
0379デフォルトの名無しさんNGNG
boost::mpl::vector,boost::mpl::listの最大サイズが10に設定してあるのって
なにか理由があるのかな?
0380デフォルトの名無しさんNGNG
閑古鳥age
0381デフォルトの名無しさんNGNG
boost/libsの下のテストコードを見てれば大体使い方分るね。
0382デフォルトの名無しさんNGNG
threadを使ってみようと思ったのですが、どうしてもリンクエラーが出ます。
試しにコンパイルしようとしたのは、libs/thread/tutorial/count.cppです。

$/usr/bin/g++-3.2 -I/usr/include/boost -lpthread -lstdc++ \
-lboost_thread counter.cpp -o counter

こんな感じにコンパイルしたのですが、全てのthreadライブラリ関数において
エラーが出ている模様です。
gccの基本的な使い方が悪いとは思うのですが、どこをどうしたらいいのやら
全く分りません。助けてください。
0383デフォルトの名無しさんNGNG
>>382
error message はどんなのが出とるんじゃい。
-L で boost_thread の場所をし忘れてるだけとかじゃあるまいな。
0384デフォルトの名無しさんNGNG
× 場所をし忘れてる
○ 場所を指定し忘れてる

イッテクル
0385デフォルトの名無しさんNGNG
>>383
Debianなのでlibboost_thread.aは/usr/libの下にあります。
なのでディレクトリ指定は要らないはずです。

エラーメッセ―ジですが、先頭の数行だけ貼らせてください
/tmp/ccvytNoa.o(.text+0xba): In function `main':
: undefined reference to `boost::thread_group::thread_group[in-charge]()'
/tmp/ccvytNoa.o(.text+0xed): In function `main':
: undefined reference to `boost::thread_group::create_thread(boost::function0<void, boost\
::empty_function_policy, boost::empty_function_mixin, std::allocator<boost::function_base\
> > const&)'
/tmp/ccvytNoa.o(.text+0x12e): In function `main':
: undefined reference to `boost::thread_group::join_all()'
/tmp/ccvytNoa.o(.text+0x145): In function `main':
: undefined reference to `boost::thread_group::~thread_group [in-charge]()'
/tmp/ccvytNoa.o(.text+0x162): In function `main':
: undefined reference to `boost::thread_group::~thread_group [in-charge]()'
/tmp/ccvytNoa.o(.text+0x1c8): In function `__static_initialization_and_destruction_0(int,\
int)':
0386デフォルトの名無しさんNGNG
>>385
libboost_thread.aはどこにあったファイルをコピーした?
libs/thread/build/bin/libboost_thread.lib/gcc/release/runtime-link-static/threading-multi
にあった奴をlibにコピーして使うとうまくリンクできて実行できました。
0387デフォルトの名無しさんNGNG
>>386
レスありがとうございます。
えーと、Debianなのでapt-getしたまでです。
Debian/unstableのboostは1.29です。
もしかしたらバイナリの互換性がないg++-3.1で
ビルドされているのかもしれないですね。
それもありえるとは思うのですが、でもgcc3は
3.2に積極的に移行を進めているわけだし
それもなさそうな・・・んー
0388デフォルトの名無しさんNGNG
ビルドはbjamを使ってやったよね。
0389名無しさん@EmacsNGNG
>>388
bjamの使い方が分からないので、DebianやGentooを使っているのですが(藁、
どうしてもリンクエラーが出ます。ともにバージョンはboost-1.29,gcc-3.2
ソースは以下のような極単純なもの。Gentooに関してはgcc-3.2でビルドして
いるので、例のバイナリ互換性の話は関係ないはずです。

/* test1.cpp */
#include<boost/thread/thread.hpp>
boost::thread th;
int main(){}

エラーは以下の通りです。
/usr/bin/g++-3.2 -Wall -I/usr/include/boost -L/usr/lib -static -lboost_thread test1.cpp -o test1
/tmp/ccwtA3Jx.o(.text+0x36): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `boost::thread::thread[in-charge]()'
/tmp/ccwtA3Jx.o(.text+0x65): In function `__tcf_0':
: undefined reference to `boost::thread::~thread [in-charge]()'
collect2: ld はステータス 1 で終了しました
make: *** [test1] エラー 1

もう分からない。。。これ以上はスレ違いなのでよそへ逝きます
0390デフォルトの名無しさんNGNG
>>389
もしかしてビルド時に何か失敗してるかも。

bjamの使い方は簡単です。
http://www.boost.org/tools/build/index.html#Jam
から目的のOSにマッチしたbjamを落とし、実行ディレクトリに入れます。

boostをインストールしたディレクトリをカレントディレクトリにしてから

bjam[enter]

と入力するだけで、gccベースの場合は自動的にコンパイルしてくれます。
0391デフォルトの名無しさんNGNG
(゜∀゜)マジで?
やってみよう!
0392デフォルトの名無しさんNGNG
>>386=388=390
382氏はDebian使ってるってんだからわざわざビルドさせんでも…
という気がする。
0393デフォルトの名無しさんNGNG
Debianって何?俺はWindowsしか知らないのでわからないのだが・・・・

ソースをビルドしなくても使えるの?
0394デフォルトの名無しさんNGNG
>393
Linux のディストリビューションの一つ。

> ソースをビルドしなくても使えるの?
何か激しく勘違いしてると思われ。
0395デフォルトの名無しさんNGNG
>>394
そうなんですか?
>わざわざビルドせんでも・・・
と書いてあったのでてっきりそうなのかと。
0396デフォルトの名無しさんNGNG
>>393
ビルド済みのが自動で落としてインストールできるようにパッケージ化されてんの。
http://packages.debian.org/unstable/devel/libboost-dev.html

ぶっちゃけ、WindowsUpdate みたいなものっつーか。
0397デフォルトの名無しさんNGNG
>>396
それ(・∀・)イイ!!ぜひWindowsにも実装して欲しいものだ。
と言ってもビルドはboostに限って言えば非常に簡単なのだが。
0398デフォルトの名無しさんNGNG
しかし、Debian使ってリンクが通らないという事は、一度bjamでビルドしてリンク
して試される事を強くオススメしたい。

出来るものは同じかもしれないが、もしかしたら違うかもしれないし。
0399デフォルトの名無しさんNGNG
関数の数を無闇に増やしたくないとか、ローカル変数を渡すのが面倒とかいう場合は
GoSub よく使うけど。
GoTo と一緒で、使い様って事でしょ。
0400399NGNG
ごめん、VB スレの誤爆。
0401デフォルトの名無しさんNGNG
GNU的には他のライセンスのヘッダが入ることってどうなの?
gccなんかでもcontribというディレクトリに違うライセンスの
ファイルを嫌そうに入れてあるけど。
0402デフォルトの名無しさんNGNG
>>401
ここで訊くな。
0403デフォルトの名無しさんNGNG
BOOST_NO_EXCEPTIONSのサポートがちゅーとはんぱだねぇage
0404デフォルトの名無しさんNGNG

lexical_cast って、 ワイド文字に対応してないんだね。

wstring str = lexical_cast< wstring >( x ); でコンパイルエラーが出たときは涙でたよ
0405デフォルトの名無しさんNGNG
>404
実のところこのlexical_cast、ver 1.29.0 では wchar_t 系統にに関する対応がさっぱりだったり
lexical_cast<string>("space is included") で例外を投げたりしてしまってよろしくないのですが、
次版ではその辺含めてかなりパワーアップする模様。

ということらしい。(http://www.kmonos.net/alang/boost/classes/lexical_cast.html より)
0406デフォルトの名無しさんNGNG
>>405
つーか標準で

#ifndef USE_WIDE_CHARACTOR
 typedef char char_t
 #define str_t( text ) (text)
#else
 typedef wchar_t char_t
 #define str_t( text ) L(text)
#endif

typedef std::basic_string< char_t > tstring;
typedef std::basic_stringstream< char_t > tstringstream;

とか定義して、

tstring str = str_t("12.4");

とか出来るようにしてほしい。
0407デフォルトの名無しさんNGNG
>>406
んな事したらchar→wcharの変換が…
0408デフォルトの名無しさんNGNG
といってもlexcal_cast.hppはもう一年近く放置されてるよなあ
0409デフォルトの名無しさんNGNG
自分で書いてまえ
0410デフォルトの名無しさんNGNG
string と wstring って相互代入できれば (・∀・)イイ!! のに
0411デフォルトの名無しさんNGNG
C++スレでこのようなものを発見したのだが、これは一体....?

http://pc3.2ch.net/test/read.cgi/tech/1038031395/961
0412デフォルトの名無しさんNGNG
コンパイラのバグじゃないの?
0413デフォルトの名無しさんNGNG
ちょい保守
0414デフォルトの名無しさんNGNG
ほすー
0415デフォルトの名無しさんNGNG
会社での仕事で汚いマクロが作業効率を落していると思って、
BOOST_PP_*の使用を強制させようとしたのだけど、どうも周りから
同意が得られませんでした。みなさんのところはどうですか?
こういうのってみんなで一斉に始めないとダメだと思うのだけど。
0416デフォルトの名無しさんNGNG
まずそのマクロを多用しようとする姿勢を何とかすれ。
0417デフォルトの名無しさんNGNG
まずは enum、const変数とinline関数辺りから始めた方が…
0418デフォルトの名無しさんNGNG
もしかして漏れってそうとうドキュソなところで仕事してる?
0419デフォルトの名無しさんNGNG
もしかしなくても
0420デフォルトの名無しさんNGNG
>418
上がしっかりしてるだけまだマシ。
漏れの所なんて…
0421IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0422デフォルトの名無しさんNGNG
age 
0423デフォルトの名無しさんNGNG
(;´Д`)ハァハァ
0424デフォルトの名無しさんNGNG
ぎゃーIPがとられたー
0425デフォルトの名無しさんNGNG
転送量倍になっても平気なの?
0426デフォルトの名無しさんNGNG
>258
恒久保存なんて無理でしょ。
0427デフォルトの名無しさんNGNG
年賀状来ましたか?
0428デフォルトの名無しさんNGNG
みゆたんにボクチンのIP教えてもいいよ♥
0429IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0430デフォルトの名無しさんNGNG
          l≡l  . l≡l
          |:::└┬┘:::|
          |:::┌┴┐:::|
/ ̄ ̄\   ノ::::::丶 /:::::::\.   / ̄ ̄\
| 記念 .> (::(,,゚Д゚)(゚ー゚*)::) < パピコ .|
\__/   |:∪::::| |::::∪::|.   \__/
       〜((((:::::))(((:::::)))〜
         ∪ ̄U U ̄∪
0431デフォルトの名無しさんNGNG
まあ俺みたいにどうせ2chでうんこうんことかしないよとか書いたり
それ以外の時間は実況板にいる実況厨には無関係な話な訳で
ip?どれだけでも取ったってください
無責任発言を繰り返す馬鹿や殺人予告するど阿呆が減っていいんじゃないっすか?
0432デフォルトの名無しさんNGNG
IPシめる実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバで生意気なIPをシめてやる実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
赤黒い怒張が暴れているということはお尻がおねだりしていることを視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPをシめて何か今までと変わることってあるのでしょうか?
・今までより、肉棒は硬度を増していく。
・裁判所や警察からの舌技があった場合にはサーモンピンクの亀頭が徐々に姿を現すことがある。
0433デフォルトの名無しさんNGNG
>>124
イスラエルのひろゆこ---インドのよしゆき---中国のひろゆこ---北欧のひろゆこ---カナダのひろゆこ---エジプトのひろゆこ
---自宅のひろゆこ
に聞けば一発で分かります。
0434デフォルトの名無しさんNGNG
age  
0435デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0436デフォルトの名無しさんNGNG
マルチ氏ね
0437デフォルトの名無しさんNGNG
開くスレの最後にすべてに書かれてるから
デジャヴか鯖がいかれたのかとオモタヨ...
0438デフォルトの名無しさんNGNG
テストカキコミ
0439デフォルトの名無しさんNGNG
>>595
奇遇だね
0440デフォルトの名無しさんNGNG
>>91 結局ひろゆきがいつの時点で消していれば、賠償責任を逃れられたのでしょうかね?
0441デフォルトの名無しさんNGNG
>>91 結局ひろゆきがいつの時点で消していれば、賠償責任を逃れられたのでしょうかね?
0442デフォルトの名無しさんNGNG
>>93
訴状が来た時点ではまだ削除しなくておkなんじゃないの?
0443デフォルトの名無しさんNGNG
>>443
だからこそ荒らされたわけだよね。
犯人にそれ以上の請求をすべき。
0444デフォルトの名無しさんNGNG
あまりにもくだらねー理由だと何百もでないだろ
0445デフォルトの名無しさんNGNG
>>587
ひろゆきが出てきたらもの凄い勢いで1000まで逝ってしまった・・・。
0446デフォルトの名無しさんNGNG
>>535
http://www.2ch.net/
トップにあるじゃねーか
0447デフォルトの名無しさんNGNG

チャンスですね。。奪還!
0448デフォルトの名無しさんNGNG
   /⌒ヽ 
  /  ´_ゝ`)  IP太郎です。
  |    /   
  | /| |   
  // | |  
 U  .U
0449デフォルトの名無しさんNGNG
age
0450デフォルトの名無しさんNGNG
相手のIP教えていただくには
どういった手続きをとればいいんですかね?
0451デフォルトの名無しさんNGNG
http://teri.2ch.net/entrance/kako/969/969987350.html
こんなコピペ達も怖くて貼れなくなるわけで……。
0452デフォルトの名無しさんNGNG
華麗なうんこレスで引き続きお楽しみください
0453デフォルトの名無しさんNGNG
ぼうやだからさ
0454デフォルトの名無しさんNGNG
暗号化アルゴリズムの一種でしょ
0455デフォルトの名無しさんNGNG

どんなスレでも糞スレの雰囲気を漂わせるからねぇ。
ある意味すげーけど。
0456デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0457デフォルトの名無しさんNGNG
WinnyのBBS機能に期待が広がったりしたりしなかったり。
0458デフォルトの名無しさんNGNG
そもそも管理者が素直に削除してれば良かったんだろ?
会社から削除依頼あったのに、無視してる時点で社会人失格!
2ちゃん失格!
で、今更なにを・・・
0459デフォルトの名無しさんNGNG
確か、一時ID検索サイトがあったよね。
日付とIDを入力すると、IPアドレスの上位3組だか、下位3組だかが
表示されるやつ。
全パターンをデータベース化して持ってたらしいけど、
ヒマなやつもいるもんだと驚愕したものです。
0460デフォルトの名無しさんNGNG
レス付ける人間が法律に違反しなければ
IP取られても問題ないかと・・・
0461デフォルトの名無しさんNGNG
次のバージョンで MPL が正式に取り込まれるっぽいな。
0462デフォルトの名無しさんNGNG
Gurtovoyさんおつかれさまやね
0463デフォルトの名無しさんNGNG
【予告】小学生の登校を狙って・・・
http://live2.2ch.net/test/read.cgi/news/1042035002/

674 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 23:36 ID:1BXnvYvY
通報する人は、IPはあるので管理者に連絡してくれれば、
「捜査関係事項照会書で照会しますよー」って言ってたて伝えてくださいー。

902 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 23:41 ID:1BXnvYvY
>警視庁の情報提供っていうフォームで通報していいですか?

フォームでもよいかと。
通報者の電話番号とかもきちんとかいといたほうが
取り上げられる可能性高いです。
ホントは110のほうがいいんですが、、
0464デフォルトの名無しさんNGNG
2chの解説本が出てました。たわいないです。

http://shopping.yahoo.co.jp/shop?d=jb&id=07107411
-----------------------------

「2ちゃんねるのウラオモテ超入門」

マイウェイムック、143ページ

監修・2ちゃんねる
発行・マイウェイ出版株式会社
発行日・2003年2月20日
値段・1429円
0465デフォルトの名無しさんNGNG
(・∀・)チューボーですよ!
0466デフォルトの名無しさんNGNG
ねぇ、6億超えちゃったんだし
どこで見えるのか教えてちょーだいよ。
0467デフォルトの名無しさんNGNG
778
0468デフォルトの名無しさんNGNG
もらい泣き
0469デフォルトの名無しさんNGNG
荒らしキタ━━━━(゚∀゚)━━━━!!!!!!
0470デフォルトの名無しさんNGNG
>しかし その反証の場が 2ch でなくてはならないというのは ? です。

書き込んだ人間に通知することが合理的に可能な方法としては、
2ch上(削除依頼対象のスレ)でやる以外にないでしょう。

後段はいまいち意味不明。発信者の特定は第三者機関からの要請があってから行えば十分な筈ですが?
0471デフォルトの名無しさんNGNG
なんで書けないのかわからないの!
0472山崎渉NGNG
(^^)
0473デフォルトの名無しさんNGNG
んじゃファーストとセカンドの立場がない
0474デフォルトの名無しさんNGNG
メインのリポジトリからupdate中に寝ちゃった。
起きたらPCサスペンドしてて、表示されてた最後のメッセージ見たら
「接続をリセットされました」。
で、もっかいupdateしようとしたら、
サーバーが落ちてるっぽい。

もしかして漏れのせいでつか?
0475デフォルトの名無しさんNGNG
あーあー
0476デフォルトの名無しさんNGNG
しっかしみなさん変わったコンパイラ使ってるねえ。
今度はCrayC++だってよ。NetBSDの移植みたいに、
こういうのにリソース食われてライブラリの開発が遅れてるんだな。
0477デフォルトの名無しさんNGNG
漏れのコンパイラはネイティブなぬるぽを扱う事ができます
0478デフォルトの名無しさんNGNG
タバンニメイワクヲカケルナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人   Ψ
    / )    <  >__Λ∩
  _/し' //. V*゚д゚)/     
 (_フ彡        / ←>>477
0479デフォルトの名無しさんNGNG
Boost使ってる場合、Boost使ってますよって著作権表示しないと駄目?
0480デフォルトの名無しさんNGNG
http://www.amazon.com/exec/obidos/ASIN/0201734842/
boost/preprocessorのMensonidesさんハケーン
0481474NGNG
漏れのせいじゃなかった。
0482山崎渉NGNG
(^^)
0483デフォルトの名無しさんNGNG
http://www.tietew.jp/cppll/archive/6877
boostのドキュメントの日本語訳に関するプロジェクトが
始まってます。使っているOSやコンパイラの垣根を越えて
共同作業というのもたまにはいいのではないでしょうか。
0484デフォルトの名無しさんNGNG
boost::tokenizerにstd::istream_iteratorをつっこんだコードが、
gcc3.2、bcc5.5ではコンパイル通らないぞ( ゚Д゚)ゴルァ!と思ってたら
VC6で通ってしまった。

世の中わからんもんだなぁ。。。
0485デフォルトの名無しさんNGNG
spirit キタ━━━━(゚∀゚)━━━━ッ!!
0486デフォルトの名無しさんNGNG
spirit.hpp一つしかこないよ
0487デフォルトの名無しさんNGNG
いちおー>>483のプロジェクトに参加してるんだけど、
英語力が激しくなくて巧く訳せん!!鬱だ。

どうでもいいけど、>>483は道化師であるに一票。

ということで、このスレは、今後三日間書き込みがない場合、Boost-jpのグチスレになります。
0488デフォルトの名無しさんNGNG
>>487
似たような書き込みをしてみようかと考えなかったわけじゃないけど、おいらぢゃないよ〜。

・・・まぁ、誰かは知らんが、困ったらあの翻訳者MLででも訊いて、がんばっちくれ。
0489デフォルトの名無しさんNGNG
ワラタ
0490デフォルトの名無しさんNGNG
かくしてグチスレへの道は閉ざされたのであった。チャンチャン
0491デフォルトの名無しさんNGNG
std::auto_ptrの配列版ってBoostにある?
0492デフォルトの名無しさんNGNG
>>491
たしか無い・・・と思った・・・
まぁ auto_ptr コピって
delete => delete []
にするだけでいい・・・んじゃないかな、たぶん・・・
0493デフォルトの名無しさんNGNG
>>492
Boostにすら無いとは・・・。

改造なら、boost::*_ptr/boost::*_array的には、
・auto_arrayに改名
・operator[]を実装

まだある鴨
0494デフォルトの名無しさんNGNG
>>491
「std::auto_ptrの配列版」ならできて、
「std::vector」だとできないことって、なんかある?
0495デフォルトの名無しさんNGNG
>>491
boost::scoped_array ならあるが、代入はできんな。
0496デフォルトの名無しさんNGNG
Jamfileってなぁに?
0497デフォルトの名無しさんNGNG
>>496
MakefileのJam版だと思われ
0498デフォルトの名無しさんNGNG
JamっていうMakeみたいなツールがあるのですか?
聞いたこと無いけど。
0499497NGNG
>>498
http://www.boost.org/tools/build/index.html
ここでも読んどけや
0500497NGNG
間違えたこっちか
http://www.boost.org/tools/build/build_system.htm
0501デフォルトの名無しさんNGNG
>>491
以下で(不格好だが)なんとかなるかも、と思う。

std::auto_ptr<std::vector<int> > p;
...
std::cout << p.get()[1] << std::endl;
0502デフォルトの名無しさんNGNG
>>497
おぉう、素早い。
なるほど、Perforce Jam → Boot.Jam ですな。
なんだかmakeより使えそうなんだけど、日本語の情報はあんまりネェですな。
英語ドキュメントだけでしばらくがんばってみます。
0503デフォルトの名無しさんNGNG
>>501
きゃはは、なんだそりゃ?素直にvector使えって。
0504デフォルトの名無しさんNGNG
>>503
501に言ってもしょうがないだろう。
0505デフォルトの名無しさんNGNG
auto_ptrってコンテナの要素として使えるの?
C++3版に書いてある標準ライブラリの場合は使うための要件を満たさないとあるけど・・・
0506デフォルトの名無しさんNGNG
>>505
残念ながら、使うための要件を満たさない。
0507デフォルトの名無しさんNGNG
じゃあ>>503はただの煽り?
0508デフォルトの名無しさんNGNG
>>507
std::auto_ptr<std::vector<int> >
↑これが「auto_ptrをコンテナの要素に使えるか」と関係あるのか?
0509デフォルトの名無しさんNGNG
ん?それは>>501が言ってることで、
>>503は「素直にvectorを使え」と言ってるから
vectorの要素に使えって意味だと思ったんだけど。
0510デフォルトの名無しさんNGNG
std::auto_ptr<std::vector<int> > を使うぐらいなら、vector<int>をそのまま使えって事だろ。
0511デフォルトの名無しさんNGNG
あ、そういうことか・・・
>>491の「auto_ptrの配列版」ばかりに目が行ってたよ・・・
0512デフォルトの名無しさんNGNG
borland の5.5.1で試しに使ってみたら大量の「インライン展開できませんですた」ワーニングに鬱。
しかも主目的だったuBlasのサンプルプログラムが走らなかった罠。
該当ファイルをincludeする意外に必要な事ってありますか?
0513デフォルトの名無しさんNGNG
>>512
http://www.boost.org/status/cs-win32.html
これ見てコンパイラそのものを検討汁。
0514名無しさんNGNG
boostて、kylix3でもつかえる?
0515デフォルトの名無しさんNGNG
>>514
ボロボロです。
http://216.239.33.100/search?q=cache:hOeO5TxQ0e8C:boost.sourceforge.net/regression-logs/cs-linux.html+Kylix+boost+bind&hl=ja&ie=UTF-8
0516デフォルトの名無しさんNGNG
>513
uBlasのサンプルは"pass"だから逝けると思ったのだけど……
何でだろう……もちっとあがいてみます
0517そういえばNGNG
1.30.0 そろそろじゃない?
0518デフォルトの名無しさんNGNG
>>491
あったにはあったけど。
http://groups.yahoo.com/group/boost/files/auto_array_ptr/
中は自分で確かめれ。
0519面白そNGNG
With a help of boost::dynamic_any::call operation (not yet implemented) it's
possible to use boost::dynamic_any::any instead of Boost.Function. Though
this new solution is less specialized and probably slower then
Boost.Function it has one advantage demonstrated in the example below:


typedef boost::dynamic_any<
  boost::mpl::list<
    boost::dynamic_any::call<void (int &)>,
    boost::dynamic_any::call<void (double &)>
  >
> flexible_function; // 2 in 1!


int main()
{
  flexible_function f;
  f = ++_1; // increment for int and double

  int i = 2;
  f(i); // ++i

  double d = 3;
  f(d); // ++d
}
0520デフォルトの名無しさんNGNG
Boostの日本語化プロジェクトに参加中。
自分が使うためだけに訳すのなら徹底的に手抜きするが、
これはそうはいかない。何人もの人が読むはずだから。
頑張ろう。他にもプロジェクト参加中の方書き込みキボン。
0521デフォルトの名無しさんNGNG
>>520
>>487-488。

つーかさ、俺もプロジェクトは応援はするが、
おしゃべりなら cppll でやれや。
0522デフォルトの名無しさんNGNG
>>521
cppllでは最近BDTの話題がなくなってる。
皆翻訳が大変な事に気づいて必死なんだろう。
Boostjp-devメーリングリストもcvsのアップデート情報
だけです。
0523デフォルトの名無しさんNGNG
>>522
妙な直訳和訳が多いね。参加してないから偉そうなこと言えないけど。
0524デフォルトの名無しさんNGNG
>>523
直訳が一番安全なのですよ。内容をよく把握してないのに変に
意訳すると、意味が変わってしまい大変な事に。
0525デフォルトの名無しさんNGNG
>>524
内容をよく把握してない直訳には今までさんざんひどい目に遭わされたぞ。
カンベンしてくれ。
0526デフォルトの名無しさんNGNG
>>525
文脈によって意味が変わる単語も多いしね。
んで結局、原文の該当個所を調べて(和英翻訳)
辞書を引き直す(英和翻訳)という2度手間になってしまうし。
0527デフォルトの名無しさんNGNG
>>525
それは最悪。訳文が意味不明な上に間違った知識まで植え付けられ、
読まない方がマシだね。
>>526
英語は初歩的な単語ほど文脈によってコロコロ意味が変わるから
ややこしいね。

関係代名詞を何回も使い長々とした文になっている場合は、単語を
取り除いてから機械翻訳に掛け、枠組みを把握した後で隙間を埋め
直すという方法を使っている。

#予想通りこのスレはBoost-jpのグチスレになりました。
0528デフォルトの名無しさんNGNG
そんな面倒なことするなら、
最初から全部自分で訳した方が速い気がするが・・・
0529デフォルトの名無しさんNGNG
英語のまま読めばええやん。
たとえ最良の翻訳でも、所詮は劣化コピー。
0530デフォルトの名無しさんNGNG
>>529
1行目はその通りだが
2行目はそりゃ、文学系の文書に使うセリフだろ
0531デフォルトの名無しさんNGNG
>>529
そりゃそうだが、日本語訳をする事により、英語が苦手でBoost
をあまり使いこなせていない潜在的Boostユーザーが増えるの
ではないかという期待があるからこそ訳が頑張れる。
0532487NGNG
見ないうちに本当にグチスレになっちまいやがった…。。。
0533490NGNG
閉ざされたハズだったのに…
0534デフォルトの名無しさんNGNG
ぬるぽのご加護がありますように。
0535デフォルトの名無しさんNGNG
Boostハソレトハムエンダゼ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>534
0536デフォルトの名無しさんNGNG
保守ついでに独り言。
boost::variant なかなか面白そうだな。
0537デフォルトの名無しさんNGNG
>>529
そんなチミは
哲学・思想書を読むことがあったら
古代ギリシア語やラテン語で読むんだね
0538529ではないしNGNG
俺は翻訳には翻訳の良いところがあると思うけれど、それはそれとして、

>>537
古代ギリシア語やラテン語で書かれた哲学・思想に
興味があるなら、そりゃ当然だろ?
0539デフォルトの名無しさんNGNG
>>536
それは1.30かい?
0540デフォルトの名無しさんNGNG
>>538
チミはどうして古代ギリシア語やラテン語を知る前から、
その哲学や思想に興味をもつことができるんだい?
0541デフォルトの名無しさんNGNG
>>538
しかしBoostのドキュメントが英語で書かれていると言っても、
BoostそのものはC++で書かれているので、別に英語を知らなく
てもよいじゃない?
0542デフォルトの名無しさんNGNG
わざわざこのスレで話す内容かよ・・・<英語云々
0543デフォルトの名無しさんNGNG
Boost-jpを語らずしてBoostを語るなかれ。
0544デフォルトの名無しさんNGNG
>>539
1.31、に入れるかどうか現在MLで投票中なりよ。
boostのyahoo!groupsの置き場にあるので見てみるとよいかと。

>>540
例えば自分の好きな小説のモチーフとして、ダフニスとクロエが使われている
ということを知ってギリシャの古典に興味を持つとか、論理学の勉強をしてて
流れとして触れられたプラトンのイデア論について深く知りたいと思うとか、
あるいはそんな回りくどくなくても、高校生の時分に倫理の授業で知って、でも何でも。
別に「原典の翻訳」を読まなくても、幾らでも興味は持てると思うけど?

>>541
そうそう、同意。ライブラリのドキュメント、なんつーのはその面で、
原文を読むのも(間違いのない)翻訳を読むのも同じ価値があると思う。
だから、速く簡単に読めるようになる和訳が非常にありがたいケースだ。

# それと比べて、哲学だの思想だの文章とは全然毛色が違うだろ、と。
0545デフォルトの名無しさんNGNG
boostを仕事で広く使えるよう、またそのために広く認知されるには
翻訳されたドキュメントが不可欠。何もやっていない香具師が横から
口出すのはウザイ。>529みたいなのを言うのはPC-UNIX系だけかと
思ってたけど、こんなところにもいたか。英語をそのまま読むのが
一番なのは事実として、でもそれでは認知されるのも限界があること
も確かなんだな。
0546デフォルトの名無しさんNGNG
>>544
そんな漠とした興味のところから
すぐにラテン語を勉強しようということになるのかニャ〜
0547デフォルトの名無しさんNGNG
スープを味わうのに何も舌をやけどする必要はない。
0548デフォルトの名無しさんNGNG
>>529みたいなのはどこにでもいる。
この前ソフトウェア板で見た。
0549529NGNG
あー、なんか誰かの気に障るようなことを書いたのかも知れないけど、
あたしゃ>>525-528あたりの流れに対して素朴な感想を述べたまでで、
特にBoostの翻訳プロジェクトに対して言及したわけじゃないよ。

日本語ドキュメントがあること自体は>>545の指摘通り有益なことだし。
0550544NGNG
>>546
そう言われても、実際俺はドイツ語とギリシャ語はそんな流れで
勉強したのでなぁ、と答えるしかないのだが。

つーか、水掛け論にしかならんしboostに関係ないし。。。
0551デフォルトの名無しさんNGNG
>>544
自慢話はこちらでどうぞ。
http://pc.2ch.net/test/read.cgi/prog/1043098718/
0552デフォルトの名無しさんNGNG
勉強したと逝ってるだけで、モノにしたとはいってないから自慢話とは限らない罠
0553デフォルトの名無しさんNGNG
ところで、boost を intel c++ compiler 7.0 で使ってる方
いらっしゃいませんでしょうか?どのくらい使えるんでしょう?
boost の web には icc6@win2k のテーブルしか載ってないのですが…
0554デフォルトの名無しさんNGNG
boostのライセンスはどうでしょうか?
他のライセンスのものとまぜるとどうなるのか、
libpthreadよりも興味があります。
0555デフォルトの名無しさんNGNG
>>554
>>338

// 「どう」という日本語は曖昧すぎて答えづらいので、もっと
// 具体的に書いた方が望む結果を得られる確率が上がります。
0556デフォルトの名無しさんNGNG
Regex++ですけど、\Zが文字列末尾以外の改行の直前でもマッチしませんか?
0557デフォルトの名無しさんNGNG
正規表現とターゲット文字列とマッチフラグは?
0558デフォルトの名無しさんNGNG
このソースです。

#include <iostream>
#include <boost/regex.hpp>

int main()
{
using namespace std;
boost::RegEx r("a\\Z");
cout << (r.Search("a\nb") ? "match" : "not match") << endl;
return 0;
}
0559デフォルトの名無しさんNGNG
ぐおー cvs って -P 付けないと追加されたディレクトリを update して
くれないのかぁっ!!知らなかった・・・
spirit とかいつまで経っても spirit.hpp しか無いからおかしいと思って
いたんだが・・・
スレ違いスマソ
0560デフォルトの名無しさんNGNG
stlpor使ってんだけど
boostコンパイルする場合
必ずiostreamはstlportの方をコンパイルして使う必要があるのですか?
0561デフォルトの名無しさんNGNG
んなこたーない。
0562アシュル ◆adhRKFl5jU NGNG
>>559
おれと同じだw
0563デフォルトの名無しさんNGNG
<<558
バグッポ。
正規表現が"a\\n*"でもマッチしてるし。
Boost-Users行き。
0564デフォルトの名無しさんNGNG
訂正。
"a\\n*$"
0565デフォルトの名無しさんNGNG
boost はどういうところがいいですか? たとえば標準 C++ライブラリにない
便利な機能だとか、ここが優れているとか。
0566デフォルトの名無しさんNGNG
VC6-stlportのメイクファイルはあるけど
vc7+stlportで使ってる場合はどのメイクファイルでコンパイルすればいいの?
0567デフォルトの名無しさんNGNG
>563
げえ、RegExバグ付きかよ。
これから先何を信用すればいいんだ・・・。

ところで、このスレと関係ないけどpcreってどうすかね?
Perlコンパチ正規表現ライブラリだそうで。
日本語使えないっぽいけど。
0568デフォルトの名無しさんNGNG
>>567
pcreは、マルチバイト関連は一応UTF-8にのみ「実験的対応」というステータス
らしい。詳しいことはしらないが
character classにはASCII文字しか指定できなかったり
そもそもUTF-8を使っておきながら、文字分類をUNICODEの定義ではなく
古典的なctype.hによっているため
「一応マルチバイトも意識はしてます」というレベルだと思われ。

apacheは以前はHenry Spencerの版にebcdic対応パッチを当てた
ものを使っていたが、最近はpcreを使ってるみたいね。
0569デフォルトの名無しさんNGNG
oniguruma はどうよ?
前、C++ 関連の ML で見た記憶が。
0570デフォルトの名無しさんNGNG
VC6-stlportのメイクファイルはあるけど
vc7+stlportで使ってる場合はどのメイクファイルでコンパイルすればいいの?
0571デフォルトの名無しさんNGNG
regex++のバグ(疑)、boost-usersに投げられ。
注目。
0572デフォルトの名無しさんNGNG
http://regx.sourceforge.net/
PCREつーと、こんなのがあるんだな。
0573デフォルトの名無しさんNGNG
やっとbeta 1が出た。
http://lists.boost.org/MailArchives/boost/msg44852.php
1.30.0正式版はいつになるんだ・・・?
0574デフォルトの名無しさんNGNG
zipとはいえ、ついに10MB超えたか。
0575デフォルトの名無しさんNGNG
>>573
落として解凍してみたけど、ドキュメントの1.29から変更したファイルだけ
タイムスタンプが変わっているのでありがたい。すぐわかる。

#Boost-jp の訳頑張っています。もうラスト・スパートに突入って感じですね。
0576デフォルトの名無しさんNGNG
ていうか、Boost-jpって需要あるのかなぁ?

ぬ る ぽ。
0577デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>576
0578デフォルトの名無しさんNGNG
ぬ >>576
る  漏れとしてはLet's Boostがあれば十分だ。
ぽ
0579デフォルトの名無しさんNGNG
正直、英語読んでも日本語読んでもよく分からないんで
使うときはソース読んでまつ
0580デフォルトの名無しさんNGNG
Boost-jpあれば、今まで英語のDOCを読むのが嫌でBoostを使う気に
なれなかった日本人が何人か使い出すかもしれない。俺的にはそれで
十分。
0581デフォルトの名無しさんNGNG
  タテケンサク
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>578
0582デフォルトの名無しさんNGNG
bjamがようやっと、うごいたーーーーーー。
俺の環境(windows2000、 vc6)だと
まず、ダウンロードしてきたbjamがうまく動かない。ダメポ。

で、bjamビルドする。attribはコマンドじゃねーよって言われて、ハアァ?。
C\WinNT\System32
をコンパイラ時の環境設定(VCVARS32.BATのパス)に入れる。ていうか、デフォルトで動いてください。
windows2000で使えないかとおもったよ。

ビルドした、bjam使ったら、うまくできました。
めでたし、めでたし。
0583デフォルトの名無しさんNGNG
class c_error : public std::runtime_error
{
public:
    c_error( const std::string& when , int c_errno );
};
void f( const char* name )
{
    if( std::remove( name ) != 0 )
    {
        throw c_error( "remove" , errno );
    }
}

↑のようなコードでは、removeによって設定されたerrnoが、
c_errorのコンストラクタに渡る保証はありますか?
std::string::string(const char*)の実装、引数の評価順によっては、
まちがったerrnoが渡ってしまう可能性があると思ったのですが・・・。

Boostとなにが関係あるかっていうと、boost::filesystem内で
例外を投げるコードがこんな感じになってまして。
0584デフォルトの名無しさんNGNG
http://www.boost.jp/
0585デフォルトの名無しさんNGNG
VC6SP5、StlPortでfilesystemのpath_test.cppがビルドできないよー。

リンク中...
path_test.cpp.obj : error LNK2001: 外部シンボル ""public: __thiscall boost::filesystem::path::path(class _STL::basic_string<char,class _STL::char_traits<char>,class _STL::allocator<char> > const &)"
(??0path@filesystem@boost@@QAE@ABV?$basic_string@DV?$c
har_traits@D@_STL@@V?$allocator@D@2@@_STL@@@Z)" は未解決です
っていう、エラーが9つでる。
ちなみにライブラリ(マルチスレッド、スタティックリンク版だと思う、、、、)をいれないと、
エラーが25個くらいでるでつ、まーあたりまえといえばあたりまえだが。


あと、レッツブーストのページのソースをビルドするとこんなエラーが、、、
error C2504: 'basic_ofstream<char,class _STL::char_traits<char> >' : 定義されていない基本クラスが宣言されています。
    コンパイルされたクラスのテンプレートのインスタンス化 'boost::filesystem::basic_ofstream<char,class _STL::char_traits<char> >' の参照を確認してください
error C2678: 二項演算子 '<<' : 型 'class boost::filesystem::basic_ofstream<char,class _STL::char_traits<char> >' の
左オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
error C2039: 'close' : 'basic_ofstream<char,class _STL::char_traits<char> >' のメンバではありません。
cl.exe の実行エラー

filesystem_2.exe - エラー 3、警告 0

なんでーーーー?
0586デフォルトの名無しさんNGNG
>>585
ドキュメントを見る限り、filesystem::fstream は VC6では
はねられるように読めるが。
0587デフォルトの名無しさんNGNG
>>586
thx。確かに使えないと書いてあるっぽい。

でも、
__thiscall boost::filesystem::path::leaf(void)const " (?leaf@path@filesystem@boost@@QBE?AV?$basic_string@D
V?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@XZ)" は未解決です
って、 boost::filesystem::path とか、他のでもでるんですよね、、、

で、bjam悪いのかと思って、VC6でビルドしてみる。filesystemを除いてビルドしてみる。
stlport使わないでビルドしたライブラリ使ったら、リンクエラー。
exeのほうもstlport使用しないようにしたら途中でアボン(まぁ当たり前かな?)。
で、stlport使用でビルドしてみる。キターーーーー、うまくいったよーーーーー。やたーーー。

ちなみにstdafx.cppにソースをインクルードしてみましたが、これでよろしいのでしょうか?
他に、makefile使わないで作成する方法とかありますでしょうか?。
0588デフォルトの名無しさんNGNG
>>583
規格を読んでくとstd::allocatorがerrnoを変えない保証とかが
実はあったりするのかもしれんが、確かにぱっと見まずそうだな。
boostのMLに投げてみたら?
0589583NGNG
>>588
「boostのMLに投げる」って簡単?
Boostのサイトからいろいろ辿ってみたら、
結構めんどくさそうでしたが。
基本的に英語の読み書きがメンドクセェってのが多分にありますがね。
0590デフォルトの名無しさんNGNG
1.30のリリースの予定はもう決まっていますか?
0591デフォルトの名無しさんNGNG
boostって遅いって聞きますが、実行時の速度重視なゲームプログラミングでも
十分実用的に使えますか?
使っている人ってどのくらいいますか?
大丈夫ならこれを機に移行してみたいのですが。
0592デフォルトの名無しさんNGNG
いみがわからん
0593デフォルトの名無しさんNGNG
>boostって遅いって聞きますが
え?マジですか?
0594デフォルトの名無しさんNGNG
ゲームのコアルーチンでlambdaとか使ったら遅そう。
0595デフォルトの名無しさんNGNG
>>591
何を基準に速いとか遅いとか言ってるのかわからんが、
専用に作った物の方が汎用の物よりは速いと考えるの
が一般的だろう。

ヘタレの作った専用ルーチン vs 大ベテランの作った汎用ルーチン
だと、良い勝負だろうけど。
0596デフォルトの名無しさんNGNG
コンパイルは遅いよね
0597デフォルトの名無しさんNGNG
速度重視なゲームプログラミングっつても、
ゲームにはファミコンレベルからPS2レベルまであるわけだし、
Pentium 90Mhzぐらいでも速いといわれていた時期もあるわけだし、
boostと専用のものとじゃ100Mhzも処理速度の違いなんて無いだろうし、
そんな適当な説明じゃ実用的かどうかなんて判断できません。
0598デフォルトの名無しさんNGNG
あとエラーメッセージはわけ分からんね
それから正直、プリプロセッサーメタプログラミングは
別にコジェネ書いた方が楽だね
0599デフォルトの名無しさんNGNG
正直、boostは俺以外使わないでほしい

みんなが使うと俺の優位性がぐらつくだろうが!!
0600デフォルトの名無しさんNGNG
>>599
ワラタ

ついでに600ゲト
0601デフォルトの名無しさんNGNG
boost 1.30.0 age
0602デフォルトの名無しさんNGNG
キタ━━━━━(゚∀゚)━━━━━!!
0603デフォルトの名無しさんNGNG
boostはshared_ptrしか使ってないのですが、もうちょっと使えるように
なりたいので、勉強してみます。
次に何を使うといいでつか?
0604デフォルトの名無しさんNGNG
scoped_ptr
noncopyable
bind
any

この辺か?
0605デフォルトの名無しさんNGNG
>>603
lambda
0606デフォルトの名無しさんNGNG
オィオィ、普通に考えたら spirit 辺りが妥当だろ
0607デフォルトの名無しさんNGNG
何を作ってるかにもよるが、数値計算な俺的には uBLAS に一票。
0608デフォルトの名無しさんNGNG
C++使いは手当たり次第に外部ライブラリ試している暇があったら
一度は費用対効果というものを真剣に考えてみる必要がある。
習得コストや可読性を考えるとほとんどの開発者が
コストを回収しきれていないのが現実。
そのコストを貴重な休日で穴埋めしたいならそれでもいいけどさ。
0609デフォルトの名無しさんNGNG
げげっ1.30がリリースされてる。
Boost-jpやり直しか?今タイムスタンプをチェックしてる。
結構変わってるね。
0610デフォルトの名無しさんNGNG
>>603
次は MPL だろ。どー考えても。

>>608
仕事では使ってないよん。あくまで趣味。
っつーか仕事は VC++6.0 なので・・・
0611デフォルトの名無しさんNGNG
VC++6.0 で lambda を使うにはどうしたらいいですか?
0612デフォルトの名無しさんNGNG
すまないけど、次期lexical_castに関する情報へのリンク等を教えてもらえない?
英語が良くわからないので検索してもサッパリ。
0613デフォルトの名無しさんNGNG
ここでlambdaとかcompile timeとか騒いでる奴は、一度MLやってみて欲シイ。
素質アリダヨ。
MLつってもメーリングリストじゃないよ。Meta Language。
0614デフォルトの名無しさんNGNG
ステップ実行し、変数ウォッチすればわかる。
0615デフォルトの名無しさんNGNG
namespace fs = boost::filesystem;
fs::directory_iterator end;
fs::directory_iterator it(fs::current_path());
while(it != end)
{
 std::cout << ".";
 ++it; // ←ココ
}
VC6、マルチスレッドでコンパイルすると ++it が
処理を返さなくなるけど、これは仕様ですか?

>585
VC6でfilesystem::fstreamを使うなら、
 std::basic_ofstream<char, std::char_traits<char> >();
を最初に挿入しとくと通るよ。
0616デフォルトの名無しさんNGNG
>>612
ほれ。
ttp://groups.yahoo.com/group/boost/files/lexical_cast_proposition/
あと、何気に 1.30.0 の lexical_cast がバージョンアップして、ワイド文字対応になった。
0617デフォルトの名無しさんNGNG
>>613
Boost使いには意外と関数型言語使いが混じってるんじゃないかと思う。
私はHaskell知ってからBoost知ったクチだし。
0618デフォルトの名無しさんNGNG
>>616
マジThx!

つーか1.30になってからlexical_castのドキュメント変わってるとマズイことに。
何故かは秘密♥
0619デフォルトの名無しさんNGNG
1.30にしたら
#define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
しないとエラーが出るようになった。VC7。どうして?
0620デフォルトの名無しさんNGNG
>>619
しくじったそうだ。↓のメッセージを追え。
http://lists.boost.org/MailArchives/boost/msg45656.php
0621デフォルトの名無しさんNGNG
>>615
THX !! あらかじめ、インスタンスを生成しとくのね!?

グローバルで定義したり、boostの中に書いてみたり、使用クラスのなかで宣言してみたり
typedefしたり、うまくいかないでガセか?と、おもったけど、使用する関数で宣言すれば通るのね。
0622デフォルトの名無しさんNGNG
date_time入れて、便利そうだから、greg_day_of_week使おうと思ったら
使えない。。
よく見ると、ドキュメントに記述があるのに、ヘッダファイルには痕跡がないし。

後、pathも使おうと思ってたのに、path::path()からして動かない。
vc6のせい?

ドキュメントに使用が書いてあるのに、実際には、まだ開発中って
珍しくないこと?
0623デフォルトの名無しさんNGNG
コンパイルした?
0624デフォルトの名無しさんNGNG
>>622
した。
0625デフォルトの名無しさんNGNG
続き。
コンパイルして、libファイル作って、
リンクもさせているはずなのに。
リンクのさせ方が変なのかなあ?
vc6+sp5です。

ちょっと出ていました。すみません。
0626デフォルトの名無しさんNGNG
「使えない」とか「動かない」とかしか言わないってことは、
エラーメッセージは出ないのに、実行してみると動作しないってことだよな?
0627デフォルトの名無しさんNGNG
説明不足で申し訳ないです。

greg_day_of_weekは宣言されていないというエラー、
pathに関してはリンカエラーが出ます。
0628デフォルトの名無しさんNGNG
>>627
boost::gregorian::greg_weekday

pathのほうは、リンクのさせ方が変なんだろうな。
依然としてエラーの内容はわからんがな。

質問するなら、エラーメッセージをそのまま貼り付けるのがベストだ。
0629デフォルトの名無しさんNGNG
vc6,sp5,windows_sdk_coreアップ済みのヘッダー使用ですが、
boost::filesytem系は動いてますよ。
bjamで作ったlibはリンクエラーでまくったので、自分でlib作成しましたが。

stlportのiostream使ってるかどうかで、リンクエラーでたりするのがうざい。
regex++みたいに、自動でライブラリやdllをいっぱい作成して、コンパイル時に適当なlibwo
選んでくれるようにデフォルトでならないかな・・・。
0630デフォルトの名無しさんNGNG
>>628
greg_weekdayなんですか。
気づかなかった。。。
書き直したら全部うまくいくようになりました。有り難う。


filesystemの方は、

test.cpp

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>

string pathName = (LPCSTR)GetDocument()->GetPathName(); // データファイルのパス
for ( size_t i = 0; i != pathName.size(); i++ ) {
if ( pathName[ i ] == '\\' ) pathName[ i ] = '/';
}
boost::filesystem::path dataPath( pathName );

というソースで、
0631デフォルトの名無しさんNGNG

test.obj : error LNK2001: 外部シンボル
""public: __thiscall boost::filesystem::path::path(class _STL::basic_string<char,class _STL::char_traits<char>,class _STL::allocator<char> > const &)"
(??0path@filesystem@boost@@QAE@ABV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@@Z)" は未解決です

なんていうリンクエラー。

629さんの言うように、libを自分で作らないと行けないのかなあ。

環境は、VC6+sp5+stlport4.5.3で、STLportのiostreamを使用。

bjam "-sTOOLS=msvc-stlport" "-sBUILD=debug release <runtime-link>static/dynamic <stlport-iostream>on"

でやってみて、生成物を[プロジェクト]→[設定]の
[リンク]→[オブジェクト/ライブラリモジュール],[追加ライブラリのパス]
で呼ぶようにしてるんだけど。。
0632629NGNG
俺もbjamで作成したら、それと同じエラー出たよ。
でも自分でlib作成したらでなくなったけどね。

ところで、stdafx.hを使うプロジェクトでlib作成するときってさ、
stdafx.cpp に boost のソース を#include <boost/filesystem.cpp>とかしても問題ないのかしら?

(と、昔書いたが放置、、むしろ、VCスレで聞け?)
0633デフォルトの名無しさんNGNG
>>631
それって、ライブラリのビルドのときにSTLport使われてんの?
0634デフォルトの名無しさんNGNG
>>633

if "%OS%" == "Windows_NT" set PATH=%MSDevDir%\BIN;%MSVCDir%\BIN;%VSCommonDir%\TOOLS\%VcOsDir%;%VSCommonDir%\TOOLS;%PATH%
if "%OS%" == "" set PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";"%windir%\SYSTEM";"%PATH%"
set INCLUDE=%MSVCDir%\Include\stlport;%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%
set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%

set VcOsDir=
set VSCommonDir=

set STLPORT_PATH=%MSVCDir%\Include\stlport;

というように環境変数を設定した後に、

bjam "-sTOOLS=msvc-stlport" "-sBUILD=debug release <runtime-link>static/dynamic <stlport-iostream>on"

とやれば、使われるはずだと思っているのですが。

>>632
有り難うございます。
pathもサンプルプログラム(MFC/SDIを使用)ではうまく動作するようになりました。
まだメインの方ではうまく動きませんが(リンクはできるけど、実行時エラーが出る)、
そっちは別の問題のような気がするので、後で見てみます。

>ところで、stdafx.hを使うプロジェクトでlib作成するときってさ、
>stdafx.cpp に boost のソース を#include <boost/filesystem.cpp>とかしても問題ないのかしら?
Win32 Static Libraryでlibを作ったので、何とも。
0635デフォルトの名無しさんNGNG
>>634
それじゃだめだとおもう。

↓ tools/build/msvc-stlport-tools.jam から引用
"Set STLPORT_PATH to point to the directory _above_ the STLport directory."

というわけで、VCにインストールしたパスじゃなくて、
STLportのパッケージを展開したパスの一つ上を指定するらしいぞ。

指定の方法は他にも何種類かあるみたいだから、
tools/build/msvc-stlport-tools.html も見といたらいいと思う。

sageでやる話でもないのでageとこう。
0636デフォルトの名無しさんNGNG
634じゃないけど

>>635
煽るわけじゃないが、それでうまくいくの?
stlportのひとつうえ指定したら、stlportのディレクトリ名変更してたら探せないようなきがするんだが、、、、
ひょっとして、バージョン情報ついたディレクトリ名を変更したらいけないのかな?

明日余裕あったら試してみるかな、、、
0637635NGNG
>>635で引用した文の直後にこの文(↓)が続いてる。
"This assumes that you didn't rename the STLport folder and allows for automatic selection of multiple STLport versions."

端折るくらいなら引用しない方が良かったかもな。

というわけで、引用などあてにしてないで、自分で読めってこった。
0638デフォルトの名無しさんNGNG
boost使いを、ブースターと呼ぶ
0639VC6 + STLPortNGNG
#include <string>
#include <boost/lexical_cast.hpp>

using namespace std;

int main()
{
using boost::lexical_cast;

string str_thousand = "1000";
int int_ninety = 90;

inta = lexical_cast<int>( str_thousand );
strings = lexical_cast<string>( int_ninety );

return 0;
}
0640VC6 + STLPortNGNG
E:\TMP_PROJECT\stlport\main.cpp(13) : error C2062: 型 'int' は不要です。
E:\TMP_PROJECT\stlport\main.cpp(14) : error C2275: 'string' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
d:\vs6\vc98\include\xstring(612) : 'string' の宣言を確認してください。
cl.exe の実行エラー


って出るんですけど、何が悪いんでしょうか?
0641デフォルトの名無しさんNGNG
>>639
lexical_castの前にboost::をつけるか
using namespace boost;

をつけてみたら?
0642VC6 + STLPortNGNG
>>641
warning C4800 が出ましたが無事動作しました。

これは面白いですねぇ・・・仕事でも使いてぇ〜(w

0643デフォルトの名無しさんNGNG
>>642
上司説得しようぜ。

うちの場合、「便利なものあるんならどんどん使っていいんじゃないの?無料なら。」
といわれたので、使っておりますー。
0644デフォルトの名無しさんNGNG
>>642
C4800って非bool値をbool型の変数に代入しようとした時に出る
んじゃないの?まだ怪しい部分が残っているような・・・・業務では
使わない方が吉。
0645デフォルトの名無しさんNGNG
ちなみにBCCやgccではそんな警告は出ないから、VC6の問題であると
思われる。VC6に対応させるためのworkingaroundが随所に見られ、
その当たりにバグが残っているかもしれない。
0646デフォルトの名無しさんNGNG
>>643
うちは「フリーのやつは、バグがあった場合の責任問題が云々」という理由で却下されますた。
0647デフォルトの名無しさんNGNG
>>646
実際どうなんだろ。
VCのバグのほうは事実上どうにもならないが(大金払えば別だろうが)
フリーのSTLPortとかなら対処可能だよね
直すという結果が重要ではなく、責任をなすりつけるのが目的だとしても
MSは使用許諾で免責しまくりだよねえ・・
0648デフォルトの名無しさんNGNG
やっぱ bjamで作ったlibを vc6.0 sp5 stlport で使用できない・・・。

だれかうまくいった人、環境設定とコマンドの例をおしえてください。
bjam使うなってことですかね?
0649デフォルトの名無しさんNGNG
>>648
んなこたぁ〜ない。
0650VC6 + STLPortNGNG
うっ・・・・

>>639のコードを>>641修正済みでVC7+STLPort
でビルドしたらエラー

d:\VS.NET\Vc7\boost\boost\lexical_cast.hpp(45): error C2039: 'bad_cast' : '_STL' のメンバではありません。

ううむ・・・
0651デフォルトの名無しさんNGNG
>>650
#include <exception>//例外のクラス?

ていうかstlportへパス通ってる?
0652VC6 + STLPortNGNG
パスは通ってます。include と lib
0653デフォルトの名無しさんNGNG
>>651
bad_cast は <typeinfo>
0654デフォルトの名無しさんNGNG
>>647
問題の原因を拡散させないのが大事なんじゃないかと。
だれもMSに責任を取ってもらおうなどとは考えてないよね。
まあ次のVC++でメジャーなテンプレートライブラリに
かなり対応する予定だとか。たのしみですけど。
0655VC6 + STLPortNGNG
http://www.kmonos.net/alang/boost/

ちなみにこのサイトのソースを試してみてるだけですので・・・

>>653 thx
0656デフォルトの名無しさんNGNG
>>649
ライブラリ・リンクさせるの忘れてた。
0657デフォルトの名無しさんNGNG
Boost-jpプロジェクト第一弾が発表されました。
1.29と1.30に分かれており、どちらもまだβ版で、まだ未訳のドキュメント
もかなり含みますが、興味のある方はぜひ一度目を通してください。
ttp://sourceforge.jp/frs/index.php?group_id=428&release_id=2954

もし気が付かれた事がありましたら、ぜひ
ttp://sourceforge.jp/projects/boostjp/lists/
Boost-jpメーリングリストにご意見ご批判を流して下さい。
0658デフォルトの名無しさんNGNG
>もし気が付かれた事がありましたら、ぜひ
>ttp://sourceforge.jp/projects/boostjp/lists/
>Boost-jpメーリングリストにご意見ご批判を流して下さい。

このメーリングリストは翻訳者専用だそうですので、別にご意見ご批判
投稿用の場所を設けます。
0659デフォルトの名無しさんNGNG
cppll@したらばがあります。
http://jbbs.shitaraba.com/computer/5651/
この中当たりはどうでしょうか?
0660デフォルトの名無しさんNGNG
boostのコンパイルを速くするにはどうしたらいいですか?
VC++ならpchが効くんでとっても快適なコンパイルができるんですが、
gccだとふざけたほど時間がかかって困ってます。
ccacheもあんまり効果無いし。
0661デフォルトの名無しさんNGNG
>>660
・速いマシンを買う。
・cvsからcurrent(3.4)を取ってきてpchのテスターになる。
(gcc/gcc/c-pch.c,cpppch.cあたりか?頑張って!)
0662デフォルトの名無しさんNGNG
あ、こんなところに宣伝が。
フィードバックほしいです、はい。
ソースフォルゲのバグトラッキング(要メールアドレス)か、
cppll-bbs@したらば(まあ匿名)でお願いします。
別に、原文と照らし合わせてくれ〜、とまでは言わん。
変な日本語とか、意味がわからないところとか、指摘していただけたら幸い。
むしろ、原文でも意味がわからんところもあったりするががが。
0663デフォルトの名無しさんNGNG
そういえば、boost::poolが使えるかどうか実験してみたんだけど
10000回くらいmalloc,free 繰り返したらがはっきりと差が出てくるね。
お手軽に使いたい場合ちょこっと便利かも。

ただそんなに大量に細かいオブジェクトを生成破棄する機会がいまのところないんだけどね、俺の場合。
0664デフォルトの名無しさんNGNG
>>663
何と何を比べてどう差が出るのでつか?
0665デフォルトの名無しさんNGNG
boost::poolってstd::list等のコンテナのメモリアロケータにも使えるのですか?
1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、
速くなりますかね?
0666デフォルトの名無しさんNGNG
>>665
ベンチマーク取ってみればいいじゃん。
0667デフォルトの名無しさんNGNG
>>666
使えるかどうかとどのように使うのかを聞いてるんですが…
0668デフォルトの名無しさんNGNG
>>664
普通のmallocとかnewとかを生成、破棄するのに比べて速い。

>>665
日本語ドキュメントにはstd::vectorとかコンテナでも使えるみないなことかいてあったよ。
ただ、普通に使うのとちがってプログラム終了するまえにsingletonオブジェクトから
明示的に開放しないといけないっぽいらしいけど。
読んでみたら?
0669デフォルトの名無しさんNGNG
>1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、
既に設計がおかしい様な・・・
0670デフォルトの名無しさんNGNG
>>665
どんなゲーム内容だよ、それ
シューティングか?
0671デフォルトの名無しさんNGNG
こんなのとか?
ttp://homepage3.nifty.com/arika_download_02/mpeg/ddd002_1.mpg
・・・つーても、

> 1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、

これが必要とは思えないが・・・。
0672デフォルトの名無しさんNGNG
boost::poolとstd::mallocでdouble型のインスタンスを500000回生成して
速度を比較してみたよ。

malloc = 2231874
boost::pool = 1371511

short型でもやってみた。

malloc = 2181766
boost::pool = 1132248

コンスタントに2倍程度の速度が出ている。
0673デフォルトの名無しさんNGNG
>>671
(((( ;゚Д゚))) ガクガクブルブル
0674デフォルトの名無しさんNGNG
>>671
こんなのできるやついるんだな_| ̄|○
ライフ制をなの発見して、ちょっと安心( ´∀`)

将来、戦闘機が遠隔操作とかになったら、エリートになれそうだな。
まぁ、今はただのオタだが…。

>>672
GJ!!
0675デフォルトの名無しさんNGNG
>>672
・・・この結果ならそんなにつかう必要性を感じないなぁ
0676デフォルトの名無しさんNGNG
つーかそんなベンチやっても差はあんまり開かんだろ。
実際の運用を想定してmallocの方をある程度断片化させないと。
0677デフォルトの名無しさんNGNG
>>675
boost::poolのコンストラクタにいちいちサイズを指定しなければ
いけないのが面倒。

boost::pool<> pl(sizeof(double));

こんな感じ。
サイズを固定化して速度をあげているような気がする。もちろん
テンプレートパラメータに型を指定すればサイズの指定は必要
ないが、doubleやintのような基本型を指定するとエラーになる
のが問題だ。
0678デフォルトの名無しさんNGNG
>>677
用途判ってないだろ
0679デフォルトの名無しさんNGNG
>>672
環境は?
mallocの実装がしょぼい環境でこそ、威力を発揮するだろうからな。
最近のOSなら、boost::pool相当のことはOS内部で既にやってある可能性もある。
0680デフォルトの名無しさんNGNG
>最近のOSなら、boost::pool相当のことはOS内部で既にやってある可能性もある。
更に言うと、malloc内部でも同じ事をやっている可能性があって
boost::poolを使うと3重に無駄なことをしていると言うことにもなりかねない
0681676NGNG
つーかね、バウンダリに収まるオブジェクトでテストしても効果無い。
断片化させた上で、16byte以上のオブジェクトで試せ。
0682デフォルトの名無しさんNGNG
>>677>>679-680
F1見ながら釣りですか?
0683デフォルトの名無しさんNGNG
>1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、

どんなん作ってんねん。1/60秒ってことはゲームなのだろうが、
たとえ弾幕シューでもそんな激しい頻度にはならないっしょ。
0684デフォルトの名無しさんNGNG
「1/60秒」って言葉を使いたかっただけかと(藁
0685デフォルトの名無しさんNGNG
ピクセル毎にオブジェクトで管理
0686デフォルトの名無しさんNGNG
パーティクルアニメーションとか
0687デフォルトの名無しさんNGNG
パーティクルならありそうだ

でも、作り方を見直したらboost::poolに変えるよりも数倍は早くなりそう
0688デフォルトの名無しさんNGNG
VC7+STLport(iostreamビルド済み)で使ってるんですが
今度Boost::regexを利用しようと思うんですが、
makefileはvc6-stlport.makとvc7.makと有るんですが
STLport使いつつBoost使いたいのですが
どのメイクファイルでコンパイルすればいいのでしょうか?
0689デフォルトの名無しさんNGNG
>>688
「ですが」 多すぎ
0690デフォルトの名無しさんNGNG
>>688
まるちー
0691デフォルトの名無しさんNGNG
VC7+STLport(iostreamビルド済み)で使ってるんまるちー
今度Boost::regexを利用しようと思うんまるちー、
makefileはvc6-stlport.makとvc7.makと有るんまるちー
STLport使いつつBoost使いたいのまるちー
どのメイクファイルでコンパイルすればいいのでしょうかまるちー?
0692デフォルトの名無しさんNGNG
エロゲーヲタはカエレ!
0693デフォルトの名無しさんNGNG
おまいら面白いな
0694デフォルトの名無しさんNGNG
>>691
にょ
0695デフォルトの名無しさんNGNG
VC7+STLport(iostreamビルド済み)で使ってるんだにょ
今度Boost::regexを利用しようと思うんだにょ、
makefileはvc6-stlport.makとvc7.makと有るんだにょ
STLport使いつつBoost使いたいにょ
どのメイクファイルでコンパイルすればいいのでしょうかにょお?

----
g++ 3.2.2 使ってるんだけど、STLport 入れた方がイイ?
0696デフォルトの名無しさんNGNG
vc6 に stlport いれたら loki のSmartPtrコンパイルできんかった。
0697デフォルトの名無しさんNGNG
         __ , ────── 、__
      , - ':::::::::::::::::::::::::::::::::::::::::::::::::::\
     / ;;;;;;;:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;\
    /,,;,,,,,  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ,,,,,,,,;::::::丶
   / :::::::::;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;:::::::::::::::::::ヽ
   i゙:::;:::::||::::::,!i:::::::::::,|i::::::::::::::::::;:::::::::::::::::::::::::::::::゙i
  i゙::::|;;;;| |;;;;;| |::::::::::| |:::::::::::::::::||::::::::::::::::::::::::::::::::|
 . i゙::::::i     ''''''''''' '───' |;;;;;;;;;;;;::::::::::::::::::::|
  .|:::::::|,-====-´  ゙ヽ,,,,,,,,,,,,,、    |:::::::::::::::::::|
  |;::::::::|,-──、    ~,.--`‐、    |:::::::::::::::::::|
  `ヽ、i     )__r'´    )__|;::::::::::::::/  
  .  ヽ、__、/<    ヽ、__、-    /^゙-、;;;;/     >>691おもろないよ
     {     ' '          '-'~ノ
    λ   ____        /-'^"
     ヽ,_  `ー─''´       (
     /`''丶、     , -    /^l
    /  /( ノ `'''''''´~ _, - ' ~ ゙i、
    { / /| ̄ ̄ ̄ ̄   _,-'^¨ }
    {/ /  ゙ー────'~   \|
    /               ヽ  \
0698デフォルトの名無しさんNGNG
>>697
それだけを言うために、AAなんかはってんじゃねーよ、糞ボケがーー。
0699デフォルトの名無しさんNGNG
>>698 ( ´,_ゝ`)プッ
0700デフォルトの名無しさんNGNG
火垂るの墓の節子?
0701デフォルトの名無しさんNGNG
C++とjavaではドッチが偉いの?
0702デフォルトの名無しさんNGNG
>>701
C++
0703デフォルトの名無しさんNGNG
つーかそんなネタに反応するなよ>702
0704702NGNG
>>703
ごめん、他人の糞ネタを一番つまらない方法でさっさと消費するのが
最近のマイブームなんだ。
0705デフォルトの名無しさんNGNG
言い訳レスもいらん。702はゴミ。
0706702NGNG
という放置できない厨のせいで駄レスがさらに増えるのであった(w
0707デフォルトの名無しさんNGNG
と鏡を見ながら発言する>>702
0708デフォルトの名無しさんNGNG
なんなの・・・この駄レス・・・
0709702NGNG
>>708
困ったもんだよねw
0710デフォルトの名無しさんNGNG
もうどうでもいいからやめろ。 しつこすぎる。
0711702NGNG
>>710
いやー、そういうこと書いちゃ終わるもんも終わらないでしょーw
0712702NGNG
まったく馬鹿ばかりだ。 俺は悪くないぞ。
0713702NGNG
俺も全然悪くないぞ。
0714702NGNG
だれか、俺にかまってくれよ〜
0715デフォルトの名無しさんNGNG
C#
0716デフォルトの名無しさんNGNG
ttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BOOST_WIKI

こんなのあるんだねぇ。ガイシュツだったらスマソ
0717デフォルトの名無しさんNGNG
>>716
既出もなにも、boost.org のトップページからリンク張ってあるしなぁ。
0718vnsNGNG
boostを初めてインストールして適当なものを書いてみようとしたのですが
#include "stdafx.h"
#include<string.h>
#include<vector>
#include<algorithm>
#include<mbstring.h>
using namespace std;
#include <boost/regex.hpp>
の状態でstrlen,strcatなどを呼ぶと
error C2668: 'strlen' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
がでてしまいます。
回避方法ご存じの方教えてください。VC++6sp5です。
0719デフォルトの名無しさんNGNG
#include<string.h>
   ↓
#include<string>
0720ヽ(´ー`)ノNGNG
strlen, strcat を使うのなら cstring じゃないのかと小一時間。
ていうか boost 関係ないやん…(;´Д`)
0721デフォルトの名無しさんNGNG
ところで、boost::regexのライブラリ名で'i'ついているやつありますよね?
例:boost_regex_vc6-stlport_mdi.dll
                   ↑これ

このiってdynamicとdebugの'd'がならんでついてると気持ち悪いから
dyの発音からdとってiなんですかね?

それとも別な意味あるんですかね?
0722山崎渉NGNG
(^^)
0723山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0724デフォルトの名無しさんNGNG
保
 守
0725デフォルトの名無しさんNGNG
>>721
iはcase-insensitiveのi。
0726デフォルトの名無しさんNGNG
>>725
信じていいですか?じゃー、ここがsの時はsensitiveかな?
0727デフォルトの名無しさんNGNG
AGE
0728デフォルトの名無しさんNGNG
boost::weak_ptr の仕様が1.3.0から変わってうかつにコンテナにいれたら泣くとか、
boost::filesystem をはじめとしてダブルバイト文字対応が弱くて泣くとか、
泣き言っても良いですか age

0729デフォルトの名無しさんNGNG
>boost::weak_ptr の仕様が1.3.0から変わってうかつにコンテナにいれたら泣く、
まじっすか?どうなるんですか?
つーかいまのところ、コンテナにweak_ptrいれてないから安心だ。
0730デフォルトの名無しさんNGNG
boost::thread_groupの実装にstd::listが使ってあって、
挿入・削除のときにstd::find(begin(),end(),...)してあるんだけど、
std::setを使わないのはなんでだろう?
0731 ◆hMJAPH9PWA NGNG
BCC5.5だとboost/integer.hppのboost::uint_value_t<Max>がMaxに関係なくunsigned longになってしまう…。
g++だと思ったとおりになるから、バグかな。

using boost::uint_value_t;
std::cout << sizeof(uint_value_t<1>::fast) << std::endl;
std::cout << sizeof(uint_value_t<300>::fast) << std::endl;
std::cout << sizeof(uint_value_t<30000>::fast) << std::endl;
std::cout << sizeof(uint_value_t<60000>::fast) << std::endl;
//std::cout << sizeof(uint_value_t<100000>::fast) << std::endl; // BCCだとコンパイルすら通らない
0732デフォルトの名無しさんNGNG
>>729
1.30.0 の weak_ptr には比較演算子が operator< しかないから、
weak_ptr のコンテナに対して、std::find や std::remove などの
汎用アルゴリズムを専用ファンクタなしに呼び出すとコンパイルエラー

つーか、weak_ptr は operator->() も operator*() も無いんだから、
weak_ptr という名前はやめたほうが良いんじゃないかとも思う。
0733729NGNG
>>732
ありがとん。

まぁ確かにlockしたり、shared_ptrにわたしたりすんのめんどくさいかも。
0734デフォルトの名無しさんNGNG
結局、boostは商用のクローズドなプログラムに利用可能なんでしょうか?
過去ログ見たんですが、結論出ていないっぽいですよね…
可能ならバイト先のコードに使いたいんですが、皆さん商用プロダクトで使った
りしてますか?実際のところどうなのでしょう?
0735デフォルトの名無しさんNGNG
漏れも使ってるんで大丈夫です。バイトだけど。
0736デフォルトの名無しさんNGNG
>>735
おまえがルールブックか!
0737通りすがりのランボーNGNG
このスレでは俺が法律だ。
0738デフォルトの名無しさんNGNG
>>734
バイト先のプロジェクトの責任者に聞くべきじゃネーの?
それで何で利用不可能なの?
0739デフォルトの名無しさんNGNG
ttp://www.tietew.jp/cppll/archive/5776
ttp://www.tietew.jp/cppll/archive/5777
0740デフォルトの名無しさんNGNG
boostのライセンス的には要するに問題なしってことだな
後はプロジェクトマネージャーが使用許可くれるかどうかぐらいか
その辺の裁量も自分にあるならとっとと使えばいいし
0741デフォルトの名無しさんNGNG
>740
改変型バークレーライセンスとか言うやつだっけ?
0742734NGNG
皆さんどーもです。特に>>739サマ。
いやぁ、バイト先が小さい会社なんで、プロジェクトマネージャーとかそんな
のいなくって、むしろ実質僕がそのソフトの責任者みたいになってるんですが、
下手に外部ライブラリ使うと商用だとヤヴァイかなぁと思いまして。
一応自分でも調べてたんですが、自信が無かったものでして。

リファレンスカウントとかfilesystemみたいなのとか自前で一応作ってたんで
すけど、なんかちょっと自作のが怪しくなって来たんでこの際boostにしちま
おうかと思った次第でして。さすがにRegexなんか作れないですし。

とにかく皆様ありがとうございましたm(_ _)m。これで大部楽になります。

0743デフォルトの名無しさんNGNG
boostのライセンス条項に同意できるなら、決定権のある君がOKならOKでは。

マルチバイトの処理に怪しいとこもあるので、独自ライブラリのままのほうが
いい場合もある。よく検証してから使おうね。
Unicodeとかでいけるなら、boostでいいけど。
0744デフォルトの名無しさんNGNG
vc6sp5 stlport4.5.3でbjam使って、filesystemをビルドすると
どうがんばってもofstream使用するとエラーでる・・・。

error LNK2001: 外部シンボル
""public: class _STL::basic_string<char,class _STL::char_traits<char>,class _STL::allocator<char> >
__thiscall boost::filesystem::path::native_file_string(void)const " (?native_file_string@path@filesystem@boost@
@QBE?AV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@XZ)" は未解決です
0745デフォルトの名無しさんNGNG
stlport使わんかったらうまくいった・・・。
なんでだー。
ていうか俺にどうしろちと・・・。
stlport使いたいんだよ・・・。
0746デフォルトの名無しさんNGNG
>>744
ENVにSTLPORTかなんか追加して、includeディレクトリ設定してやった?
let's boostあたりに書かれてるんじゃないのかな
0747744NGNG
今手元に設定ないんであれだが、だいたいこんな感じっす
[vcvars32.bat]
〜略〜
set INCLUDE=C:\hoge\STLport-4.5.3\stlport;
%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%

set LIB=C:\hoge\STLport-4.5.3\lib;
%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%

set STLPORT_PATH=C:\hoge\STLport-4.5.3
set STLPORT_VERSION=4.5.3

[コマンドプロンプト]
bjam "-sTOOLS=msvc-stlport" "-sBUILD=debug release <runtime-link>static/dynamic <stlport-iostream>on/off
<threadの設定?>multi.single <デバッグシンボル?>on/off"

だれかえらい人、サンプルの設定教えてくださいーーーー。
あと、βのstlportって使えない?
0748デフォルトの名無しさんNGNG
>>744
>>631-
0749デフォルトの名無しさんNGNG
>>748
それ読んでもbjamじゃうまくできねーんだよぅ。馬鹿なおいらをたすけてくれぃ。
0750デフォルトの名無しさんNGNG
>>749
ほぅ、
> set STLPORT_PATH=C:\hoge\STLport-4.5.3
これを、
> set STLPORT_PATH=C:\hoge
こう直してもダメだったわけだな。
0751デフォルトの名無しさんNGNG
>>750
だめですた。
0752デフォルトの名無しさんNGNG
>>751
DUMPBIN /SYMBOLS [できあがってるライブラリファイル] >symbols.txt

でライブラリのシンボルとって、symbols.txtの中を"native_file_string"し、
ヒットしたシンボルを>>744のシンボルと比べろ。
0753デフォルトの名無しさんNGNG
>>752
ありがとうございます。

[symbols.txt]
native_file_string@path@filesystem@boost@
@QBE?AV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@XZ

[744]
native_file_string@path@filesystem@boost@
@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
                 ↑ここが違う

あと_STL となっているところがstdになってる。

stlport使われてないってことでしょうか?
ビルドしなおしてみます
0754デフォルトの名無しさんNGNG
>>753
> stlport使われてないってことでしょうか?

そだねー。
>>750の変更したときに、古いオブジェクト消してなかった、ってことかな。
0755デフォルトの名無しさんNGNG
>>753
ん?
[symbols.txt]と、[>>744]のシンボル、逆だよな?
0756744NGNG
うまくいきますた。すいませんでした。

[環境変数]
set INCLUDE=C:\hoge\STLport-4.5.3\stlport;略
set LIB=C:\hoge\STLport-4.5.3\lib;略
set STLPORT_PATH=C:\hoge
set STLPORT_VERSION=4.5.3
でうまくいきますた。

前回やったとき失敗したのは、たぶん
set INCLUDE=C:\hoge\STLport-4.5-0119\stlport;略
set LIB=C:\hoge\STLport-4.5-0119\lib;略

set STLPORT_PATH=C:\hoge
set STLPORT_VERSION=4.5-0119

これ 4.5-0119 が原因かも・・・。

それとも
set STLPORT_PATH=C:\hoge
やってなかっただけかもしれません()。

ところで
<threading>multi <stlport-iostream>on"
オプション忘れると悲惨ですね。
0757デフォルトの名無しさんNGNG
let's boostは間違ってるの?
0758デフォルトの名無しさんNGNG
STLPORT_PATHしか書かれてないね
0759山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0760デフォルトの名無しさんNGNG
boost memo が消えターーーーーーーーーーーーーー(゚∀゚)ーーーーーーーー!!!

どこ逝ったんだYO!!!
0761デフォルトの名無しさんNGNG
>>760
Let's boost あたりからリンクをたどれ。
0762デフォルトの名無しさんNGNG
WizOnline開発中!プログラマ緊急募集(C,Java)
http://anzu.sakura.ne.jp/~kuga/wol/
2chスレ
http://game3.2ch.net/test/read.cgi/mmominor/1053536167/

0763760NGNG
>>761
アリガトン。
作者さんが進級してアカウント名が変わったっぽいですな。
お騒がせスマソ
0764デフォルトの名無しさんNGNG
The Command Line & Config library by Vladimir Prus has been accepted
into Boost.

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0765デフォルトの名無しさんNGNG
コマンドラインとか設定とかの具体的なライブラリが増えていって、
どんどん自分でコードが書けなくなっていく…
0766デフォルトの名無しさんNGNG
見た。けど、この変態的構文はどういうカラクリでござるか。C++疎くてもう。

desc.add_options()
  ("help", "", "produce a help screen")
  ("version,v", "", "print the version number")
  ("string,s", "arg", "output the specified string")
  ;
0767sageNGNG
operator() で、自分か自分と同じ型のオブジェクトを返すオブジェクトだね。

こんなかんじ
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>

class Foo {
std::vector<int> v_;
public:
Foo &operator () (int param)
{ v_.push_back(param); return *this; }

void dump()
{ std::copy(v_.begin(), v_.end(), std::ostream_iterator<int>(std::cout, ",")); }
};

int main()
{
Foo foo;
foo(1)(2)(3)(4)(5);
foo.dump();
return 0;
}

出力は
1,2,3,4,5,
になるかな。ためしてみれ
0768766NGNG
サンプルコードまでありがたい。理解でき申した。感謝いたします。
0769デフォルトの名無しさんNGNG
boostを商用のクローズドソフトウェアに使う→OK

これは何度も議論になっているのでいいのですが

boostを使って自分で書いたプログラムをGPLに
これってOK?
0770デフォルトの名無しさんNGNG
>>769
つーか、それがだめだったらboost使った奴で商用のライセンスを作成できないじゃん。
0771デフォルトの名無しさんNGNG
>>770
�dクス。

商用利用は良くても派生不可という可能性もあるので気になっていたのでした。
0772デフォルトの名無しさんNGNG
うぎゃー、filesystem2バイト目が\(0x5c)な文字を使うとだめじゃんかー!
……横着しないで自分で作ろう。
VC++の_splitpathのソースとか見ると_ismbbleadとか使ってちゃんと処理
してるんだよね。そういう風にならないかなぁ。
0773デフォルトの名無しさんNGNG
>>772
BoostをWindows日本語版依存にしろと?
0774デフォルトの名無しさんNGNG
wstringに対応しろって事じゃないの?
0775デフォルトの名無しさんNGNG
パス区切りに\使うなって事だろ。
0776775NGNG
書き込んだ瞬間に間違ってるのに気付いた。ごめん。
0777デフォルトの名無しさんNGNG
>>773
国際化しろってことでしょ?
_ismbbleadならコードページによって処理が変わるから
日本語依存になるってことはないんじゃないかな。
0778デフォルトの名無しさんNGNG
codeはすでにあるんだから、だれかがsubmitすればよいのでは。
localeを参照するようにするのは、それほど難しいことでないし。
0779デフォルトの名無しさんNGNG
Gurtovoyさんおつかれさまやね
0780デフォルトの名無しさんNGNG
最近 boost-jp に変化が無いのぅ。
0781デフォルトの名無しさんNGNG
じっくり待ちつつ spirit でハクる
0782デフォルトの名無しさんNGNG
>>780
仕事が忙しくて和訳する時間が取れないのよー。
年末は時間があったからどんどん訳していたけどな。
0783デフォルトの名無しさんNGNG
boostっていうか、STLにstringってありますよね。
これはASCIIものだけでしょうか。
UNICODEの場合にはどうなりますか?
0784デフォルトの名無しさんNGNG
>>783
stringはSTLっちゅーか標準C++ライブラリかね。
std::basic_string<wchar_t> = std::wstring があるが。
0785783NGNG
ありますた。>>784

ついでに、教えて下さい。
RDBから読み取った内容の構造体を定義したいんですが、どんな風に書かれますか?
wchar_t[10];
wstring[10];
0786デフォルトの名無しさんNGNG
[10]が格納できる文字数 or バイト数のつもりなら、

wchar_t[10 + 1]
か
wstring
でいいよ。

wstring/stringは可変の文字列を扱える。

長さチェックを行う文字列を持ちたいなら、もうちょっと工夫しないといけない。
0787デフォルトの名無しさんNGNG
>長さチェックを行う文字列を持ちたいなら、もうちょっと工夫しないといけない。
この詳細、超知りたいでつ。
0788デフォルトの名無しさんNGNG
>>788
std::wstring ws(256,L'\0');
これのこと
0789デフォルトの名無しさんNGNG
今月のCマガに載ってたね
0790デフォルトの名無しさんNGNG
C++Builder6でboostしてます。

#include <boost/tokenizer.hpp> すると、「インライン展開できない」系の
warningがボロボロと出ます。該当コードを見ると確かにインライン展開
不可能なコードがあるようです(オブジェクトの値渡しやfor文など)。
やかましいのでwarningを抑止しちゃってるんですが、これって皆さん普通に
やってることなんでしょうか?
0791デフォルトの名無しさんNGNG
淫乱展開できるかどうかは処理系依存なんで。
できない処理系がWarning出してても抑制でいいでしょ。

自分で展開しないようにソース書き換えるのは実りが少ない。
0792デフォルトの名無しさんNGNG
淫乱展開(・∀・)イイ!!
0793デフォルトの名無しさんNGNG
class Super{
public:
~Super(){
std::cout << "~Super()" << std::endl;
}
//virtual ~Super(){
// std::cout << "virtual ~Super()" << std::endl;
//}
};

class Sub : public Super{
public:
~Sub(){
std::cout << "~Sub()" << std::endl;
}
};

int main(){
boost::shared_ptr<Super> hoge(new Sub());
return 0;
}

結果
~Sub()
~Super()

どっかの日記にかいてあったが、すげーなと思った。
0794デフォルトの名無しさんNGNG
>>793
これに依存したコーディングはしないほうがいいんだろうなぁ。
0795デフォルトの名無しさんNGNG
>>793
何がすごいのか解説キボン・・
boost::shared_ptrがすごいの?
0796デフォルトの名無しさんNGNG
>>795
↓に変えて実行してみな。
int main(){
std::auto_ptr<Super> hoge(new Sub());
return 0;
}
0797デフォルトの名無しさんNGNG
ヘッダ追ってみた。なるほど。
shared_ptr<T>のコンストラクタが引数の型を自身の型とは別にtemplate typename Yで
受けていて、そのY型のchecked_deleter<Y>を与えてshared_countを作ってるのか。
だから全参照消滅時にはT=Superのデストラクタではなく、Y=Subのデストラクタが起動されるのね。

それと、解体のときにYのものですらなく、別途引数で解体関数を与えるコンストラクタもあるのね。
0798デフォルトの名無しさんNGNG
>>797
ちゃんとshared_ptrのドキュメントに出てたね。
[This constructor has been changed to a template in order to remember
the actual pointer type passed. The destructor will call delete with
the same pointer, complete with its original type, even when T does not have
a virtual destructor, or is void.
...]
0799デフォルトの名無しさんNGNG
つまり、こういうような処理しないで、
コンテナにスマートポインタぶち込むとマズーなことになるのかしら?
0800デフォルトの名無しさんNGNG
boost::shared_ptr<void*> hoge(new Sub());
こういうのもうまくうごくように出来てるよねたしか。
0801デフォルトの名無しさんNGNG
>>800が動いたら神な訳だが。
0802デフォルトの名無しさんNGNG
ごめんこっちね
boost::shared_ptr<void> hoge(new Sub());
バリアントポインタ配列みたいな感じで、
デストラクタも入れた物のがちゃんと呼ばれる。
0803デフォルトの名無しさんNGNG
>>802
>>798で引用された文がそのことですな

しかしvoidでやっちゃうと中身使うのが大変だな。
開放管理専用にするしかないかな。
0804デフォルトの名無しさんNGNG
なんだかやり過ぎのような。
「仮想関数かどうか」を判別するうまい手段があれば、
コンパイルエラーにするんだろうけど。
0805デフォルトの名無しさんNGNG
>>783-785
同じ UNICODE でも UTF-8 なら std::string。
std::wstring なら一般的には「1要素==1文字」が
成立するんだけど例外があるから気をつけれ。
あと、環境によって 2 == sizeof(wchar_t) だったり
4 == sizeof(wchar_t) だったりするのにも気をつけれ。
0806デフォルトの名無しさんNGNG
>>804
> 「仮想関数かどうか」を判別するうまい手段があれば、
> コンパイルエラーにするんだろうけど。
いや、普通のポインタで
 Super* hoge = new Sub;
 void* hoge = new Sub;
が使える以上
 shared_ptr<Super> hoge( new Sub );
 shared_ptr<void> hoge( new Sub );
という使い方ができないといかん、というコンセプトで開発されてるので
そうでもないと思う。で、当然「スマート」ポインタなんだから、一番適切な
デストラクトを呼んでくれるようになってて嬉しいなと。

個人的には、>>797氏が書いてるようなカスタム解体関数を
使ってつくったような shared_ptr でも
 shared_ptr<Abc> ptr = custom_deleter_ptr;
みたいに同じ shared_ptr<Abc> で受けられるのが便利。
0807デフォルトの名無しさんNGNG
1-30-0のboost::signalはBCC5.5.1で使えないのか?
tutorialではsignalNのtemplateで使えるみたいなこと書いてるが。

boost/mpl/aux_/integral_wrapper.hpp 44: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください。

が山ほどでる。
0808デフォルトの名無しさんNGNG

VC++7.1 が Boost Regression Tests で 100% 達成1番のり Age!!
0809デフォルトの名無しさんNGNG
smartポインタをコンテナにいれたときに、*iteratorしたら、smartポインタの実体が返ってくる奴が標準でついてほしい。
なんかそれっぽい記事はあったんだが、需要とかないのかね。
iteratorアダプターとかつかって自分でつくればいいのだが、まんどくせー。

つーか、iteratorアダプターってなんか激しく便利そうな予感。
0810ちよNGNG
はろ〜♪
http://kotarou.free-city.net/page002.html
0811デフォルトの名無しさんNGNG
もういやだ!
デストラクタ辺りが複雑でついていけません。
「スマート」ポインタなのに、ユーザーが挙動を把握してないと使えないなんて
ナンセンスだと思います。
0812デフォルトの名無しさんNGNG
>>809
> iteratorアダプターとかつかって自分でつくればいいのだが、まんどくせー。
作らんでもそのまんま indirect_iterator 使えばよいのではなかろうか。
0813デフォルトの名無しさんNGNG
>>809
とちゅうでヌルポ入ってると、アルゴリズム系で爆死するがな。
しない方法ある?

あと、vc6だとmake_indirect_iteratorつかえないんで、まんどくさー。
0814デフォルトの名無しさんNGNG
>>809じゃねーよ。
>>812だ。鬱だ。
0815812NGNG
>>813-814
> *iteratorしたら、smartポインタの実体が返ってくる
この要求の時点でヌルポインタが入ってたら死亡確定な
気がするんだけど、どーゆー動作を期待してるん?
0816デフォルトの名無しさんNGNG
★★完全無修正のエロエロサイト★★
http://upbbs.s2.x-beat.com/linkvp/linkvp.html

 ↑ 
このサイトマジやばいです。早く見ないと消されちゃうかも・・・

0817デフォルトの名無しさんNGNG
>>815
そこをなんとかしてくれる動作!!
なかったら、mapみたいに作ってくれるとか・・・。
まぁ勝手に作られてもこまるんだけどさ。

なんつーか、game programin gems の1巻にでてた、ハンドルマネージャークラスみたいに
Keyを入れたらすぐ値を返すために、vectorに値つーか、ポインタを保存しといて、
消去するときは、ポインタをNULLにするだけって感じなクラスをつくりたいときに、
めんどくさくなく、簡単にできんもんかなと思ったわけで。
0818デフォルトの名無しさんNGNG
// うごいた・・・
#include <iostream>
#include <vector>
#include <algorithm>

#include "boost/shared_ptr.hpp"
#include "boost/lambda/lambda.hpp"
#include "boost/lambda/if.hpp"

int main()
{
 typedef boost::shared_ptr< int > int_ptr;
 std::vector< int_ptr > v( 5 );
 v[1].reset( new int( 3 ) );
 v[4].reset( new int( 432 ) );
 using namespace boost::lambda;
 std::for_each( v.begin() , v.end()
  , if_then( _1 , std::cout << ret< int >( *_1 ) << ' ' ) );
 return 0;
}
0819デフォルトの名無しさんNGNG
>>818
うんこVC6じゃコンパイルできない・・・。
はやく、7.1にしたい。
0820デフォルトの名無しさんNGNG
おまえの稼ぎじゃ7.1なんて永遠に無理
0821デフォルトの名無しさんNGNG
VC7.1 と boost-1.30でコンパイルが通らないところがあります
boost_1_30_0\libs\date_time\testにあるJamfileを使ってビルドしようとすると

C:\boost_1_30_0\boost\lexical_cast.hpp(147) : error C2679: 二項演算子 '<<' : 型
'const boost::token_iterator_generator<TokenizerFunc,Iterator,Type>::value_type'
の右オペランドを扱う演算子が見つかりません (または変換できません)。
with
[
TokenizerFunc=boost::char_delimiters_separator<char>,
Iterator=std::basic_string<char,std::char_traits<char>,std::allocato
r<char>>::const_iterator,
Type=std::string
]

みたいなエラーが数箇所

どうすればいいんでしょう?
0822デフォルトの名無しさんNGNG
>>821
>r<char>>::const_iterator,

そこんとこは↓こんな風にスペース入れとけ。

r<char> >::const_iterator,
0823デフォルトの名無しさんNGNG
ださいね(w
0824デフォルトの名無しさんNGNG
>>822
821はエラーメッセージ中には'>>'が出てくるけどコンパイラがテンプレート
を展開したときにそうなってるだけで実際のソースはそうはなってないん
じゃないの?

違ったらごめん


0825 NGNG
知ったかが紛れ込んだ模様
0826デフォルトの名無しさんNGNG
偶然boost::spiritを知って、ドキュメントを読んでみたが
これ凄いな
0827デフォルトの名無しさんNGNG
yacc/lexには戻れない
といいたいけど、コンパイルにCPU食うんだよね、これ。

実験的に実践投入してます
0828デフォルトの名無しさんNGNG
sprit 使った本格的な例何か無いかなぁ?
lisp のインタープリタとかそーゆーの。
そゆのがあれば大部使い方分かると思うんだけど。
0829_NGNG
http://homepage.mac.com/hiroyuki44/
0830デフォルトの名無しさんNGNG
>>828
Cプリプロセッサができあがってたはず。
0831デフォルトの名無しさんNGNG
◎無修正画像をご覧下さい◎無料パスワードをゲットすれば、もっと凄い画像とムービーがご覧頂けます◎
★http://endou.kir.jp/moro/linkv.html★
0832デフォルトの名無しさんNGNG
CSVのサンプルがあった
0833デフォルトの名無しさんNGNG
ヤタ!漏れも今日からVC7.1だ!
lambdaが通ったときに感動したのは漏れだけですか。そうですか。
0834デフォルトの名無しさんNGNG
7.1で不具合出たら報告キボンヌ
0835デフォルトの名無しさんNGNG
lambda の読み方に関する議論は外出ですか?

とりあえず、「ランブダ」で合ってますか?
0836デフォルトの名無しさんNGNG
>>835
らむだ
0837デフォルトの名無しさんNGNG
議論も何もλそのまんまですからねぇ…
0838デフォルトの名無しさんNGNG
ランバダ!!
0839デフォルトの名無しさんNGNG
>835
ワロタ
っていうか高校物理で使っただろうに>λ(ラムダ)
0840デフォルトの名無しさんNGNG
小学校入ったばっかの頃に「スターフォース」ってゲームをきっかけに
ギリシャ文字は全部覚えたよ。
0841デフォルトの名無しさんNGNG
大学の教養で物理を真面目に勉強したらギリシャ文字をいつの間にか
全部覚えていた。
0842デフォルトの名無しさんNGNG
じゃあ次は梵字だな
0843デフォルトの名無しさんNGNG
小学校入ったばっかの頃に「斑鳩」ってゲームをきっかけに
梵字は全部覚えたよ。
0844デフォルトの名無しさんNGNG
boostってすごいな
Cygwinのg++にboost_concept_check.hがあるじゃないですか。
これって有名な話?
0845デフォルトの名無しさんNGNG
ああ、なんかつかえないや。う〜ん。
0846デフォルトの名無しさんNGNG
結論。boostと一緒ジャン。
結局、普通にboostつかって。エラーチェックはstatic_assertのみに抑えて
あとはコンパイラに任せた方がよさそうだ。
0847デフォルトの名無しさんNGNG
?
0848デフォルトの名無しさんNGNG
ひとりごとで3レスかよ
0849山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0850デフォルトの名無しさんNGNG
そろそろ

あ げ な い か?
0851デフォルトの名無しさんNGNG
boost-jp だいぶ停滞してるね。あのプロジェクトは事実上フェイドアウト?
0852デフォルトの名無しさんNGNG
まぁ、ボランティアだからな
メンバーが飽きたらそれまで
0853デフォルトの名無しさんNGNG
日本人は持続力が無いね。
0854デフォルトの名無しさんNGNG
>>851
俺の仕事代わりにやってくれるなら続きの訳してもいいよ。
0855デフォルトの名無しさんNGNG
boost 1.30で以下のコードをコンパイルして実行すると落ちるのはバグでしょうか。
コンパイラはWindowsのMinGW gcc 3.2.3です。

ソース>
#include <boost/regex.hpp>
int main()
{
boost::RegEx r("\\");
return 0;
}

実行結果>
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
0856デフォルトの名無しさんNGNG
BoostのRegexはどうか知らないが、\が言語処理系のメタキャラで、かつ
正規表現のメタキャラなので、"\\\\"と書かないと正規表現中で「\」
一文字を表現できない、という問題がありがちです。
0857デフォルトの名無しさんNGNG
\ にマッチする正規表現は /\\/ で、それを文字列で表すと "\\\\" ということですね
0858855NGNG
>856-857

ありがとうございます。
というか、例外捉えるのをすっかり忘れていました(汗)。
0859デフォルトの名無しさんNGNG
ttp://www105.sakura.ne.jp/~crane/program/

>boost::formatを使用するとコンパイルエラーがでる。
>これを解消するにはboost/format/feed_args.hppの73行目を下記のように書き換える
>
>//#if BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1300)) コメントアウト
>#if BOOST_MSVC <= 1300 && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
>
>これでコンパイルが通るようになる。

boost::formatを使おうとして動かなく、発見した。
既出かも知れないけど。

0860デフォルトの名無しさんNGNG
boost::formatはistreamにも対応しないかねえ
0861デフォルトの名無しさんNGNG
>>859
かなり前からCVSに修正版が置いてあった様な気がした。
0862デフォルトの名無しさんNGNG
以下のソースをコンパイルするとエラーが出るのは何故なんでしょうか。
コメントアウトした部分のようにすれば大丈夫なんですが。

ソース:
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <iostream>
using namespace std;

int func1(int n)
{
return n;
}

int func2(int n1, int n2)
{
return n1+n2;
}

class Test
{
public:
template <class T>
Test(T fn)
{
cout << fn(1) << endl;
}
};
0863862NGNG
続き。

int main()
{
Test t1(boost::function<int (int)>(boost::bind(func1, _1)));
Test t2(boost::function<int (int)>(boost::bind(func2, 10, _1)));
//boost::function<int (int)> f1(boost::bind(func1, _1));
//boost::function<int (int)> f2(boost::bind(func2, 10, _1));
//Test t1(f1);
//Test t2(f2);

return 0;
}

エラーメッセージ:
>g++ t107.cpp
t107.cpp: In function `int main()':
t107.cpp:29: redefinition of `boost::function<int ()(int), std::allocator<void>
> boost::bind'
t107.cpp:28: `boost::function<int ()(int), std::allocator<void> > boost::bind'
previously declared here
t107.cpp:29: declaration of `boost::function<int ()(int), std::allocator<void>
> boost::bind'
t107.cpp:28: conflicts with previous declaration `boost::function<int ()(int),
std::allocator<void> > boost::bind'
0864862NGNG
補足。
コンパイラは g++ (GCC) 3.2.3 (mingw special 20030504-1) です。
0865デフォルトの名無しさんNGNG
int bind(int);
class function
{
public:
  function(int);
};
class Test
{
public:
  Test(function);
};
int main()
{
  Test t1(function(bind(0)));
  Test t2(function(bind(1)));
  return 0;
}

: In function `int main()':
:15: redeclaration of `function bind'
:14: `function bind' previously declared here
:15: declaration of `function bind'
:14: conflicts with previous declaration `function bind'

とりあえず、問題を局所化してみた。
boostもtemplateも関係ないらしい。
gccのバグかな。
0866865NGNG
おもしろそうだから勝手にageさせてもらった。
ちなみに、
Test t1((function(bind(0))));
Test t2((function(bind(1))));
こうすれば、宣言と式の曖昧さが解決されて、
意図しているであろう本来の意味が、gccに伝わる。
0867デフォルトの名無しさんNGNG
関数宣言と思われるからでは?
バグではなく、規格通りかと。
0868865NGNG
>>867
エラーメッセージをよく見てみな。
0869デフォルトの名無しさんNGNG
sandbox に何かお薦めってある?
0870デフォルトの名無しさんNGNG
Let's boost 見たら
> 07/29 [Trojan Horse Warning] Webサーバーが感染しちゃってるので、 しばらくの間 IE からは boost.org のページを見ないように! とのこと。
http://aspn.activestate.com/ASPN/Mail/Message/boost/1750309
だと。
0871デフォルトの名無しさんNGNG
>>870
これはageておいた方が良いだろう((((;゚Д゚)))ガクガクブルブル
0872デフォルトの名無しさんNGNG
更新チェッカに引っかかったから見ちゃったよ。
サイズだけ変わってたのはそういうことか・・・。

とりあえずウィルスバスター無反応だった。
0873デフォルトの名無しさんNGNG
shared_ptr をvectorにいれてメンバ関数を呼び出したいんですが

class hoge
{
public:
void print(){ TRACE("HOGE");}
}
vector< boost::shared_ptr< hoge > > vec;
...
std::for_each( vec.begin(), vec.end(), std::mem_fun( &hoge::print ));
std::for_each( vec.begin(), vec.end(), boost::mem_fun( &hoge::print ));

コンパイルエラーになるんです。
おれだけですかね?

エラーメッセージは
void boost::mem_fun_t<S,T>::operator ()(T *) const' : 1 番目の引数を
'std::allocator<_Ty>::value_type' から 'test *' に変換できません
VC7, 付属のSTL を使ってるんですが。

0874デフォルトの名無しさんNGNG
>>873
boost::mem_fnかboost::bindで。
0875デフォルトの名無しさんNGNG
> 874
レスありがとうございます。

上をstd::for_each( vec.begin(), vec.end(), boost::bind( &hoge.print, _1 ) );
としたら動きました。
0876デフォルトの名無しさんNGNG
>>875
boost::mem_fn(&hoge::print)
でも同じ事が出来るから試しにやってみれ。覚えておくと便利。
0877山崎 渉NGNG
(^^)
0878デフォルトの名無しさんNGNG
VC7.1が100%になってますね
ネタかと思ったよ
0879デフォルトの名無しさんNGNG
どーせboostを通すことを再優先したんだろうけど。
0880デフォルトの名無しさんNGNG
lokiもそのまま通るんじゃない?
0881デフォルトの名無しさんNGNG
TypeList使えたよ。
0882デフォルトの名無しさんNGNG
Boost, Loki, Blitzがらくらくって謳ってるしな。
0883デフォルトの名無しさんNGNG
>>879
前々回が99%だったからboost側がコードを修正したんだろ
その1%はどのコンパイラも通ってなかったからソース自体がおかしかったんだろうし

boost通るってことはテンプレート周り完璧ってことなんだが
0884デフォルトの名無しさんNGNG
Blitzって何?
0885デフォルトの名無しさんNGNG
>>883
これでtypeofサポートしてくれたら……_| ̄|○
0886デフォルトの名無しさんNGNG
typeofってどんな仕様のもので、どう使えるものが欲しいの?
0887デフォルトの名無しさんNGNG
1.30.1 age
0888デフォルトの名無しさんNGNG
>>886
http://gcc.gnu.org/onlinedocs/gcc/Typeof.html
http://std.dkuug.dk/JTC1/SC22/WG21/docs/papers/2003/n1478.pdf
0889デフォルトの名無しさんNGNG
>>884
http://www.oonumerics.org/blitz/
0890デフォルトの名無しさんNGNG
gcc/gcc/cp/* のバグ出ししてください。おながいします。
0891デフォルトの名無しさんNGNG
std::string s = "000000FE";
unsigned long l = boost::lexical_cast<unsigned long>(s);
ってやったら例外投げつけられました。
16進の文字列はキャストできないんですか?
また、どのようにしたらできますか?
0892デフォルトの名無しさんNGNG
strtoul(s.c_str(),0,16);
0893デフォルトの名無しさんNGNG
内部で使われるストリームに書式を伝える方法がないからな

>For more involved conversions, such as where precision
>or formatting need tighter control than is offered
>by the default behavior of lexical_cast,
>the conventional stringstream approach is recommended.
0894デフォルトの名無しさんNGNG
struct B {};
struct D: B {};
B* ins = new D;
のとき、typeof(ins)はBになるのだが、
静的でなく動的な型を拾ってくれるtypeofはないものか。
0895デフォルトの名無しさんNGNG
>>894
既にあるやん、typeid 。
0896デフォルトの名無しさんNGNG
boost以前にC,C++をしっかりマスターしないとダメづら
0897デフォルトの名無しさんNGNG
そうでござるな
0898デフォルトの名無しさんNGNG
>>89
namespace fusianasan
{
  class bad_hexical_cast : public std::bad_cast
  {
  public:
    virtual const char * what() const throw()
    {
      return "bad hexical cast: "
      "source type value could not be interpreted as target";
    }
  };

  template<typename Target, typename Source>
  Target hexical_cast(Source arg)
  {
    std::stringstream interpreter;
    Target result;

    if(!(interpreter << std::hex << arg) || !(interpreter >> std::hex >> result) ||
       !(interpreter >> std::ws).eof())
      throw bad_hexical_cast();

    return result;
  }
}
0899デフォルトの名無しさんNGNG
>>898

  × >>89
  ○ >>891
0900デフォルトの名無しさんNGNG
>>895
typeidじゃ型として使えないんじゃ?
0901デフォルトの名無しさんNGNG
>>900
動的なものを型宣言として使ってどうすんの?

struct D: B {};
B* pB = ...;

dynamic_typeof(pB) pD = static_cast<dynamic_typeof(pB)>(pB);
// pD->OperationOfD(); // ×: ここに型D特有の操作は書けない。dynamic_typeof(pB) はDではないかもしれないから

pD->OperationOfB(); // Bのサブクラスに共通な操作なら書けるが、
pB->OperationOfB(); // それならpBから呼びだしゃ十分
0902デフォルトの名無しさんNGNG
C++では任意型のデータを動的に作れるわけではないから無意味
0903C++に死刑判決!!C ◆stD.yN6T9U NGNG
14 名前: いやく部門 投稿日: 2003/08/06(水) 17:52
Blake Stowell: SCOは現在、C++の所有権を有している。
SCOは顧客から、C++をライセンスしたいとの相談を受けることがよくあり、
そのような場合、ライセンス料を徴収している。
このような処置は顧客ごとにケースバイケースで行われており、
公に公開されたものではない。
C++のライセンシングはSCOのソースライセンスプログラムの一環である。

15 名前: Kent.N 投稿日: 2003/08/06(水) 17:54
Blake Stowell:C++はSCOが今日所有する資産の一つで、
我々からC++のライセンス供与を受けたいというお客様は
ひっきりなしにいらっしゃるので、実際にそうしています。
具体的な内容はお客様ごとにcase-by-caseで、第三者に
明らかにしない方針とさせていただいています。
C++のライセンス供与は現在SCOのSCOsource licensing programの
一部になっております。

http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=5651&KEY=1049123895&START=13
0904デフォルトの名無しさんNGNG
( ゚д゚)ポカーーーーーーーーーーーーーーン
0905デフォルトの名無しさんNGNG
つい、この間
shared_ptr の ポインタ(しかもvoid*にキャストして)を関数に渡して
データぶっ飛んでるよとなげいたことがありますた。

おまいらもなんかない?
0906デフォルトの名無しさんNGNG
"1.30.1 is completely broken."
0907デフォルトの名無しさんNGNG
>>906
? 何かあったの?
0908906ではないがNGNG
>>907
いやもうバグだらけなので1.30.2を出すらしいよ。
0909デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=5651&KEY=1048584601&START=47
0910デフォルトの名無しさんNGNG
ちょっといいですか?
BCC5.5で正規表現を使おうとすると
エラーが2,3個と警告が多数でるのですがどうすればいいのでしょうか。
ちなみにサンプルプログラムでも同じ現象が・・・
0911デフォルトの名無しさんNGNG
>>910
http://www.hyuki.com/writing/techask.html
0912デフォルトの名無しさんNGNG
>>911
http://homepage.mac.com/hiroyuki44/hankaku02.html
0913デフォルトの名無しさんNGNG
今までvc6でboostが使えていたのですが.NET 2003で使おうと思い
.NET 2003のIDEのインクルードpathの設定をして、boost::formatでも試してみるかと思ったら
いきなりdisambiguaterが定義されていない識別子です、と言われてしまいます。
他にもテンプレートがらみのエラーがたくさん出ます。

.NET 2003のIDEからboostを使うときは何か他に設定が必要なんでしょうか?
場違いかとは思いますが、どうかよろしくおねがいします。
0914デフォルトの名無しさんNGNG
>>913
>>859
0915デフォルトの名無しさんNGNG
bcc5.5で
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/fstream.hpp>
したら
エラー E2489 \boost/mpl/aux_/integral_wrapper.hpp 44: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください
とでるんだけどもしかして漏れの設定ミス?
0916デフォルトの名無しさんNGNG
>>915
エラーもう一個追加
エラー E2324 \boost/limits.hpp 40: 数値定数が大きすぎる
0917山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0918デフォルトの名無しさんNGNG
通報しますた
0919デフォルトの名無しさんNGNG
>>918
良くやった
0920デフォルトの名無しさんNGNG
cygwinでboost使うにはどうすればいいの?
0921デフォルトの名無しさんNGNG
>>920
boostのうちでビルド不要な部分は #include さえすれば使えるので、
gccの、なんだっけ 環境変数CPLUS_INCLUDE_PATH とかでboostにパス通しとけばok。

ビルドが要る部分は、
 bjam -sTOOLS=gcc
でcygwin-gcc用にビルドできる。
0922デフォルトの名無しさんNGNG
boost::threadの使い方を教えて欲しいダス。
bjamでビルドしたライブラリをプロジェクトに追加するだけじゃだめなんでつか?

コンパイルすると#error : Thread support is unavailable! なんて言われてしまうです。
on MSVC7.1 WindowsXPPro

ここをミロでもイイですので。
0923920NGNG
なるほど、thanks!
0924デフォルトの名無しさんNGNG
>>922
プロジェクトのプロパティのC/C++のコード生成のランタイムライブラリ
をマルチスレッド用に汁。
0925デフォルトの名無しさんNGNG
>>924
できましたthx!
基本的なことなのに忘れてました。
0926デフォルトの名無しさんNGNG
次スレはなしの方向で。
templateライブラリ総合スレッドへ移動よろしこ。
0927↑そのスレのURLぐらい貼ったら?NGNG
 
0928デフォルトの名無しさんNGNG
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50

だす。STLが相談室とどちらが相応しいのかは分らん。
0929デフォルトの名無しさんNGNG
そのスレ荒れてるしboost専用スレ立てたほうが懸命だな。
というわけで漏れはboost専用の次スレに一票。
0930デフォルトの名無しさんNGNG
>>929
一年前、確か、STL,boost,Loki,とテンプレートライブラリ関連の
スレッドが沢山ありすぎて読み難いという話から、一つにまとめよう
ということで、できたのが上のスレッドです。まさかここまでboost
スレが長持ちするものだとは思わなかったけどw
個人的にはどうでもいいです。boostスレが別個にあってもいいとは思います。

一つにまとめるなら,本当なら"template総合スレ"なんてタイトルじゃなくて
boostやLokiのようなtemplateをフル活用したライブラリ専用スレという意味合いが
伝わる、そんな名前がいいかなあと。言語機能としてのtemplateやSTLは
相談室の方で十分な気もするし。

後の人に任せます。
0931phoenixNGNG
spiritコムパイル遅すぎsage
0932デフォルトの名無しさんNGNG
おまえら1.30.2でますたよ。

0933デフォルトの名無しさんNGNG
ML で Boost GUI/GDI template Library についての話題が合ったらしいけど、
英語の出来ないおれが見ても、まったく流れがつかめん。

把握している人がいたら、解説キボン
0934922NGNG
boost::threadを使った簡単なサンプル(ttp://www.kmonos.net/alang/boost/classes/thread.html)をコンパイルすると

warning C4275: DLL インターフェイスではない class 'std::logic_error' が DLL インターフェイスのベースになる class 'boost::lock_error' として使われています。

ってのがいっぱい出るけどどうしたらよいでしょうか。無視?
0935デフォルトの名無しさんNGNG
>>933
思いっきり斜め読みしかしてないが
 ・GUIライブラリが欲しいぞ。STLのコンテナと綺麗に組み合わさるヤツ。
  list<T> に push_back したらリストボックスの要素が増えたりすんの。
 ・当然プラットホーム非依存だよね?
 ・プラットホーム非依存ってーと、wxWindow とかは?
 ・いや ModernなC++ライブラリとしては、boost::spirit みたいな
  サブ言語でC++のコード中にGUIが記述できるとカコイイ!!
 ・とりあえずsfにプロジェクト作ってみますた。
  → http://sourceforge.net/projects/notus/
 ・XMLでUI記述して読み込みってどうよ?
 ・つーかそれって既にXULがあんじゃん。
とかなんとか。あんまり話まとまってないように読めた。

誰かマジメにスレッド追ってる人、解説キボン。
0936デフォルトの名無しさんNGNG
boost初心者ですがおながいします。
rationalとintを掛けたいのですができません。

boost::rational<int> r(1,3);

int i= r * 2000;

見たいなのですが。どうすればいいでしょうか?
0937936NGNG
すんません。rational_castっていうのがあるのですね。
しつれいしますた。
0938933NGNG
>>935
ありがとう。
MLのLOGを読もうとしたけど、どこが根っこなのかわからなかったから、
こうしてまとめてもらえると助かります。
引き続き情報募集中です。

Yahoo Groups に boost_gui があったので、早速みてみた。
テスト板だからだろうが、MFC 依存っぽいコードがあったのはひいた。
期待していた Listbox Control とかは無くて、少しがっかり。

テストコードは dialog つくって表示するものだったけど、
少ないコード量なのにもかかわらず、割と複雑なものだった。

期待大。
0939933NGNG
↑は、テストコードと、適当なヘッダを見ただけで書いたもの。
ソース部分は相変わらず複雑で、読むには相当な気合がなきゃダメっぽ。
0940デフォルトの名無しさんNGNG
boostの実装ファイルはippって拡張子ですが、なぜなのでしょうか?
cppじゃない理由が知りたいれす

0941デフォルトの名無しさんNGNG
BOOST_STATIC_CONSTANT の第2引数内にカンマを使いたいときは一度 typedef して
BOOST_STATIC_CONSTANT(bool, tmp::value) とかして大丈夫ですか?
0942デフォルトの名無しさんNGNG
>>940

boostのほとんどのファイルの実装は*.hppだと思うが。
なぜかといえば、

・ほとんどのライブラリはtemplateとして実装されている。
・一般的にtemplateの実装はヘッダファイルに置かれる。
・C++用のヘッダファイルには*.hではなく*.hppを使う流儀もある。

という、ただそれだけの話だが。

regexやthreadなどのライブラリのコンパイルが必要なものは実装に*.cppを使っている。
0943デフォルトの名無しさんNGNG
>942
それは知ってます。hppじゃなくてippの話なんですが。
0944デフォルトの名無しさんNGNG
>>943
ippって何のコンピュータ用のboostよ?Win32用は全部hppだぜ。
0945デフォルトの名無しさんNGNG
というかboostはコンピュータをディレクティブで判断してるから一種類
しかないんだった。ippなんて見たことないなあ。
0946デフォルトの名無しさんNGNG
*.ippは33ファイルあるよ。拡張子の用途は不明だが。MLに加入して
理由を聞いてみれば?
0947デフォルトの名無しさんNGNG
vcとかだと、テンプレート宣言をヘッダに書いて、実装をcppに書くってことができんから、
ヘッダの最後の方でcppをインクルードするじゃないですか。
そんときに普通の実装と区別しやすいようにわざとippにしてんじゃないの?
インラインの頭文字とってippなのでしょうかね?
0948デフォルトの名無しさんNGNG
あれなんでこんな古いスレがあるの?w
0949デフォルトの名無しさんNGNG
過去を改変してみるテスト。
次スレはtemplateスレじゃなくて独自に建てようぜ!
0950デフォルトの名無しさんNGNG
templateの話題はC++相談室でやってもらって、
テンプレートライブラリに特化した話をするスレつくろうぜ!
レス数が950を超えています。1000を超えると書き込みができなくなります。