5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:02/10/06 00:15
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/


2 :デフォルトの名無しさん:02/10/06 00:18

http://pc3.2ch.net/test/read.cgi/tech/1008593126/

3 : ◆hMJAPH9PWA :02/10/06 00:18
2getのチャンス到来?

4 :デフォルトの名無しさん:02/10/06 00:23
>>3
(^Д^)

5 :C++使い:02/10/06 00:45
キタ━━━(゚∀゚)━━━!!

6 :デフォルトの名無しさん:02/10/06 01:14
仕事で使ってる?

7 :デフォルトの名無しさん:02/10/06 01:21
http://user.ecc.u-tokyo.ac.jp/~g940455/wp/boost/index.html

8 :デフォルトの名無しさん:02/10/06 01:39
使うより読むほうが面白い罠

9 :デフォルトの名無しさん:02/10/06 02:02
準標準ライブラリとか言われるとSTLに対する2軍ってイメージが。


10 :デフォルトの名無しさん:02/10/06 02:24
「事実上の標準ライブラリ」や「最もよく利用されているライブラリの一つ」の方がよかったかね

11 :デフォルトの名無しさん:02/10/06 03:13
http://www.kmonos.net/alang/boost/classes/lambda.html
これをg++でコンパイルするとコンパイラのエラーが出る。
2.95と3.2の両方で。コンパイラのバグなのか、プログラムの
バグなのか、ライブラリのバグなのかは不明

12 :デフォルトの名無しさん:02/10/06 03:18
3.2だったら大丈夫でした。自分のマシンが遅すぎただけたった・・・

13 :デフォルトの名無しさん:02/10/06 03:34
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/

14 :デフォルトの名無しさん:02/10/06 05:25
shared_ptr しか使ってないのですが
こんなわたしも boost 使いですか?

15 :sage:02/10/06 06:02
>>14
業界標準のスマートポインタとしてboost::shared_ptrを使う意義は大きいんじゃ?
下手な独自開発のスマートポインタを公開して得意げな連中に比べれば。


16 :デフォルトの名無しさん:02/10/06 06:06
げほ、sageミスった

17 :デフォルトの名無しさん:02/10/06 06:27
正規表現の部分のみ使わせてもらっているけど、
なかなかいいんぢゃない。



18 :デフォルトの名無しさん:02/10/06 06:29
>>13
マンセー

19 :デフォルトの名無しさん:02/10/06 08:54
わしはモレーツに boost が好きだ。

20 :デフォルトの名無しさん:02/10/06 15:22
日本語のboost解説書が出る予定は無いのでしょうか。
STL本は山のように出ているんだから、一冊くらい出してくれても良いのに。

21 :デフォルトの名無しさん:02/10/06 15:29
boostプログラミングのためには最速のPCが必要。
ghcで遊んでて「遅いなあ」とか思ってたけど、
そのはるか上を逝く。当たり前だけど。。

>>20
ネットの情報とソースコード、これで十分でしょ。
出たとしても売れないよ(藁

22 :STL刷れ466:02/10/06 19:04
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で回避することはできないでしょうか?
教えてください。







23 :STL刷れ466:02/10/06 19:08
>>22
うぐ、もしかしてboost::mem_fun1_t でOKですか?
手元にいまVCがないんですが・・。



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

…ということで汎用のファンクタにしてしまえ。
boost::function2<void, Foo*, int> f( boost::mem_fn(&Foo::bar) );

25 :デフォルトの名無しさん:02/10/06 21:18
GHCより遅いんかい……

26 :デフォルトの名無しさん:02/10/06 23:22
>>24
できました。ありがとーございます。
現在、boost::bindがVCでコンパイルエラーになるってので格闘中。
いや本当はbind1stで事足りるんですけどね。


27 :デフォルトの名無しさん:02/10/06 23:35
>>21
オレは買うぞ!!

28 :デフォルトの名無しさん:02/10/06 23:37
おれもれも


29 :デフォルトの名無しさん:02/10/07 01:03
gcc3.2を使うと、
"Unknown compiler version - please run the configure tests and report the results"
というエラーが出てコンパイルできない場合があるのですが、やはりgcc3.1以前を
使わないといけないのでしょうか。

30 :デフォルトの名無しさん:02/10/07 01:04
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」にしたいのですが、どうしたらいいんでしょうか?

31 :30:02/10/07 01:08
あ、ちなみに

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));
 }
}

というコードだと何も問題ありませんでした

32 :デフォルトの名無しさん:02/10/07 01:17
あるクラス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 );

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



33 :32:02/10/07 01:18
あ、typedef展開して書くの忘れた。そのへんは見なかったことにしてく
ださい..


34 :32:02/10/07 01:21
>>32
実は前者で書いていたんですが、boost::mem_fn( &Hoge::sort<> )
するとg++(2.93)がinternal compiler errorで御臨終する罠に落ちまして。後者のような書き方ってアリなのかなぁと思ったのです。

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



35 :デフォルトの名無しさん:02/10/07 02:03
>>29
それをエラーと呼んで良いものか。

36 :デフォルトの名無しさん:02/10/07 02:08
>>32に便乗させてください

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

何か考え違いをしているのかなぁ。


37 :デフォルトの名無しさん:02/10/07 02:21
>>36
STLスレのほうがいいんじゃない?

# ...読んでいる人がまったく同じだったりする罠
# ちなみに漏れは回答わからず(鬱


38 :デフォルトの名無しさん:02/10/07 02:29
Boost入れたけどなんかエラーばっかりだ・・・・鬱
試しにヘッダインクルードしただけなのに
VC++6.0 エラー73個
Bcc5.5 内部の致命的エラー2個

39 :デフォルトの名無しさん:02/10/07 05:47
boost::graphの使い方解説してるサイトとかない?


40 : ◆FSk/Ubp.Kg :02/10/07 07:29
前に俺も探したけれど、日本語はないみたい。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

41 :デフォルトの名無しさん:02/10/07 07:40
ttp://www.kmonos.net/alang/boost/classes/graph.html は?


42 :デフォルトの名無しさん:02/10/07 08:33
>>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 なりで。

43 :36:02/10/07 08:47
なるほど..勉強になります。 >>42

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



44 :デフォルトの名無しさん:02/10/07 08:50
>>41にはHello, World的なことしか書いてないので、
使い込むなら別の資料が欲しいところ。しかし英語で探しても
boost本家とBGL本しかちゃんとしたものが見つからん…。

45 :デフォルトの名無しさん:02/10/07 08:58
>>44
自ら書く鹿

46 :デフォルトの名無しさん:02/10/07 08:59
ソース読めばいいんじゃないの?

47 :30:02/10/07 09:47
>42
なるほど、char_separator<>なるものが存在したのですか・・・
ざっと解説サイト回っただけだとオフセットセパレータの話ばっかりだったので
キーワードを教えてもらえただけで大変助かりました

どうもありがとう

48 :デフォルトの名無しさん:02/10/07 09:54
>>46
graphはregex++以上にソース読むのつらい。
yacc&lexも使ってるし。

49 :デフォルトの名無しさん:02/10/07 10:13
>>29
自分はそのチェックをはずして 3.2 で使ってる。
といっても、スマートポインタくらいしか使ってないけど。

50 :デフォルトの名無しさん:02/10/07 11:26
試す度胸が無いので恥を忍んで聞きますが
文字列へのポインタconst char* lpstrを
boost::lexical_cast<string>(lpstr)とやると
ポインタそのものの数値が文字列化されてしまうんでしょうか?

数値なら文字列にして、文字列ならそのままにして
ファイルへ保存するクラスを作っているんですが
なんとかテンプレート化できないものか悩んでおりまする・・・

51 : ◆hMJAPH9PWA :02/10/07 13:04
>>50
いやいや、そんなわけないよ。ちゃんとCの文字列型→stringへの変換が行われます。
boost::lexical_cast<string>(static_cast<void*>(lpstr))とやれば別だけど。

ていうかそのくらい試してみればいいのに。

52 :50:02/10/07 17:12
あれれ・・・試しにやってみたらアブノーマルなプログラムだ!って怒られて強制終了・・・

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

53 :デフォルトの名無しさん:02/10/07 18:58
>>52
文字列に空白が含まれていませんか?
空白が含まれている場合、
operator>>は空白までで区切ってしまうので
全部出力されません。
そのため、bad_lexical_castが投げられてしまいます。

自分の出した解決策はconst char *の時や
string型の時の特殊化(オーバーロード?)を作るです。
うまいことやればうまくいきます。


54 :デフォルトの名無しさん:02/10/07 19:12
ちなみにloxical_castは一度、
operator<<を介して文字列スとリームに変換されてから
Targetの方にoperator>>を介して変換されています。


55 :50:02/10/07 19:27
>>53
空白は含まれていません

型毎に特殊化するって、boost::type_traitsを使う方法でしょうか?
もしそうだとして、type_traitsって実行時に型特性を判断できるんですか?

56 :53:02/10/07 19:45
>>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を渡しても落ちました。
その線はないでしょうか?

57 :50:02/10/07 20:55
>>56
なるほど、と、いうことは

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

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

boostとは関係無い話題ですけど・・・

58 :デフォルトの名無しさん:02/10/07 20:56
>>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ポインタを疑ってちぇっくした方がいいと思われ。

59 :32:02/10/08 00:04
>>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;
}


60 :続き:02/10/08 00:04
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&'

となってしまいます。どうにかする方法はないでしょうか・・。
神々の皆さん教えてください。


61 :59:02/10/08 00:16
あーーーーー
boost::ref がないだけじゃん・・・・
お騒がせしました。

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



62 :デフォルトの名無しさん:02/10/08 11:19
VC6でboostとSTLPort使ってるとき、_STLP_DEBUG を 1 にするとコンパイルできない。鬱。


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

という訳で出来ればC++相談室に一本化する
ようなほうにいってくれるとうれしいな。
v(^・^)v

64 :デフォルトの名無しさん:02/10/08 13:21
そうだね。

65 :デフォルトの名無しさん:02/10/08 14:14
次からって・・・
このスレはC++スレとSTLスレの総意でついこのあいだ独立したばっかりだと思うが・・・

一本化するなら、C++相談室スレッドとC++(準)標準ライブラリスレッドくらいには分けて欲しい

66 :デフォルトの名無しさん:02/10/08 14:16

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 あたりの使い方がよくわからずコンパイルエラーが起きてしまいます。
どうすればいいでしょうか?


67 :デフォルトの名無しさん:02/10/08 14:24
>>65
同意。STL/Boost/Genericスレはノイズが少なくて良い。



68 :デフォルトの名無しさん:02/10/08 14:30
>>65
禿堂。
もう関連スレが細分化されすぎて見づらい。

>>63
>今時テンプレートを使えないやつの方がヤバイ
まぁまぁ。気持ちは分からなくもないが人それぞれ、
ソースそれぞれってことで。


69 :デフォルトの名無しさん:02/10/08 15:53
>>66
あまり自信ないですが、
>>boost::bind(&S_FileInfo::AddA, _1, _2);
は、
boost::bind( &func , TEST instance, _1, _2 );
では?
そして、この返り血は op( int , TEST & ) なので、accumulateの
関数にはならないかと思うんですが。



70 :デフォルトの名無しさん:02/10/08 17:10
>>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) ) );

とかなら分かるけど・・

71 :デフォルトの名無しさん:02/10/08 17:25
>>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));

72 :66:02/10/08 17:38
>>69, 70

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

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

ありがとうございました。

73 :デフォルトの名無しさん:02/10/08 23:31
>>63
ソウデモナイヨ。(周囲見てると)
書いてて鬱なのでsage。

74 :デフォルトの名無しさん:02/10/10 01:21
boostでできるかどうか良くわかってないんですが、すべてのメンバがpublicな、
(C言語のそれと同等の)structがあるとき、その全てのメンバをprivateにした上
でsetter/getterをなるべく自動的に作成するような、上手い方法はありませんか?


75 :デフォルトの名無しさん:02/10/10 01:40
全てのメンバを、自動生成したsetter/getter通すって、
publicにあるのといっしょじゃないの?

76 :デフォルトの名無しさん:02/10/10 01:42
>>75
できれば全部virtualだと嬉しかったりします。


77 :デフォルトの名無しさん:02/10/10 02:11
あなたの人生が実はvirtualです。


78 :デフォルトの名無しさん:02/10/10 02:13
>>77を見てちょっと落ちた俺は駄目人間。


79 :デフォルトの名無しさん:02/10/10 02:28
マトリーックス!

80 :デフォルトの名無しさん:02/10/10 02:37
あなたの人生が実は mutable です。

81 :デフォルトの名無しさん:02/10/10 03:26
よーしパパ ジェネレイティブに書いちゃうぞーとか言ってんの。もう見てらんない。


82 :デフォルトの名無しさん:02/10/10 03:32
実を言うと私の心はconstなんです。

83 :デフォルトの名無しさん:02/10/10 03:38
>>81
まぁ、iteratorでforループまわす真似を何があっても絶対しないばか
りか同僚のそういうコードを片っ端から書き直してみたりとか、それ
でいてindirect_iteratorは使いまくってみたりとかしてたらブチ
キレる人もいるわな(わら



84 :83:02/10/10 03:39
generativeなコード書いてブチキレられてる人は、自分を含めまだ
知らないってことで失礼。

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



85 :デフォルトの名無しさん:02/10/10 03:48
>>74
真面目な話、
親クラスのメンバをQUERYする
方法がないから、そう簡単な方法は
ないと思われ。


86 :デフォルトの名無しさん:02/10/10 03:49
>>85
i see.
あきらめます。


87 :デフォルトの名無しさん:02/10/10 04:08
>>83
汎用厨は反省汁!!








・・・・・・オレモナー


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

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



89 :88:02/10/10 05:41
・・・早速なんですが、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で通す方法はありませんか?
ご存知の方、ご教授ください。


90 :デフォルトの名無しさん:02/10/10 05:47
>>88-89
用件は単刀直入に(w


91 :88:02/10/10 05:50
>>90
まことにすんません。嬉しかったものでつい。



92 :デフォルトの名無しさん:02/10/10 06:45
I see dead people
(((;゚Д゚)))

93 :デフォルトの名無しさん:02/10/10 09:44
>>88
で、3日寝ると忘れる、と。

94 :88:02/10/10 10:24
>93
ありそ。


95 :デフォルトの名無しさん:02/10/11 00:31
誰か、Effective Boostを書いてくれ。

96 :デフォルトの名無しさん:02/10/11 00:45
Effective Boost

97 :デフォルトの名無しさん:02/10/11 02:03
正直、本が出ないことには仕事で使いづらいな。

98 :デフォルトの名無しさん:02/10/11 04:22
一般的には、自分は使えるけどまわりが・・という状況だね。
おれもれも。



99 :デフォルトの名無しさん:02/10/11 07:02
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だけ使っていれば良い気がしてなりません。



100 :デフォルトの名無しさん:02/10/11 09:20
99+1

101 :デフォルトの名無しさん:02/10/12 09:54
1.29 公開されました。

102 :デフォルトの名無しさん:02/10/12 09:59
ひとまずmplのデバッグが完了したということにして
いいのですね?

103 :デフォルトの名無しさん:02/10/12 13:00
boostのthreadってLokiのやつと比べるとダサクネ?
Cのインターフェイスをラップしただけのものなんて
正直入れないで欲しいな。

104 :デフォルトの名無しさん:02/10/13 01:52
2chのみんなー、mplをもっと流行らせよう!!!
こいつはすごい プライベートでも仕事でもメタメタProgramminging

105 :デフォルトの名無しさん:02/10/13 06:25
お、boost::format 入ったか。うれしいな。


106 :キタ━━━━━━(゚∀゚)━━━━━━ !!!!!:02/10/13 06:43
ぬうおおおおお!更新キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

107 :105:02/10/13 06:48
ねえ、だれか>>99教えてよ・・


108 :デフォルトの名無しさん:02/10/13 10:17
>>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;
}
とかやりたい時…って普通やりたくないか、そうか。うむ。

109 :99:02/10/13 11:16
うん、、ない・・・・・・


110 :デフォルトの名無しさん:02/10/13 14:51
Cygwin用のBoost.Jam executable(bjam.exe.gz)をダウンロードして
gunzip bjam.exe.gzで解凍しようとしたら

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

とのエラーになる。

どうやって解凍すればいいの?


111 :デフォルトの名無しさん:02/10/13 15:06
>>110
bjam.exe.gz: MS Windows PE Intel 80386 console executable not relocatable

って言われるから、単に拡張子が間違っているじゃねーのか ?
とりあえず、bjam.exe にリネームして、ウィルスチェックしてから実行すればいいと思う。
(なんかあっても、責任は取れないけど...。)

112 :デフォルトの名無しさん:02/10/13 15:14
boostの前にセットアップでつまずく罠
jamっての辞めてほしいんすけど。

113 :110:02/10/13 15:56
>>111
mv bjam.exe.gz bjam.exe
./bjam.exe
としてみたら

bash: ./bjam.exe: Permission denied


boostが嫌いになりそうだ...


114 :デフォルトの名無しさん:02/10/13 16:00
$chmod 755 bjam
はしてますか?

115 :110:02/10/13 16:08
ls -lで見て
-rwxr-xr-x 
となっています (chmodする前から)

116 :デフォルトの名無しさん:02/10/13 16:08
>>113
chmodじゃないの?ていうか、それくらい(略

>>112
そだね。漏れもmakeにしてほすぃ、と思う。
けど、boostのソースん中にjamのソースは入ってるから、バイナリだけ作って、
boost入れたら消せばいい。バイナリ自体も配付されてるしな。


117 :デフォルトの名無しさん:02/10/13 16:29
>>110
IEで落とすと、IEが落としながら勝手に解凍したりしつつ
拡張子はそのまんまという迷惑なことをやってくれるが、
そういうことでなくて?

118 :デフォルトの名無しさん:02/10/13 17:00
debパッケージ待ちだな、こりゃ。

119 :デフォルトの名無しさん:02/10/13 17:50
shared_ptrってスレッド越しに渡してもちゃんと参照カウントされますか?
もしくはちゃんと参照カウントさせて別スレッドに渡す方法ってありますか?
例えばPostThreadMessageとかで

120 :デフォルトの名無しさん:02/10/13 20:33
マルチスレッドオプション付きでコンパイルすれば
ちゃんとMutex入りとかになったはず、確か。

121 :110:02/10/13 20:47
Cygwin用のbjamじゃなくてWindows用のbjamをダウンロード(こちらはzip)
してCygwin上で実行したらうまくいった。
出来上がったライブラリの拡張子がlibになってしまうのでaに変えたが、
それ以外は(今のところ)問題なし。

お騒がせしました。

122 :デフォルトの名無しさん:02/10/13 21:00
bjamでビルドすると、STLportを使ってくれません。
makeだとちゃんとSTLportを使ってくれるんですが。

123 :122:02/10/13 22:46
つД`) ウエーン

124 :デフォルトの名無しさん:02/10/13 23:43
>>122
コンパイラによるので何とも言えんが、ちゃんと
 -sTOOLS=gcc-stlport
とか
 -sTOOLS=msvc-stlport
とかやってるか?

125 :122:02/10/13 23:52
>>124
はい、msvc-stlportを指定してビルドしてみましたが、使ってくれませんでした。
コンパイラはVC7です。

126 :デフォルトの名無しさん:02/10/15 16:23
せめて正規表現部分だけでも標準化されないかなとかいってみるテスト

127 :デフォルトの名無しさん:02/10/15 17:20
>>126
これ?
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1386.htm


128 :デフォルトの名無しさん:02/10/15 22:59
VC6に 1.29.0(の少なくともcast.hpp)を入れると
using namespace boost; しなくても、min( a, b ); が
多重定義でコンパイルエラーになるのは俺だけでしょうか。

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

マイクロソフトみたいな真似はやめれ!

129 :デフォルトの名無しさん:02/10/15 23:08
>>128
インクルードしないようにすればいいじゃなくて?

130 :デフォルトの名無しさん:02/10/15 23:16
>>129
いや、試したけど大体何インクルードしてもエラーになる。
あと、多重定義ってのは嘘で、オーバーロードの曖昧さでした。

ライブラリのバージョン上げた途端コンパイル通らなくなって
カナーリビビッタヨ


131 :デフォルトの名無しさん:02/10/15 23:26
>>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のせいとかいうオチは流石にないよな?

132 :デフォルトの名無しさん:02/10/15 23:33
>>131
もしかしてSTLPortのせい?

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

なんだけど、確かにSTLPort下げると通る!

133 :36:02/10/18 01:07
しつこくてスマソですが誰か>>46解説熱望



134 :デフォルトの名無しさん:02/10/18 02:03
>>133 ソース読むほかないんじゃない?

135 :133:02/10/18 02:45
46じゃなくて、>>43の解説希望、でした・・・・.....



136 :デフォルトの名無しさん:02/10/18 03:17
windows.h
#define min(x,y) (x<y?x:y)

マイクロソフトは最高最強のソフトメーカーです

137 :デフォルトの名無しさん:02/10/18 03:18
WTLだけ相手にしましょうや。


138 :デフォルトの名無しさん:02/10/18 05:00
>>135
関数ポインタがわからんのか?

139 :デフォルトの名無しさん:02/10/18 05:16
>>138
いやわかりますが・・
関数ポインタに boost::bind とかで作った関数オブジェクトを代入できるんですか?


140 :デフォルトの名無しさん:02/10/18 05:57
>>136
マイクロソフト≒My糞ソフト

141 :デフォルトの名無しさん:02/10/18 06:02
糞レス(・A・)イクナイ! >>140



142 :デフォルトの名無しさん:02/10/18 07:24
>>140
ワロタ

143 :デフォルトの名無しさん:02/10/18 08:13
>>139
できないよ?だから42氏が、必要に応じて
関数ポインタを使うなりboost::functionを使うなり適切な物を、
とゆーとるのではないだろうのか。

144 :デフォルトの名無しさん:02/10/18 09:26
>>136
#undef minしちまえ

145 :デフォルトの名無しさん:02/10/18 16:03
namespace windows{
#include "windows.h"
}
(ry

ヽ(`Д´)ノもう来ねえよ!ウワァァン!!!

146 :デフォルトの名無しさん:02/10/18 16:16
>>145
>>136


147 :デフォルトの名無しさん:02/10/19 03:52
>>144
ソナコトシテイイノ?

148 :デフォルトの名無しさん:02/10/19 08:37
>>145
激しくワラタ。

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

// 自分用minの定義

149 :デフォルトの名無しさん:02/10/19 12:21
#define min(l,r) !max(l,r)
動きません。助けてください。

150 :デフォルトの名無しさん:02/10/19 12:22
そらそーだろ

151 :デフォルトの名無しさん:02/10/19 12:27
うわ、凄いマヌケなことしてる気がしてきました。
なにか間違ってます?

152 :デフォルトの名無しさん:02/10/19 12:29
#define min(l,r) max(!(l),!(r))
こうだったかな?


153 :デフォルトの名無しさん:02/10/19 12:33
! についてもうちょっと研究するんだな

154 :128:02/10/19 12:33
boostスレがネタスレになってる
俺のせい?

155 :デフォルトの名無しさん:02/10/19 15:19
>>148
#define NOMINMAX
#include <windows.h>
#include <algorithm>

>>149
マクロはやめれ

156 :デフォルトの名無しさん:02/10/19 20:28
>>155
イイ!

157 :デフォルトの名無しさん:02/10/19 21:28
プリプロセッサで変態的プログラミングを行うスレはここですか?

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;
}

158 :デフォルトの名無しさん:02/10/19 21:32
ん?BOOST_PP_INCって定数しか扱えない罠?

159 :デフォルトの名無しさん:02/10/19 21:40
ttp://www.c-view.org/tech/lib/boost/boost/preprocessor/arithmetic/inc.hpp

定数しか扱えなかったみたいだ。。。吊ってくる。。。

160 :デフォルトの名無しさん:02/10/19 22:57
>>154
うむ、これはおまいのせいなので、ここは罪滅ぼしにSTLPort+boostの
どの辺がマズかったのか調べて報告してくれると嬉しいなっと。

161 :デフォルトの名無しさん:02/10/19 23:37
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とかは良いとして、一番下の一体何?


162 :161=154:02/10/19 23:52
>>161 の追記
とりあえず、対策は
boost/config/stdlib/stlport.hpp に

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

とか入れとけばOKみたい
バグっぽいので、次期バージョンでは修正されているでしょ

163 :161=154:02/10/19 23:58
連続カキコスマン
>>162 は嘘だ、BOOST_MSVCは他のとこでも使われてる!
#define BOOST_STLPORT_MSVC とか定義して >>161 のとこだけ外してくれ


164 :デフォルトの名無しさん:02/10/20 05:23
AppleのUniversal HeadersはちゃんとC++対応してるのになー
Microsoftも見習ってほしい

165 :148:02/10/20 17:36
>>155
サンクス、勉強んなった。
ところで、windows.hって…VCなんだよね…。


166 :デフォルトの名無しさん:02/10/21 18:49
>>165
偉大なるビル大師に命を賭して忠誠を誓う際に使います(w
BCは…使ったことないのでスマソ…


167 :デフォルトの名無しさん:02/10/23 21:32
最新版のboostでも、VCでindirect_iteratorは使えないんでしょうか?
不便でしょうがない・・。



168 :デフォルトの名無しさん:02/10/24 00:26
>>167
VC7なら昔から通っていたみたいだが、VC6の話でつか?
http://www.boost.org/status/cs-win32.html


169 :デフォルトの名無しさん:02/10/24 19:23
boost を VC6-STLport でコンパイルしてたら 「コンパイラのヒープが足りない」
とか言って Stop しますた。
メイクファイルいぢって /Zm200 オプションつけて動かしたらコンパイル通ったけど、
これで OK なの?

170 :名無し~3.EXE:02/10/24 23:51
GentooLinuxにboostが入りました。1.28と1.29です。
これであの変なjamとかいうのを覚えなくて済みます

171 :デフォルトの名無しさん:02/10/25 02:44
誰もレスしないので…

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


172 :169:02/10/25 03:28
>>171
レスありがと。

致命的なエラー C1076 だそうで。
PV-800MHz、Mem-933MB、Windows 98SE、VC6SP5、STLport-4.5.3、boost-1.29.0。
169 の通り一応コンパイル通して、とりあえず Web に転がってる簡単な
サンプルとか動かしたけど問題出ないような。
やや不気味。

173 :デフォルトの名無しさん:02/10/25 04:49
>>172
テンプレートを展開するときに必要なメモリがヒープの大きさを越えたんだろ。


174 :172:02/10/25 06:09
>>173
いやー、それは何となくわかるんだけど。
ただ、こういうエラーが出るという情報が全く知らなかったんで、
漏れが何かおかしい事をしたか不安だったわけで。

したら、ついさっき↓を見つけて安心しますた。
http://page.freett.com/shelarcy/diary2002-10.html#boost_1_29_0_regex

175 :デフォルトの名無しさん:02/10/25 17:09
C って最強じゃん?!

176 :171:02/10/25 17:11
ごめん。
漏れの確か128だった。


177 :安芸:02/10/28 00:30
あげといてもいいっすかね


178 :デフォルトの名無しさん:02/10/28 00:43
>>117
その age かたはダメ。
唐揚げにして

179 :デフォルトの名無しさん:02/10/28 00:46
boost::anyの使い方について、何か面白い例ないでしょうか?

180 :唐揚:02/10/28 00:51
>>179
テンプレート使うのがメンドクセー状況下(VC++が自動生成するクラスとか)
で、あるクラスに、(継承関係のない)任意のクラスのオブジェクトを保持しなければならんとき、
意地でもvoid*を避ける目的で使ったことがある・・がそれだけ。




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

便乗質問よろしいでしょうか?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は糞でしょうか?

182 :デフォルトの名無しさん:02/10/28 01:08
181です。
compiler status(cs-win32.html)を見ると、bcc5.5.1ではmulti_arrayが
failとなっているので、その流れでbcc5.6.1もだめなのでしょうね。

183 :デフォルトの名無しさん:02/10/28 01:11
boost::any の紹介文が、"typesafe union" だからなぁ。
unionなんぞになかなかご登場願わないC++としては使いどころも限られ。
って感じですかね?


184 :デフォルトの名無しさん:02/10/28 01:22
>>183
ですよね。mem_funを使った動的バインディングをコンテナで適用する
程度ですからね。

185 :デフォルトの名無しさん:02/10/28 01:32
>mem_funを使った動的バインディングをコンテナで適用する
って?

186 :デフォルトの名無しさん:02/10/28 02:12
>>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));
}

187 :デフォルトの名無しさん:02/10/28 02:19
boost::anyとどう関係が・・・・・
低脳でスマンコ

188 :デフォルトの名無しさん:02/10/28 02:22
>>187
boost::anyとはあまり関係ないか・・・・スマソ

189 :デフォルトの名無しさん:02/10/28 02:28
>BCCは糞でしょうか?
それだとVCの勃ち場が。



190 :デフォルトの名無しさん:02/10/28 02:31
>>189
VCの方が若干boostに対しては優しいみたいだよ。BCCはテンプレート
周りが弱いようだ。

191 :デフォルトの名無しさん:02/10/28 02:40
なるほど。http://www.boost.org/status/cs-win32.html
BCCは良いのかと思っていたが↑をみると悪い意味でいい勝負だね。

まぁ http://pc3.2ch.net/test/read.cgi/tech/1026793823/756n- などを見る限り両方うんこ。

192 :デフォルトの名無しさん:02/10/28 08:06
>>190
優しいというか、VCユーザの方が多いのでそっちの対応には
力が入っているだけというか。

193 :デフォルトの名無しさん:02/10/28 10:05
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 などとは比べ物になりませんな

194 :デフォルトの名無しさん:02/10/28 17:34
>>193
なるほど・・・・boost::anyに入れたら、取り出す時はboost::anycastを
使うのか。という事は保存状態は、多分void*とかになってるんだろうな。

195 :デフォルトの名無しさん:02/10/28 17:55

>>194
違う。

テンプレートを利用した、エレガントでナイスな仕組みになっている。
一度、ソース読んでみろ。


196 :193:02/10/28 18:20
>>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


197 :デフォルトの名無しさん:02/10/28 18:44
>>195
ソース読んでみました。こんな短いクラスでanyのような機能を実現
できるんですねえ。

>>196
std::cout << reinterpret_cast<std::string*>(var1)->c_str() << std::endl;  // だめ
は大丈夫じゃないかと思うのですが、やっぱりだめなのでしょうか。

198 :デフォルトの名無しさん:02/10/28 21:03
>>197
大丈夫なワケないだろ・・・
スコープとポインタ理解してるか?

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

たまたまうまく動いたからといって
それが正しいコードとは限らない
(むしろこの場合深刻なバグにつながる)

199 :デフォルトの名無しさん:02/10/28 22:29
>>198
すんまそん。{}のブロックに囲まれていたのを見過ごしていました。

#というか勝手に取り去って悩んでいた・・・・

200 :デフォルトの名無しさん:02/10/28 23:29
出た(藁
「いらないと思ったのではずしたら変な動きをします」系
初心者でもっともやっかいなタイプだな

まぁ、そこで終わらなければ上達が速いタイプでもあるんだが
何とかと天才は紙一重

201 :デフォルトの名無しさん:02/10/29 00:06
恐らく消したっつーより、コピペ忘れかと。
言葉を額面通りにしか受けとれんよーでは、まだまだ。
相手の状況も考えて判断下さんとな。

202 :デフォルトの名無しさん:02/10/29 00:30
>>201
文中にある要素をどうやったらコピペし損ねられるんですか(藁
しかも>>199
>#というか勝手に取り去って悩んでいた・・・・
と自発行動であったことを明言してるし

スレ違いsage

203 :デフォルトの名無しさん:02/10/29 00:57
>>200、202
頼むからスレ荒らすな。
せっかくマターリ進行なのに。


204 :デフォルトの名無しさん:02/10/29 01:19
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;
}

205 :デフォルトの名無しさん:02/10/29 02:16
>>204
と、思ってたけど違うの?
ってか、名前からしてそれだけのような
きがするが。
マニュアル読むしかないようなきが。


206 :デフォルトの名無しさん:02/10/29 07:56
>>204
基本的にはそれだけ。
あと、まぁ、 is_subset_of / is_proper_subset_of が存在すること。

207 :デフォルトの名無しさん:02/10/29 19:39
is_subset_of と is_proper_subset_of の違いって、よくわからないんだけど、
is_proper_subset_of の方が真部分集合であるということでしょうか?

boostのhelpを読んでいたらそのように読めるのですが。

208 :デフォルトの名無しさん:02/10/29 20:15
よーしパパtransform_iterator_generatorつかっちゃうぞー。


209 :デフォルトの名無しさん:02/10/29 20:32
VC6では動かなかった。
終了。


210 :デフォルトの名無しさん:02/10/29 20:57
boost::iterator_adaptors結構難しいね。中身も複雑だし。
誰か使ってみた人います?

211 :デフォルトの名無しさん:02/10/29 21:03
indirect_iterator とか transform_ とか filteri_ とか、できあいのものなら便利につかってますが…

ムズカシイネ。



212 :デフォルトの名無しさん:02/10/29 21:03
>>210
これ見た?そんなに難しくはないと思うよ。
http://user.ecc.u-tokyo.ac.jp/~g940455/wp/boost/iterator_adaptors.html

213 :デフォルトの名無しさん:02/10/29 21:10
>>211
indirect_iteratorsとtransform_iteratorsとfilter_iteratorsの3つを覚えて
おけば取り敢えずは人に自慢できそうですね:-)。

>>212
なるほど。boostのhelpは英文なのでいま一つ理解できませんでしたが、
日本語で書いてもらうとやっぱり読みやすいですね。サンクス。

214 :デフォルトの名無しさん:02/10/29 21:26
>>213
クッションとなる関数 (indirect_ ならポインタはずしだけ行ってファンクタを又呼び) を用意したほうがわかりやすいという罠もあるけどね。3日後に意味がわからないことがたまにある。。。。。


215 :デフォルトの名無しさん:02/10/29 21:34
>>214
そうなんですか。boostの中身は確かに標準STLを組み合わせれば実現
できそうなものが多いですね。

indirectのindirectというのは二重にかぶせればいいのかな?

216 :デフォルトの名無しさん:02/10/29 21:41
>>215
それはポインタのポインタをコンテナに入れてるってことか?
それはちょいと設計見直した方がよいような気が。

217 :デフォルトの名無しさん:02/10/29 21:43
>>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;
}

218 :monologue:02/10/29 22:06
boost::bindのおかげで、algorithmから呼び出せるメンバ関数の幅が大きく広がった。
が、それでも引数の微妙な型合わせが必要な場合がある。
で、xxx_iteratorシリーズご登場。

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



219 :デフォルトの名無しさん:02/10/30 04:35
うどん vs そば
http://ex.2ch.net/test/read.cgi/entrance/1035686805/


220 :デフォルトの名無しさん:02/10/30 05:12
みなさんboostの何をつかってらっしゃいますか?
漏れの場合は(最近のソースコードをgrepしてみると)多い順に

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

あとは少しだけfunction, any, format, tuple, scoped_array , ... 数えるとキリがない
という感じです。

221 :デフォルトの名無しさん:02/10/30 08:41
漏れは
 1. scoped_ptr
 2. lambda
 3. noncopyable
 4. date_time
てな感じだな。shared_ptrを使う機会が意外とほとんどない。

222 :デフォルトの名無しさん:02/10/30 08:51
>>220
アンケートか。ほんだら揚げとこか。

1. noncopyable
2. regex
3. format

223 :デフォルトの名無しさん:02/10/30 11:13
1) bind
2) shared_ptr, scoped_ptr
3) prior, next, ref, cref

こまかいのばっかだな〜。
BCC なものでlambda がいけないのが痛いです。


224 : ◆i.HARPeeuc :02/10/30 11:21
1. format
2. regex
3. noncopyable

前は sprintf() をラップする std::string format(const char *fmt, ...)
を書いたもんだけど・・・。

225 : ◆i.HARPeeuc :02/10/30 11:22
ああ、vsprintf() でした。

226 :デフォルトの名無しさん:02/10/30 12:22
1) function
2) ptr_fn
3) shared_ptr

227 :デフォルトの名無しさん:02/10/30 14:58
1. array 固定長で十分な場面は結構少なくない。
2. scoped_ptr
3. regex これを使い始めてからruby/perlはあまり使わなくなった。
4. format printf一族と手が切ることが出来た。

228 :デフォルトの名無しさん:02/10/30 19:03
>>221
スタック上にオブジェクトを置くのではなくscoped_ptrを使うとうれしい
のってどういう時なんですか?
使いどころを激しく教えてホスイです!


229 :デフォルトの名無しさん:02/10/30 20:20
1. scoped_ptr
2. format
3. regex
4. lexical_cast
5. tokenizer

…文字列処理が多いんで。

230 :デフォルトの名無しさん:02/10/30 20:31
>>227
boost::array 知りませんでしたが
http://www.kmonos.net/alang/boost/classes/array.html
いいですね。普通の配列風に初期化できるのはすごくいい。
begin, end, size できて、本物のコンテナに入れなおすのも楽だし…


231 :デフォルトの名無しさん:02/10/30 20:44
#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

232 :デフォルトの名無しさん:02/10/30 20:46
>>231
このスレに質問するのは著しく不適切です。



233 :デフォルトの名無しさん:02/10/30 20:51
>>231
C/C++の宿題なら俺にやらせろ!
http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50

234 :233:02/10/30 20:52
宿題じゃなかった写し

235 :デフォルトの名無しさん:02/10/30 20:56
すいません・・・他の板にカキコさせていただきますm(__)m

236 :デフォルトの名無しさん:02/10/30 21:15
>>228
>>221じゃないけど、
例えばコンストラクタでnewしてデストラクタでdeleteするとき。
そのポインタをscoped_ptrでラップする。
vectorでもいいけど、オーバースペックかな?と思う時があるのと、
const auto_ptrよりも意味が明確に思えるんで。

237 :デフォルトの名無しさん:02/10/30 22:45
>>228
俺が良く使うのは、pimpl イディオム使って実装を隠蔽するケース。

238 :デフォルトの名無しさん:02/10/30 23:09
>>236-237
なるほど、それは確かに便利ですね。ありがとうございました。


239 :デフォルトの名無しさん:02/10/30 23:09
scoped_ptr は所有権を移譲できないというところが潔くて好きだ。
その点、auto_ptr は中途半端。

240 :デフォルトの名無しさん:02/10/30 23:13
>>230
boost::aryって int hoge[] = {1, 2, 3}; の模倣はできないんですかねえ?
固定長配列、私の用途だと要素数を明示したくないことがしばしば。

241 :デフォルトの名無しさん:02/10/30 23:23
>>240
s/ary/array/;
anyと混ざった・・・鬱

242 :デフォルトの名無しさん:02/10/31 15:26
質問れす。
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)
{
...
}

文法的にも問題あるようには見えないんだけど...
なにか文法的に矛盾してしまうこととかあるの?


243 :デフォルトの名無しさん:02/10/31 15:36
>>242
スレ違い。

244 :デフォルトの名無しさん:02/10/31 15:40
>>244
一応next, priorに関連すると思うんだが…


245 :デフォルトの名無しさん:02/10/31 15:58
>>242
右辺値と左辺値を勉強してきてくれ。
++ 演算子は右辺値にしか適用できない。
T* は左辺値。
右辺値を返す関数は型が T*&。

246 :デフォルトの名無しさん:02/10/31 16:24
>>245
レスTHXです。
そっか。考えてみたら、
++246;
と一緒か。
結局スレ違いだった。スマソ...


247 :デフォルトの名無しさん:02/10/31 17:27
>>245
左右が逆じゃありませんこと?
かくいうおれもよく間違えるんだが。

248 :245:02/10/31 17:54
>>247
すまん、逝ってくる・・・。

249 :デフォルトの名無しさん:02/11/01 18:41
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;
}

250 :デフォルトの名無しさん:02/11/01 18:57
どうして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;
}

251 :デフォルトの名無しさん:02/11/01 19:12
250です。

*pos++を**pos++としたら数字は表示されました。
しかしまだソートがうまく行きません。

252 :デフォルトの名無しさん:02/11/01 19:14
・・・・・と思ったらstd::sortをコメントアウトしていました。スマソ。
boost::shared_ptrはstd::auto_ptrと違い、コンテナに入れてソートしても
いいんですよね。

253 :デフォルトの名無しさん:02/11/01 19:15
>>251
VC6SP5 でうまく行っておりまする・・・。

254 :デフォルトの名無しさん:02/11/01 19:24
>>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;
}
}

255 :デフォルトの名無しさん:02/11/01 20:31
>>254
メシ食ってたYO!!!

関数オブジェクトを用いる一番の利点は、コンパイラに処理をインライン展開
させる事らしい。
250 の書き方だと関数ポインタが発生するから、インライン展開できなくなる。
not2() とかも使えないし。
それでもいいなら好きなように。

256 :デフォルトの名無しさん:02/11/01 20:42
>>255
ありがとうございます!!手間を惜しまず関数オブジェクトにします!

257 :デフォルトの名無しさん:02/11/01 23:55
>>245
>++ 演算子は右辺値にしか適用できない。
適用すると右辺値になる、が正解じゃないの?

258 :デフォルトの名無しさん:02/11/02 02:23
boost::lambda使っておられる方いらっしゃいますか?

259 :デフォルトの名無しさん:02/11/02 02:51
つーかboost::lambdaって何に使うの?
あの辺の構文てオナニーにしか見えないんだが。
開発者のジョークだろ。

260 :デフォルトの名無しさん:02/11/02 03:31
lokiの方がオナーニだろ。


261 :デフォルトの名無しさん:02/11/02 07:44
boost::smart_ptrのvector vのソートの時とか
std::sort(v.begin(),v.end(),*_1 < *_2);
と書くほうが 関数オブジェクト用意するより見やすくない??
ifだとか色々使うのはもう潔く関数オブジェクトにしたほうがいいとは思うけど


262 :デフォルトの名無しさん:02/11/02 11:48
compose系のほうがオナーニに感じるなぁ。
意地でもワンライナーな皆さんを応援しちゃうぞ、みたいな。

# 好んで使いますが(w



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

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

composeってcompose_f_gx_hyとか?あれは欲しいよ。二つの文字列
をある基準で比較する時なんかにstd::lexicographical_compareと
組み合わせてよく使っている。

264 :デフォルトの名無しさん:02/11/02 20:17
>>263
composeの奴、書いてみてー。

265 :デフォルトの名無しさん:02/11/02 20:20
>>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;
}

266 :デフォルトの名無しさん:02/11/02 20:22
あっこれ関数オブジェクトにして使ってください。

267 :デフォルトの名無しさん:02/11/02 20:24
こんな感じで。

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)));
}
};

268 :デフォルトの名無しさん:02/11/03 01:46
ptr_fun はイマイチだなぁ。inline化されるような方法はないだろうか。


269 :デフォルトの名無しさん:02/11/03 03:36
>>268
ptr_fun使わないで、関数オブジェクトを呼び出すようにすれば
いいじゃん。その代わり既存のライブラリは使えなくなるが。

270 :デフォルトの名無しさん:02/11/03 10:35
Kylixが最近C++対応したみたいだけど、コンパイラってg++なんだっけ? bccもどきなんだっけ?
後者だったりする場合、boostって使えてますか? 使ってる人感想きぼうん


271 :デフォルトの名無しさん:02/11/03 10:40
ボロボロかも>>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

272 :デフォルトの名無しさん:02/11/03 10:57
GCCでええやん。

273 :デフォルトの名無しさん:02/11/03 14:49
>>270
BCCはboost::lambda、boost::format、boost::array、boost::multi_array以外は
だいたい通るよ。kylixが糞なのだと思う。

274 :デフォルトの名無しさん:02/11/03 16:36
>>271
今 C++ コンパイラ作り直してるから、それが出て完成度が高まるまで
待つしか。

275 :デフォルトの名無しさん:02/11/06 10:34
から揚げ


276 :デフォルトの名無しさん:02/11/06 10:36
商用のプロジェクトでboost使ってライセンス的に問題が生じた経験の
ある人いる?


277 :デフォルトの名無しさん:02/11/06 10:54
>>276
boost使っても、コードの中に"boost"とかいう文字列でも入らなければ、
使った事はまずわからないような気もするが。

テンプレートライブラリはそういう点ズルができそう。

278 :276:02/11/06 11:03
だめぽ>>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


279 :276:02/11/06 11:04
>>277
それに、ライセンスは守るっていう前提でヨロスコ・・


280 :デフォルトの名無しさん:02/11/06 11:11
VC++のReleaseBuildでもやはり若干形跡が残るなぁ。

.?AVbad_any_cast@boost@@
boost::bad_any_cast: failed conversion using boost::any_cast
.?AVuse_count_is_zero@boost@@


281 :デフォルトの名無しさん:02/11/06 11:13
Type_info::name
だよね。きっと。

282 :デフォルトの名無しさん:02/11/06 11:43
長文すまそ。
たとえば 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

283 :続き:02/11/06 11:44
また、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

284 :デフォルトの名無しさん:02/11/06 12:02
ナルホド。じゃぁ、

[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すればいいかな。
ありがとう。


285 :デフォルトの名無しさん:02/11/06 12:15
http://www.boost.org/more/lib_guide.htm#License

基本的にMITとか変形BSD的なライセンスだから、そんなに気にせんでいいと思うが。
・ソースを公開するときにはboostのライセンス表記をそのまま残す
・ドキュメントにはCopyRight表記を残す
で。

286 :デフォルトの名無しさん:02/11/06 17:47
結構面倒だね

287 :デフォルトの名無しさん:02/11/06 18:00
>>284 みたいに、バイナリに文字列を埋め込まないと駄目なの?
コメントじゃいかんの?



288 :デフォルトの名無しさん:02/11/06 19:58
Must not require that the license appear with executables or other binary uses of the library.

289 :デフォルトの名無しさん:02/11/06 20:03
さんきゅす


290 :デフォルトの名無しさん:02/11/06 20:08
ここでいう "license" には copyright notice も含まれるんか?

291 :デフォルトの名無しさん:02/11/06 20:14
・ソースを公開するときにはboostのライセンス表記をそのまま残す
といわれても、普通は#includeするだけだから残すもなにもないとおもうんだけども。。


292 :288:02/11/06 20:20
>>290
俺も貼ってからそれ疑問に思った。

293 :デフォルトの名無しさん:02/11/06 20:52
>>291
ライブラリ部分を改変した場合の話なんじゃ?

294 :デフォルトの名無しさん:02/11/06 20:54
>>293
なる舗道


295 :デフォルトの名無しさん:02/11/07 00:26
まとめると…

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

であってる?


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


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

だと思われ。


297 :デフォルトの名無しさん:02/11/07 11:12
>>296
s/?表記/copyright表記/

化けてしまったよ。


298 :デフォルトの名無しさん:02/11/07 11:13
組み込みでEmbedded-C++ではない、普通のC++を使えているラッキーな人で、
boostも使っている人っています?boost使うことを密かに画策中なんですが。


299 :デフォルトの名無しさん:02/11/07 11:17
boostを使う理由って、単に使ってみたいってだけだろ。

300 :デフォルトの名無しさん:02/11/07 11:23
>>299
おいおい


301 :デフォルトの名無しさん:02/11/07 11:24
>>299
僻むほど難しくないから使ってごらん。
ほんとに。


302 :デフォルトの名無しさん:02/11/07 11:26
>>301
簡単ですがそれが何か?

303 :298:02/11/07 11:28
煽る屑は放置するとして、298にお答え希望〜


304 :デフォルトの名無しさん:02/11/07 11:31
boostを使う理由がないので使っていません。

305 :298:02/11/07 11:36
>>304
僕は便利だと思っているのですが、それはどうやら間違った考えだったので304=299さんのように
boostなどはきっぱりと使うのをやめ、まっとうなコーディングに戻ります。
お導きありがとうございました。

...とでも言って欲しいんでしょうか?意図を量りかねる。


306 :デフォルトの名無しさん:02/11/07 11:39
>>305
> 意図を量りかねる。
それは馬鹿だから。

307 :299:02/11/07 11:48
perl最強!!
perl >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> boost


308 :デフォルトの名無しさん:02/11/07 11:52
>>307
perl厨のせいにしようとしてるよ。
必死だな。よっぽど悔しかったと思われる。

309 :デフォルトの名無しさん:02/11/07 11:58
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());


310 :デフォルトの名無しさん:02/11/07 12:44
皆さんにお伺いしたいのですが boost の利点と欠点を教えてもらえないでしょうか?
面白かつ便利そうなので使ってみようと思うのですが,いまいち情報が少なくて...
コーディングしたときの速度なんかについても教えてほしいです.
やはり,便利と速度は両立しないのでしょうか?ここが特に気になります.

311 :デフォルトの名無しさん:02/11/07 13:01
>>310
bind, iterator_adaptors あたりは、最適化(inline化)しないと遅いかもしれない。
でも、最適化かければぐちゃぐちゃにinline化されてなかったことになる(言い過ぎ)
のであまり気にしてない。

そもそも、boostと一口にいわないで、boostのどれ、と言わないと答えにくいと思われ。


312 :デフォルトの名無しさん:02/11/07 15:17
>>311
どうinline化されるのか見たいんだけど、asm出力見る以外の方法ないかな?
http://public.kitware.com/GCC_XML/HTML/Index.html を使うのはどうかと
妄想しているんだけど使ったことあるひといません?



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

regex++の場合は単に,hppをincludeすればいいというわけにはいかないんですよね?

314 :デフォルトの名無しさん:02/11/07 19:16
>>309
template<typename A> struct iterator_gen :
  boost::indirect_iterator_pair_generator<
    std::vector<A*>::iterator,
    A
  > {};

あと適当にHelper関数作ったほうが便利だと思うけど、
std::iterator_traitsとかboost::type_traits の詳細を忘れた。。。

315 :デフォルトの名無しさん:02/11/10 12:52
教えていただきたいことがあります
vc60にて、"boost/lambda/lambda.hpp" をインクルードしただけで
"fatal error C1001: 内部コンパイラ エラー" というエラーが発生してコンパイルができません。
回避方法をご存知の方がいらっしゃったら教えてください。よろしくお願いします。


316 :デフォルトの名無しさん:02/11/10 13:11
>>315
http://www.boost.org/status/cs-win32.html
無理そう。。。。

317 :デフォルトの名無しさん:02/11/10 14:09
AnSi C++対応を目指すことすらしないコンパイラに何かを期待しても

無   駄   で   す

318 :rubyist@カラアゲうまうま:02/11/10 14:44
ぶぁか

319 :デフォルトの名無しさん:02/11/10 15:10
http://www.zdnet.co.jp/news/0211/09/nebt_08.html
「2003年初頭リリースのMicrosoft C++コンパイラ新版では
ISO C++標準に対して98%近い準拠になる」

残り2%の非対応部分にboostが引っ掛かってしまう悪寒

320 :デフォルトの名無しさん:02/11/10 15:20
そのページにあるリンクにこんな記事が。。。’
http://www.zdnet.co.jp/news/0211/09/nebt_03.html

こんな肩書きの仕事があるんだねえ。

321 :デフォルトの名無しさん:02/11/10 15:23
ちなみに98パーセントまで対応したというのなら、
そこりの2パーセントがなんなのかを列挙して欲しいところですな。

322 :デフォルトの名無しさん:02/11/10 17:03
確か、templateのexportには対応せんとどこかで言ってた気がした。

323 :デフォルトの名無しさん:02/11/10 18:00
今、http://www.boost.org/libs/smart_ptr/shared_ptr.htm
読んでるんだが、ここに出てくる "intrusive counting" とか
"intrusive-counted smart pointer" の意味がよく分かりません。
誰か教えてくだされ。

324 :デフォルトの名無しさん:02/11/10 18:09
>>323
http://www.kmonos.net/alang/boost/classes/intrusive_ptr.html
でも読むべし。

325 :デフォルトの名無しさん:02/11/10 19:03
なるほど。サンクス。
つまり、参照カウントであれリンクリストであれ、管理される対象としての
オブジェクトの中身をいじるようなのがintrusive (侵入的) と呼ばれるわけだね。

326 :デフォルトの名無しさん:02/11/10 23:58
どなたかdate-timeライブラリ使われた方いらっしゃいます?

327 :デフォルトの名無しさん:02/11/11 19:33
exportサポートしてる処理系なんてほとんどないだろ。二つ、三つくらいか?

328 :デフォルトの名無しさん:02/11/11 21:02
>>327
存在することの方が驚きだ(ぉぃ 具体的に、どのあたりの処理系が
サポートしてるんでしょう? ちょっとドキュメント読んでみたいぞ。

329 :デフォルトの名無しさん:02/11/11 22:04
Comeau C++ はサポートしてるらしいね。漏れは他はしらないや。

330 :デフォルトの名無しさん:02/11/12 01:18
VC60 にて Lambda が使えないことについての件、了解しました。
どうもありがとうございました。

331 :デフォルトの名無しさん:02/11/12 02:04
Lambda をランバダと呼んでしまうのはダメですか?

332 :デフォルトの名無しさん:02/11/12 04:12
VisualScheme.netではランバダ許可。

333 :デフォルトの名無しさん:02/11/12 05:14
Lambda って何で Lambda なの?
Λ ・・・モナーの耳、でもないし・・・。

334 :デフォルトの名無しさん:02/11/12 18:47
λ(x)≡x^2+2*x+1

335 :デフォルトの名無しさん:02/11/12 18:54
あー違った…。

modulo ≡λ(x, y : N→N) x%y

336 :333:02/11/12 19:49
スマン、そっちじゃなくて、boost::lambda。

337 :デフォルトの名無しさん:02/11/12 21:32
だから、

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

でも、λ算法がなぜλなのかは知りませんです。

338 :デフォルトの名無しさん:02/11/14 16:31
亀レス気味だが。

>>276 - >>297
Boostのライセンスは、cppllの、
ttp://www.tietew.jp/cppll/archive/5773
のスレッドが参考になります。

339 :由来:02/11/14 18:54
   コンナノワカンネェヨ…

     __λ...________
     {
     }
日本海{

340 :デフォルトの名無しさん:02/11/15 10:11
preprocessorメタプログラミングは面白いんだけど、
これってやっぱり仕事で使うのはヤバイ?保守性下がる?
コードは小さくなりそうなんだけど。。。

341 :デフォルトの名無しさん:02/11/15 10:49
面白いけど、これを実務に使うのはどうかと…。
強力だし、面白いから癖になって乱用しそうなヨカソ

342 :デフォルトの名無しさん:02/11/15 12:12
BOOST_PP_LIST_*は凄いね。
Typelistには前に驚いたけど、これにもびっくり。
Cをそれほど深くやっていたわけじゃないので正直驚いた。

マクロプログラミングマンセー!!!

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

でもやっぱりこれはライブラリ内のような特殊な場所だけで使うべきものかな。
可読性も重要な要素だし。。。

344 :デフォルトの名無しさん:02/11/17 15:33
いろいろとやってみたけど、使えるデータ型はリストだけだね。
リストはまともに動くとして、配列は、SIZE(要素数),
ELEM(要素取得),DATA(そのままの値)の三種類のマクロしかないし、
タプルに至ってはかなり動作がおかしい。汗
#define LIST (a, b, c)
BOOST_PP_LIST_TO_TUPLE(LIST)
でTUPLEを作成すると
⇒ ( a , b , c )
と余分なスペースが入ってしまいます。
これがBOOST_PP_TUPLE_*マクロにおいては致命的だったりします。
使おうと思ってるひとは要注意です。

boost内部で結構使いまくってるから、それ見ればいいんだろうけど、
そこまでやるような元気はいまのところはないしなあ。。。

345 :デフォルトの名無しさん:02/11/17 16:08
時間の無駄

346 :デフォルトの名無しさん:02/11/17 16:22
>>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)))


347 :デフォルトの名無しさん:02/11/17 16:47
>>346
いや、LISTの件は打ち間違い。訂正ね。

>( a , b , c )
だからこれがうまいこと処理されないのよ。
これから無駄なスペースを取り除くのはREPEATを使ってやるしかなさそうだけど、
今考え中。

348 :デフォルトの名無しさん:02/11/17 16:52
あ、ちなみにBOOST_PP_TUPLE_ELEMだけはスペースに関係なくちゃんと
評価されます。

349 :デフォルトの名無しさん:02/11/17 17:03
おれの頭がおかしかったかも。。。

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

失礼しました。m(  )m

350 :デフォルトの名無しさん:02/11/17 18:38
んー、やっぱり 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

351 :デフォルトの名無しさん:02/11/17 19:42
>>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

352 :デフォルトの名無しさん:02/11/17 20:05
>>351
素晴らしいです。thanx!!!

353 :デフォルトの名無しさん:02/11/17 21:06
#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さん、激しく感謝! */

354 :デフォルトの名無しさん:02/11/17 21:16
#include <boost/preprocessor/list/size.hpp>
#include <boost/preprocessor/list/to_tuple.hpp>
抜けてた

おれもう、ダメぽ

355 :ヒキコモラ:02/11/18 15:28
boostのソースすげー勉強になる!

356 :デフォルトの名無しさん:02/11/21 01:54
激しくアホな質問していいでしょうか?

他の人と共同でプログラムを作成するときに、
・AさんはBoostをインストールしている
・Bさんはインストールしていない
こういう状況で、AさんのコードをBoostのインストール無しで
Bさんの環境で使用することはできるのでしょうか?

357 :デフォルトの名無しさん:02/11/21 01:56
>>356
もちろんできません。

358 :デフォルトの名無しさん:02/11/21 01:57
ただしAさんのコードにboostが使ってなければOK。

359 :デフォルトの名無しさん:02/11/21 01:57
regexとgraphとthreadはリンクが必要だけど
あとはただのテンプレートライブラリです。

360 :デフォルトの名無しさん:02/11/21 02:03
コンパイル済みのオブジェクトファイルなら使えるんではないかい?

361 :デフォルトの名無しさん:02/11/21 02:07
>>359-360
それをBさんのPCに設置するのを「インストール」とは言わんのか

362 :デフォルトの名無しさん:02/11/21 02:08
>>360
それかLIBにするか。でもexportキーワードをサポートしてないコンパイラだと
そもそもboostをLIBにすることはできん。

363 :デフォルトの名無しさん:02/11/21 09:40
>>361
実行ファイルに埋め込まれたものを設置する場合
「Aさんのプログラムをインストール」と言うことはあっても
「Boostをインストール」とは普通言いません。
>>359にあるライブラリを使わなければすべてインライン展開
されますから別途ランタイムも必要ありません。

364 :デフォルトの名無しさん:02/11/21 16:57
>>363
コンパイル済みプログラムではなくてコードと書いてありますが何か?

365 :デフォルトの名無しさん:02/11/21 18:34
要は釣りです。みなさん以後、356の質問は無視ということで

366 :デフォルトの名無しさん:02/11/21 19:14
365=363 可哀想に・・・

367 :356:02/11/23 01:23
釣ったりするつもりじゃなかったんですけどね・・・
でも、なんとなくわかりました。
ようするに、大抵のやつは、boost以下のディレクトリを
そのままコピーしちゃえば使えるってわけですね。


368 :デフォルトの名無しさん:02/11/30 11:44
新しいスレが出来たからこのまま落とした方がよいのでしょうか。

369 :デフォルトの名無しさん:02/11/30 12:41
良くない
きちんと消化してから移行

370 :デフォルトの名無しさん:02/11/30 12:59
この勢いだと消化されるのは来年の春ぐらいだな・・・

371 :デフォルトの名無しさん:02/11/30 13:14
あちらのスレにはアンチboostがいるみたいだからやりにくいや。やっぱり
こちらで細々とやっていきます。

372 :デフォルトの名無しさん:02/12/05 12:47
ネタ期待age

373 :デフォルトの名無しさん:02/12/05 15:31
boost::mplとLokiのタイプリストはどっちを使えばいいのでしょう?
Lokiの方が実装が綺麗なんですが、boostは機能が多い。またSTLに
似せて作られているので使いはじめるのは割と簡単。また半公式的
ライブラリという形でサポートも一応続けられるだろう。

みなさんのお考えを聞かせて。

374 :名無しさん@Emacs:02/12/05 23:00
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です。

375 :デフォルトの名無しさん:02/12/06 00:58
>>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.

だそうな。

376 :デフォルトの名無しさん:02/12/06 12:12
>>375
どうもありがとう。mplが非公開な理由が分りました。
しばらくはその実装を見ながらゆっくりじっくり勉強する方がよさそうですね。

377 :デフォルトの名無しさん:02/12/07 04:31
hackあげ

378 :カラアゲ:02/12/07 15:18
みんぷるあげ

379 :デフォルトの名無しさん:02/12/07 21:13
boost::mpl::vector,boost::mpl::listの最大サイズが10に設定してあるのって
なにか理由があるのかな?

380 :デフォルトの名無しさん:02/12/08 13:55
閑古鳥age

381 :デフォルトの名無しさん:02/12/08 17:37
boost/libsの下のテストコードを見てれば大体使い方分るね。

382 :デフォルトの名無しさん:02/12/09 21:03
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の基本的な使い方が悪いとは思うのですが、どこをどうしたらいいのやら
全く分りません。助けてください。

383 :デフォルトの名無しさん:02/12/09 21:52
>>382
error message はどんなのが出とるんじゃい。
-L で boost_thread の場所をし忘れてるだけとかじゃあるまいな。

384 :デフォルトの名無しさん:02/12/09 21:53
× 場所をし忘れてる
○ 場所を指定し忘れてる

イッテクル

385 :デフォルトの名無しさん:02/12/09 22:15
>>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)':

386 :デフォルトの名無しさん:02/12/10 00:34
>>385
libboost_thread.aはどこにあったファイルをコピーした?
libs/thread/build/bin/libboost_thread.lib/gcc/release/runtime-link-static/threading-multi
にあった奴をlibにコピーして使うとうまくリンクできて実行できました。

387 :デフォルトの名無しさん:02/12/10 00:44
>>386
レスありがとうございます。
えーと、Debianなのでapt-getしたまでです。
Debian/unstableのboostは1.29です。
もしかしたらバイナリの互換性がないg++-3.1で
ビルドされているのかもしれないですね。
それもありえるとは思うのですが、でもgcc3は
3.2に積極的に移行を進めているわけだし
それもなさそうな・・・んー

388 :デフォルトの名無しさん:02/12/10 00:49
ビルドはbjamを使ってやったよね。

389 :名無しさん@Emacs:02/12/10 04:54
>>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

もう分からない。。。これ以上はスレ違いなのでよそへ逝きます

390 :デフォルトの名無しさん:02/12/10 12:46
>>389
もしかしてビルド時に何か失敗してるかも。

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

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

bjam[enter]

と入力するだけで、gccベースの場合は自動的にコンパイルしてくれます。

391 :デフォルトの名無しさん:02/12/10 15:38
(゜∀゜)マジで?
やってみよう!

392 :デフォルトの名無しさん:02/12/10 19:42
>>386=388=390
382氏はDebian使ってるってんだからわざわざビルドさせんでも…
という気がする。

393 :デフォルトの名無しさん:02/12/10 20:50
Debianって何?俺はWindowsしか知らないのでわからないのだが・・・・

ソースをビルドしなくても使えるの?

394 :デフォルトの名無しさん:02/12/10 22:14
>393
Linux のディストリビューションの一つ。

> ソースをビルドしなくても使えるの?
何か激しく勘違いしてると思われ。

395 :デフォルトの名無しさん:02/12/10 22:40
>>394
そうなんですか?
>わざわざビルドせんでも・・・
と書いてあったのでてっきりそうなのかと。

396 :デフォルトの名無しさん:02/12/10 23:23
>>393
ビルド済みのが自動で落としてインストールできるようにパッケージ化されてんの。
http://packages.debian.org/unstable/devel/libboost-dev.html

ぶっちゃけ、WindowsUpdate みたいなものっつーか。

397 :デフォルトの名無しさん:02/12/10 23:41
>>396
それ(・∀・)イイ!!ぜひWindowsにも実装して欲しいものだ。
と言ってもビルドはboostに限って言えば非常に簡単なのだが。

398 :デフォルトの名無しさん:02/12/10 23:42
しかし、Debian使ってリンクが通らないという事は、一度bjamでビルドしてリンク
して試される事を強くオススメしたい。

出来るものは同じかもしれないが、もしかしたら違うかもしれないし。

399 :デフォルトの名無しさん:02/12/11 22:23
関数の数を無闇に増やしたくないとか、ローカル変数を渡すのが面倒とかいう場合は
GoSub よく使うけど。
GoTo と一緒で、使い様って事でしょ。

400 :399:02/12/11 22:23
ごめん、VB スレの誤爆。

401 :デフォルトの名無しさん:02/12/19 11:40
GNU的には他のライセンスのヘッダが入ることってどうなの?
gccなんかでもcontribというディレクトリに違うライセンスの
ファイルを嫌そうに入れてあるけど。

402 :デフォルトの名無しさん:02/12/19 11:52
>>401
ここで訊くな。

403 :デフォルトの名無しさん:02/12/22 21:05
BOOST_NO_EXCEPTIONSのサポートがちゅーとはんぱだねぇage

404 :デフォルトの名無しさん:02/12/24 11:54

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

wstring str = lexical_cast< wstring >( x ); でコンパイルエラーが出たときは涙でたよ

405 :デフォルトの名無しさん:02/12/25 09:36
>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 より)

406 :デフォルトの名無しさん:02/12/25 13:48
>>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");

とか出来るようにしてほしい。

407 :デフォルトの名無しさん:02/12/25 22:15
>>406
んな事したらchar→wcharの変換が…

408 :デフォルトの名無しさん:02/12/25 22:36
といってもlexcal_cast.hppはもう一年近く放置されてるよなあ

409 :デフォルトの名無しさん:02/12/26 17:53
自分で書いてまえ

410 :デフォルトの名無しさん:02/12/27 09:53
string と wstring って相互代入できれば (・∀・)イイ!! のに

411 :デフォルトの名無しさん:02/12/30 02:55
C++スレでこのようなものを発見したのだが、これは一体....?

http://pc3.2ch.net/test/read.cgi/tech/1038031395/961

412 :デフォルトの名無しさん:02/12/30 11:51
コンパイラのバグじゃないの?

413 :デフォルトの名無しさん:02/12/31 03:49
ちょい保守

414 :デフォルトの名無しさん:03/01/05 23:46
ほすー

415 :デフォルトの名無しさん:03/01/07 11:07
会社での仕事で汚いマクロが作業効率を落していると思って、
BOOST_PP_*の使用を強制させようとしたのだけど、どうも周りから
同意が得られませんでした。みなさんのところはどうですか?
こういうのってみんなで一斉に始めないとダメだと思うのだけど。

416 :デフォルトの名無しさん:03/01/07 15:36
まずそのマクロを多用しようとする姿勢を何とかすれ。

417 :デフォルトの名無しさん:03/01/07 22:35
まずは enum、const変数とinline関数辺りから始めた方が…

418 :デフォルトの名無しさん:03/01/07 23:35
もしかして漏れってそうとうドキュソなところで仕事してる?

419 :デフォルトの名無しさん:03/01/07 23:40
もしかしなくても

420 :デフォルトの名無しさん:03/01/08 00:14
>418
上がしっかりしてるだけまだマシ。
漏れの所なんて…


421 :IP記録実験:03/01/08 21:38
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を提出することがある。

422 :デフォルトの名無しさん:03/01/08 23:45
age 

423 :デフォルトの名無しさん:03/01/09 00:16
(;´Д`)ハァハァ

424 :デフォルトの名無しさん:03/01/09 00:29
ぎゃーIPがとられたー

425 :デフォルトの名無しさん:03/01/09 00:49
転送量倍になっても平気なの?

426 :デフォルトの名無しさん:03/01/09 00:54
>258
恒久保存なんて無理でしょ。

427 :デフォルトの名無しさん:03/01/09 01:14
年賀状来ましたか?

428 :デフォルトの名無しさん:03/01/09 01:28
みゆたんにボクチンのIP教えてもいいよ♥

429 :IP記録実験:03/01/09 01:52
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を提出することがある。

430 :デフォルトの名無しさん:03/01/09 02:02
          l≡l  . l≡l
          |:::└┬┘:::|
          |:::┌┴┐:::|
/ ̄ ̄\   ノ::::::丶 /:::::::\.   / ̄ ̄\
| 記念 .> (::(,,゚Д゚)(゚ー゚*)::) < パピコ .|
\__/   |:∪::::| |::::∪::|.   \__/
       〜((((:::::))(((:::::)))〜
         ∪ ̄U U ̄∪

431 :デフォルトの名無しさん:03/01/09 03:34
まあ俺みたいにどうせ2chでうんこうんことかしないよとか書いたり
それ以外の時間は実況板にいる実況厨には無関係な話な訳で
ip?どれだけでも取ったってください
無責任発言を繰り返す馬鹿や殺人予告するど阿呆が減っていいんじゃないっすか?

432 :デフォルトの名無しさん:03/01/09 12:12
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をシめて何か今までと変わることってあるのでしょうか?
・今までより、肉棒は硬度を増していく。
・裁判所や警察からの舌技があった場合にはサーモンピンクの亀頭が徐々に姿を現すことがある。

433 :デフォルトの名無しさん:03/01/09 12:28
>>124
イスラエルのひろゆこ---インドのよしゆき---中国のひろゆこ---北欧のひろゆこ---カナダのひろゆこ---エジプトのひろゆこ
---自宅のひろゆこ
に聞けば一発で分かります。

434 :デフォルトの名無しさん:03/01/09 16:38
age  

435 :デフォルトの名無しさん:03/01/09 17:17
======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
────────────────────────────

436 :デフォルトの名無しさん:03/01/09 18:37
マルチ氏ね

437 :デフォルトの名無しさん:03/01/09 18:41
開くスレの最後にすべてに書かれてるから
デジャヴか鯖がいかれたのかとオモタヨ...


438 :デフォルトの名無しさん:03/01/09 23:08
テストカキコミ

439 :デフォルトの名無しさん:03/01/10 00:59
>>595
奇遇だね

440 :デフォルトの名無しさん:03/01/10 09:38
>>91 結局ひろゆきがいつの時点で消していれば、賠償責任を逃れられたのでしょうかね?

441 :デフォルトの名無しさん:03/01/10 09:59
>>91 結局ひろゆきがいつの時点で消していれば、賠償責任を逃れられたのでしょうかね?

442 :デフォルトの名無しさん:03/01/10 10:17
>>93
訴状が来た時点ではまだ削除しなくておkなんじゃないの?

443 :デフォルトの名無しさん:03/01/10 10:50
>>443
だからこそ荒らされたわけだよね。
犯人にそれ以上の請求をすべき。

444 :デフォルトの名無しさん:03/01/10 11:32
あまりにもくだらねー理由だと何百もでないだろ

445 :デフォルトの名無しさん:03/01/10 12:01
>>587
ひろゆきが出てきたらもの凄い勢いで1000まで逝ってしまった・・・。

446 :デフォルトの名無しさん:03/01/10 12:52
>>535
http://www.2ch.net/
トップにあるじゃねーか

447 :デフォルトの名無しさん:03/01/10 15:17

チャンスですね。。奪還!

448 :デフォルトの名無しさん:03/01/10 16:44
   /⌒ヽ 
  /  ´_ゝ`)  IP太郎です。
  |    /   
  | /| |   
  // | |  
 U  .U


449 :デフォルトの名無しさん:03/01/10 20:52
age

450 :デフォルトの名無しさん:03/01/10 22:35
相手のIP教えていただくには
どういった手続きをとればいいんですかね?

451 :デフォルトの名無しさん:03/01/10 22:43
http://teri.2ch.net/entrance/kako/969/969987350.html
こんなコピペ達も怖くて貼れなくなるわけで……。

452 :デフォルトの名無しさん:03/01/11 00:03
華麗なうんこレスで引き続きお楽しみください

453 :デフォルトの名無しさん:03/01/11 00:10
ぼうやだからさ

454 :デフォルトの名無しさん:03/01/11 09:32
暗号化アルゴリズムの一種でしょ

455 :デフォルトの名無しさん:03/01/11 09:33

どんなスレでも糞スレの雰囲気を漂わせるからねぇ。
ある意味すげーけど。

456 :デフォルトの名無しさん:03/01/11 10:07
======2==C==H======================================================

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

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

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

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

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

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

457 :デフォルトの名無しさん:03/01/11 11:00
WinnyのBBS機能に期待が広がったりしたりしなかったり。

458 :デフォルトの名無しさん:03/01/11 11:30
そもそも管理者が素直に削除してれば良かったんだろ?
会社から削除依頼あったのに、無視してる時点で社会人失格!
2ちゃん失格!
で、今更なにを・・・

459 :デフォルトの名無しさん:03/01/11 12:31
確か、一時ID検索サイトがあったよね。
日付とIDを入力すると、IPアドレスの上位3組だか、下位3組だかが
表示されるやつ。
全パターンをデータベース化して持ってたらしいけど、
ヒマなやつもいるもんだと驚愕したものです。

460 :デフォルトの名無しさん:03/01/11 13:04
レス付ける人間が法律に違反しなければ
IP取られても問題ないかと・・・

461 :デフォルトの名無しさん:03/01/11 14:32
次のバージョンで MPL が正式に取り込まれるっぽいな。

462 :デフォルトの名無しさん:03/01/11 15:13
Gurtovoyさんおつかれさまやね

463 :デフォルトの名無しさん:03/01/11 15:35
【予告】小学生の登校を狙って・・・
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のほうがいいんですが、、

464 :デフォルトの名無しさん:03/01/11 15:42
2chの解説本が出てました。たわいないです。

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

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

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

監修・2ちゃんねる
発行・マイウェイ出版株式会社
発行日・2003年2月20日
値段・1429円

465 :デフォルトの名無しさん:03/01/11 23:44
(・∀・)チューボーですよ!

466 :デフォルトの名無しさん:03/01/11 23:55
ねぇ、6億超えちゃったんだし
どこで見えるのか教えてちょーだいよ。

467 :デフォルトの名無しさん:03/01/12 02:33
778

468 :デフォルトの名無しさん:03/01/12 02:38
もらい泣き

469 :デフォルトの名無しさん:03/01/12 20:53
荒らしキタ━━━━(゚∀゚)━━━━!!!!!!

470 :デフォルトの名無しさん:03/01/12 20:56
>しかし その反証の場が 2ch でなくてはならないというのは ? です。

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

後段はいまいち意味不明。発信者の特定は第三者機関からの要請があってから行えば十分な筈ですが?

471 :デフォルトの名無しさん:03/01/12 21:05
なんで書けないのかわからないの!

472 :山崎渉:03/01/13 18:42
(^^)

473 :デフォルトの名無しさん:03/01/13 22:43
んじゃファーストとセカンドの立場がない

474 :デフォルトの名無しさん:03/01/15 12:08
メインのリポジトリからupdate中に寝ちゃった。
起きたらPCサスペンドしてて、表示されてた最後のメッセージ見たら
「接続をリセットされました」。
で、もっかいupdateしようとしたら、
サーバーが落ちてるっぽい。

もしかして漏れのせいでつか?

475 :デフォルトの名無しさん:03/01/15 16:44
あーあー

476 :デフォルトの名無しさん:03/01/19 07:32
しっかしみなさん変わったコンパイラ使ってるねえ。
今度はCrayC++だってよ。NetBSDの移植みたいに、
こういうのにリソース食われてライブラリの開発が遅れてるんだな。

477 :デフォルトの名無しさん:03/01/20 04:51
漏れのコンパイラはネイティブなぬるぽを扱う事ができます

478 :デフォルトの名無しさん:03/01/20 10:05
タバンニメイワクヲカケルナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人   Ψ
    / )    <  >__Λ∩
  _/し' //. V*゚д゚)/     
 (_フ彡        / ←>>477

479 :デフォルトの名無しさん:03/01/21 13:16
Boost使ってる場合、Boost使ってますよって著作権表示しないと駄目?

480 :デフォルトの名無しさん:03/01/22 00:47
http://www.amazon.com/exec/obidos/ASIN/0201734842/
boost/preprocessorのMensonidesさんハケーン

481 :474:03/01/23 13:33
漏れのせいじゃなかった。

482 :山崎渉:03/01/23 20:11
(^^)

483 :デフォルトの名無しさん:03/01/28 16:37
http://www.tietew.jp/cppll/archive/6877
boostのドキュメントの日本語訳に関するプロジェクトが
始まってます。使っているOSやコンパイラの垣根を越えて
共同作業というのもたまにはいいのではないでしょうか。

484 :デフォルトの名無しさん:03/01/31 16:52
boost::tokenizerにstd::istream_iteratorをつっこんだコードが、
gcc3.2、bcc5.5ではコンパイル通らないぞ( ゚Д゚)ゴルァ!と思ってたら
VC6で通ってしまった。

世の中わからんもんだなぁ。。。


485 :デフォルトの名無しさん:03/02/02 03:12
spirit キタ━━━━(゚∀゚)━━━━ッ!!

486 :デフォルトの名無しさん:03/02/02 03:33
spirit.hpp一つしかこないよ

487 :デフォルトの名無しさん:03/02/02 21:59
いちおー>>483のプロジェクトに参加してるんだけど、
英語力が激しくなくて巧く訳せん!!鬱だ。

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

ということで、このスレは、今後三日間書き込みがない場合、Boost-jpのグチスレになります。

488 :デフォルトの名無しさん:03/02/03 00:02
>>487
似たような書き込みをしてみようかと考えなかったわけじゃないけど、おいらぢゃないよ〜。

・・・まぁ、誰かは知らんが、困ったらあの翻訳者MLででも訊いて、がんばっちくれ。

489 :デフォルトの名無しさん:03/02/03 01:29
ワラタ

490 :デフォルトの名無しさん:03/02/03 02:08
かくしてグチスレへの道は閉ざされたのであった。チャンチャン

491 :デフォルトの名無しさん:03/02/04 23:43
std::auto_ptrの配列版ってBoostにある?

492 :デフォルトの名無しさん:03/02/05 00:27
>>491
たしか無い・・・と思った・・・
まぁ auto_ptr コピって
delete => delete []
にするだけでいい・・・んじゃないかな、たぶん・・・

493 :デフォルトの名無しさん:03/02/05 00:40
>>492
Boostにすら無いとは・・・。

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

まだある鴨

494 :デフォルトの名無しさん:03/02/05 02:56
>>491
「std::auto_ptrの配列版」ならできて、
「std::vector」だとできないことって、なんかある?

495 :デフォルトの名無しさん:03/02/05 05:28
>>491
boost::scoped_array ならあるが、代入はできんな。

496 :デフォルトの名無しさん:03/02/11 02:23
Jamfileってなぁに?

497 :デフォルトの名無しさん:03/02/11 02:24
>>496
MakefileのJam版だと思われ


498 :デフォルトの名無しさん:03/02/11 04:04
JamっていうMakeみたいなツールがあるのですか?
聞いたこと無いけど。

499 :497:03/02/11 04:10
>>498
http://www.boost.org/tools/build/index.html
ここでも読んどけや


500 :497:03/02/11 04:12
間違えたこっちか
http://www.boost.org/tools/build/build_system.htm

501 :デフォルトの名無しさん:03/02/11 04:28
>>491
以下で(不格好だが)なんとかなるかも、と思う。

std::auto_ptr<std::vector<int> > p;
...
std::cout << p.get()[1] << std::endl;

502 :デフォルトの名無しさん:03/02/11 04:29
>>497
おぉう、素早い。
なるほど、Perforce Jam → Boot.Jam ですな。
なんだかmakeより使えそうなんだけど、日本語の情報はあんまりネェですな。
英語ドキュメントだけでしばらくがんばってみます。

503 :デフォルトの名無しさん:03/02/11 04:30
>>501
きゃはは、なんだそりゃ?素直にvector使えって。

504 :デフォルトの名無しさん:03/02/11 05:18
>>503
501に言ってもしょうがないだろう。

505 :デフォルトの名無しさん:03/02/12 01:11
auto_ptrってコンテナの要素として使えるの?
C++3版に書いてある標準ライブラリの場合は使うための要件を満たさないとあるけど・・・

506 :デフォルトの名無しさん:03/02/12 01:43
>>505
残念ながら、使うための要件を満たさない。

507 :デフォルトの名無しさん:03/02/12 01:45
じゃあ>>503はただの煽り?

508 :デフォルトの名無しさん:03/02/12 01:49
>>507
std::auto_ptr<std::vector<int> >
↑これが「auto_ptrをコンテナの要素に使えるか」と関係あるのか?

509 :デフォルトの名無しさん:03/02/12 01:57
ん?それは>>501が言ってることで、
>>503は「素直にvectorを使え」と言ってるから
vectorの要素に使えって意味だと思ったんだけど。

510 :デフォルトの名無しさん:03/02/12 01:59
std::auto_ptr<std::vector<int> > を使うぐらいなら、vector<int>をそのまま使えって事だろ。

511 :デフォルトの名無しさん:03/02/12 02:02
あ、そういうことか・・・
>>491の「auto_ptrの配列版」ばかりに目が行ってたよ・・・

512 :デフォルトの名無しさん:03/02/13 00:56
borland の5.5.1で試しに使ってみたら大量の「インライン展開できませんですた」ワーニングに鬱。
しかも主目的だったuBlasのサンプルプログラムが走らなかった罠。
該当ファイルをincludeする意外に必要な事ってありますか?


513 :デフォルトの名無しさん:03/02/13 01:04
>>512
http://www.boost.org/status/cs-win32.html
これ見てコンパイラそのものを検討汁。

514 :名無しさん:03/02/14 11:31
boostて、kylix3でもつかえる?


515 :デフォルトの名無しさん:03/02/14 20:30
>>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

516 :デフォルトの名無しさん:03/02/15 01:19
>513
uBlasのサンプルは"pass"だから逝けると思ったのだけど……
何でだろう……もちっとあがいてみます

517 :そういえば:03/02/16 21:35
1.30.0 そろそろじゃない?

518 :デフォルトの名無しさん:03/02/17 17:53
>>491
あったにはあったけど。
http://groups.yahoo.com/group/boost/files/auto_array_ptr/
中は自分で確かめれ。

519 :面白そ:03/02/19 01:49
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
}


520 :デフォルトの名無しさん:03/02/21 00:14
Boostの日本語化プロジェクトに参加中。
自分が使うためだけに訳すのなら徹底的に手抜きするが、
これはそうはいかない。何人もの人が読むはずだから。
頑張ろう。他にもプロジェクト参加中の方書き込みキボン。

521 :デフォルトの名無しさん:03/02/21 01:29
>>520
>>487-488

つーかさ、俺もプロジェクトは応援はするが、
おしゃべりなら cppll でやれや。

522 :デフォルトの名無しさん:03/02/21 14:11
>>521
cppllでは最近BDTの話題がなくなってる。
皆翻訳が大変な事に気づいて必死なんだろう。
Boostjp-devメーリングリストもcvsのアップデート情報
だけです。

523 :デフォルトの名無しさん:03/02/22 23:02
>>522
妙な直訳和訳が多いね。参加してないから偉そうなこと言えないけど。

524 :デフォルトの名無しさん:03/02/22 23:14
>>523
直訳が一番安全なのですよ。内容をよく把握してないのに変に
意訳すると、意味が変わってしまい大変な事に。

525 :デフォルトの名無しさん:03/02/22 23:18
>>524
内容をよく把握してない直訳には今までさんざんひどい目に遭わされたぞ。
カンベンしてくれ。

526 :デフォルトの名無しさん:03/02/23 01:19
>>525
文脈によって意味が変わる単語も多いしね。
んで結局、原文の該当個所を調べて(和英翻訳)
辞書を引き直す(英和翻訳)という2度手間になってしまうし。

527 :デフォルトの名無しさん:03/02/23 10:09
>>525
それは最悪。訳文が意味不明な上に間違った知識まで植え付けられ、
読まない方がマシだね。
>>526
英語は初歩的な単語ほど文脈によってコロコロ意味が変わるから
ややこしいね。

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

#予想通りこのスレはBoost-jpのグチスレになりました。

528 :デフォルトの名無しさん:03/02/23 22:23
そんな面倒なことするなら、
最初から全部自分で訳した方が速い気がするが・・・

529 :デフォルトの名無しさん:03/02/24 14:27
英語のまま読めばええやん。
たとえ最良の翻訳でも、所詮は劣化コピー。

530 :デフォルトの名無しさん:03/02/24 14:35
>>529
1行目はその通りだが
2行目はそりゃ、文学系の文書に使うセリフだろ

531 :デフォルトの名無しさん:03/02/24 14:38
>>529
そりゃそうだが、日本語訳をする事により、英語が苦手でBoost
をあまり使いこなせていない潜在的Boostユーザーが増えるの
ではないかという期待があるからこそ訳が頑張れる。

532 :487:03/02/24 19:02
見ないうちに本当にグチスレになっちまいやがった…。。。

533 :490:03/02/24 19:19
閉ざされたハズだったのに…

534 :デフォルトの名無しさん:03/02/24 21:16
ぬるぽのご加護がありますように。

535 :デフォルトの名無しさん:03/02/24 21:29
Boostハソレトハムエンダゼ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>534

536 :デフォルトの名無しさん:03/02/24 22:54
保守ついでに独り言。
boost::variant なかなか面白そうだな。

537 :デフォルトの名無しさん:03/02/24 23:17
>>529
そんなチミは
哲学・思想書を読むことがあったら
古代ギリシア語やラテン語で読むんだね


538 :529ではないし:03/02/24 23:52
俺は翻訳には翻訳の良いところがあると思うけれど、それはそれとして、

>>537
古代ギリシア語やラテン語で書かれた哲学・思想に
興味があるなら、そりゃ当然だろ?

539 :デフォルトの名無しさん:03/02/24 23:56
>>536
それは1.30かい?

540 :デフォルトの名無しさん:03/02/25 00:05
>>538
チミはどうして古代ギリシア語やラテン語を知る前から、
その哲学や思想に興味をもつことができるんだい?

541 :デフォルトの名無しさん:03/02/25 00:09
>>538
しかしBoostのドキュメントが英語で書かれていると言っても、
BoostそのものはC++で書かれているので、別に英語を知らなく
てもよいじゃない?

542 :デフォルトの名無しさん:03/02/25 00:13
わざわざこのスレで話す内容かよ・・・<英語云々

543 :デフォルトの名無しさん:03/02/25 00:21
Boost-jpを語らずしてBoostを語るなかれ。

544 :デフォルトの名無しさん:03/02/25 00:39
>>539
1.31、に入れるかどうか現在MLで投票中なりよ。
boostのyahoo!groupsの置き場にあるので見てみるとよいかと。

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

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

# それと比べて、哲学だの思想だの文章とは全然毛色が違うだろ、と。

545 :デフォルトの名無しさん:03/02/25 00:50
boostを仕事で広く使えるよう、またそのために広く認知されるには
翻訳されたドキュメントが不可欠。何もやっていない香具師が横から
口出すのはウザイ。>529みたいなのを言うのはPC-UNIX系だけかと
思ってたけど、こんなところにもいたか。英語をそのまま読むのが
一番なのは事実として、でもそれでは認知されるのも限界があること
も確かなんだな。

546 :デフォルトの名無しさん:03/02/25 13:20
>>544
そんな漠とした興味のところから
すぐにラテン語を勉強しようということになるのかニャ〜

547 :デフォルトの名無しさん:03/02/25 14:15
スープを味わうのに何も舌をやけどする必要はない。

548 :デフォルトの名無しさん:03/02/25 14:26
>>529みたいなのはどこにでもいる。
この前ソフトウェア板で見た。

549 :529:03/02/25 15:53
あー、なんか誰かの気に障るようなことを書いたのかも知れないけど、
あたしゃ>>525-528あたりの流れに対して素朴な感想を述べたまでで、
特にBoostの翻訳プロジェクトに対して言及したわけじゃないよ。

日本語ドキュメントがあること自体は>>545の指摘通り有益なことだし。

550 :544:03/02/25 16:24
>>546
そう言われても、実際俺はドイツ語とギリシャ語はそんな流れで
勉強したのでなぁ、と答えるしかないのだが。

つーか、水掛け論にしかならんしboostに関係ないし。。。

551 :デフォルトの名無しさん:03/02/25 20:13
>>544
自慢話はこちらでどうぞ。
http://pc.2ch.net/test/read.cgi/prog/1043098718/

552 :デフォルトの名無しさん:03/02/25 23:35
勉強したと逝ってるだけで、モノにしたとはいってないから自慢話とは限らない罠

553 :デフォルトの名無しさん:03/02/27 00:58
ところで、boost を intel c++ compiler 7.0 で使ってる方
いらっしゃいませんでしょうか?どのくらい使えるんでしょう?
boost の web には icc6@win2k のテーブルしか載ってないのですが…

554 :デフォルトの名無しさん:03/03/03 00:03
boostのライセンスはどうでしょうか?
他のライセンスのものとまぜるとどうなるのか、
libpthreadよりも興味があります。

555 :デフォルトの名無しさん:03/03/03 17:06
>>554
>>338

// 「どう」という日本語は曖昧すぎて答えづらいので、もっと
// 具体的に書いた方が望む結果を得られる確率が上がります。

556 :デフォルトの名無しさん:03/03/03 18:04
Regex++ですけど、\Zが文字列末尾以外の改行の直前でもマッチしませんか?


557 :デフォルトの名無しさん:03/03/04 00:32
正規表現とターゲット文字列とマッチフラグは?

558 :デフォルトの名無しさん:03/03/04 09:46
このソースです。

#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;
}

559 :デフォルトの名無しさん:03/03/05 00:37
ぐおー cvs って -P 付けないと追加されたディレクトリを update して
くれないのかぁっ!!知らなかった・・・
spirit とかいつまで経っても spirit.hpp しか無いからおかしいと思って
いたんだが・・・
スレ違いスマソ

560 :デフォルトの名無しさん:03/03/06 00:58
stlpor使ってんだけど
boostコンパイルする場合
必ずiostreamはstlportの方をコンパイルして使う必要があるのですか?

561 :デフォルトの名無しさん:03/03/06 01:11
んなこたーない。

562 :アシュル ◆adhRKFl5jU :03/03/06 01:14
>>559
おれと同じだw

563 :デフォルトの名無しさん:03/03/06 01:58
<<558
バグッポ。
正規表現が"a\\n*"でもマッチしてるし。
Boost-Users行き。

564 :デフォルトの名無しさん:03/03/06 02:15
訂正。
"a\\n*$"

565 :デフォルトの名無しさん:03/03/06 03:17
boost はどういうところがいいですか? たとえば標準 C++ライブラリにない
便利な機能だとか、ここが優れているとか。

566 :デフォルトの名無しさん:03/03/06 03:28
VC6-stlportのメイクファイルはあるけど
vc7+stlportで使ってる場合はどのメイクファイルでコンパイルすればいいの?

567 :デフォルトの名無しさん:03/03/06 03:56
>563
げえ、RegExバグ付きかよ。
これから先何を信用すればいいんだ・・・。

ところで、このスレと関係ないけどpcreってどうすかね?
Perlコンパチ正規表現ライブラリだそうで。
日本語使えないっぽいけど。

568 :デフォルトの名無しさん:03/03/06 09:25
>>567
pcreは、マルチバイト関連は一応UTF-8にのみ「実験的対応」というステータス
らしい。詳しいことはしらないが
character classにはASCII文字しか指定できなかったり
そもそもUTF-8を使っておきながら、文字分類をUNICODEの定義ではなく
古典的なctype.hによっているため
「一応マルチバイトも意識はしてます」というレベルだと思われ。

apacheは以前はHenry Spencerの版にebcdic対応パッチを当てた
ものを使っていたが、最近はpcreを使ってるみたいね。


569 :デフォルトの名無しさん:03/03/06 12:10
oniguruma はどうよ?
前、C++ 関連の ML で見た記憶が。


570 :デフォルトの名無しさん:03/03/06 21:33
VC6-stlportのメイクファイルはあるけど
vc7+stlportで使ってる場合はどのメイクファイルでコンパイルすればいいの?

571 :デフォルトの名無しさん:03/03/07 01:00
regex++のバグ(疑)、boost-usersに投げられ。
注目。

572 :デフォルトの名無しさん:03/03/07 15:31
http://regx.sourceforge.net/
PCREつーと、こんなのがあるんだな。


573 :デフォルトの名無しさん:03/03/08 20:52
やっとbeta 1が出た。
http://lists.boost.org/MailArchives/boost/msg44852.php
1.30.0正式版はいつになるんだ・・・?

574 :デフォルトの名無しさん:03/03/09 02:20
zipとはいえ、ついに10MB超えたか。

575 :デフォルトの名無しさん:03/03/09 02:52
>>573
落として解凍してみたけど、ドキュメントの1.29から変更したファイルだけ
タイムスタンプが変わっているのでありがたい。すぐわかる。

#Boost-jp の訳頑張っています。もうラスト・スパートに突入って感じですね。

576 :デフォルトの名無しさん:03/03/11 02:01
ていうか、Boost-jpって需要あるのかなぁ?

ぬ る ぽ。

577 :デフォルトの名無しさん:03/03/11 02:03
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>576


578 :デフォルトの名無しさん:03/03/11 02:21
ぬ >>576
る  漏れとしてはLet's Boostがあれば十分だ。


579 :デフォルトの名無しさん:03/03/11 02:41
正直、英語読んでも日本語読んでもよく分からないんで
使うときはソース読んでまつ

580 :デフォルトの名無しさん:03/03/11 02:51
Boost-jpあれば、今まで英語のDOCを読むのが嫌でBoostを使う気に
なれなかった日本人が何人か使い出すかもしれない。俺的にはそれで
十分。

581 :デフォルトの名無しさん:03/03/11 03:49
  タテケンサク
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>578

582 :デフォルトの名無しさん:03/03/12 15:59
bjamがようやっと、うごいたーーーーーー。
俺の環境(windows2000、 vc6)だと
まず、ダウンロードしてきたbjamがうまく動かない。ダメポ。

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

ビルドした、bjam使ったら、うまくできました。
めでたし、めでたし。

583 :デフォルトの名無しさん:03/03/13 03:26
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内で
例外を投げるコードがこんな感じになってまして。

584 :デフォルトの名無しさん:03/03/13 11:45
http://www.boost.jp/

585 :デフォルトの名無しさん:03/03/14 09:40
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

なんでーーーー?

586 :デフォルトの名無しさん:03/03/15 00:10
>>585
ドキュメントを見る限り、filesystem::fstream は VC6では
はねられるように読めるが。

587 :デフォルトの名無しさん:03/03/15 09:40
>>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使わないで作成する方法とかありますでしょうか?。

588 :デフォルトの名無しさん:03/03/15 12:36
>>583
規格を読んでくとstd::allocatorがerrnoを変えない保証とかが
実はあったりするのかもしれんが、確かにぱっと見まずそうだな。
boostのMLに投げてみたら?

589 :583:03/03/15 18:59
>>588
「boostのMLに投げる」って簡単?
Boostのサイトからいろいろ辿ってみたら、
結構めんどくさそうでしたが。
基本的に英語の読み書きがメンドクセェってのが多分にありますがね。

590 :デフォルトの名無しさん:03/03/15 19:20
1.30のリリースの予定はもう決まっていますか?

591 :デフォルトの名無しさん:03/03/16 04:43
boostって遅いって聞きますが、実行時の速度重視なゲームプログラミングでも
十分実用的に使えますか?
使っている人ってどのくらいいますか?
大丈夫ならこれを機に移行してみたいのですが。

592 :デフォルトの名無しさん:03/03/16 04:54
いみがわからん

593 :デフォルトの名無しさん:03/03/16 05:05
>boostって遅いって聞きますが
え?マジですか?

594 :デフォルトの名無しさん:03/03/16 06:10
ゲームのコアルーチンでlambdaとか使ったら遅そう。

595 :デフォルトの名無しさん:03/03/17 12:00
>>591
何を基準に速いとか遅いとか言ってるのかわからんが、
専用に作った物の方が汎用の物よりは速いと考えるの
が一般的だろう。

ヘタレの作った専用ルーチン vs 大ベテランの作った汎用ルーチン
だと、良い勝負だろうけど。

596 :デフォルトの名無しさん:03/03/17 12:24
コンパイルは遅いよね

597 :デフォルトの名無しさん:03/03/17 12:46
速度重視なゲームプログラミングっつても、
ゲームにはファミコンレベルからPS2レベルまであるわけだし、
Pentium 90Mhzぐらいでも速いといわれていた時期もあるわけだし、
boostと専用のものとじゃ100Mhzも処理速度の違いなんて無いだろうし、
そんな適当な説明じゃ実用的かどうかなんて判断できません。

598 :デフォルトの名無しさん:03/03/17 15:10
あとエラーメッセージはわけ分からんね
それから正直、プリプロセッサーメタプログラミングは
別にコジェネ書いた方が楽だね

599 :デフォルトの名無しさん:03/03/17 15:16
正直、boostは俺以外使わないでほしい

みんなが使うと俺の優位性がぐらつくだろうが!!

600 :デフォルトの名無しさん:03/03/17 16:06
>>599
ワラタ

ついでに600ゲト

601 :デフォルトの名無しさん:03/03/21 07:19
boost 1.30.0 age

602 :デフォルトの名無しさん:03/03/21 08:46
キタ━━━━━(゚∀゚)━━━━━!!

603 :デフォルトの名無しさん:03/03/21 09:54
boostはshared_ptrしか使ってないのですが、もうちょっと使えるように
なりたいので、勉強してみます。
次に何を使うといいでつか?


604 :デフォルトの名無しさん:03/03/21 10:06
scoped_ptr
noncopyable
bind
any

この辺か?

605 :デフォルトの名無しさん:03/03/21 11:27
>>603
lambda

606 :デフォルトの名無しさん:03/03/21 14:02
オィオィ、普通に考えたら spirit 辺りが妥当だろ

607 :デフォルトの名無しさん:03/03/21 15:02
何を作ってるかにもよるが、数値計算な俺的には uBLAS に一票。

608 :デフォルトの名無しさん:03/03/21 16:19
C++使いは手当たり次第に外部ライブラリ試している暇があったら
一度は費用対効果というものを真剣に考えてみる必要がある。
習得コストや可読性を考えるとほとんどの開発者が
コストを回収しきれていないのが現実。
そのコストを貴重な休日で穴埋めしたいならそれでもいいけどさ。

609 :デフォルトの名無しさん:03/03/21 16:26
げげっ1.30がリリースされてる。
Boost-jpやり直しか?今タイムスタンプをチェックしてる。
結構変わってるね。

610 :デフォルトの名無しさん:03/03/21 16:43
>>603
次は MPL だろ。どー考えても。

>>608
仕事では使ってないよん。あくまで趣味。
っつーか仕事は VC++6.0 なので・・・

611 :デフォルトの名無しさん:03/03/24 16:42
VC++6.0 で lambda を使うにはどうしたらいいですか?

612 :デフォルトの名無しさん:03/03/25 12:56
すまないけど、次期lexical_castに関する情報へのリンク等を教えてもらえない?
英語が良くわからないので検索してもサッパリ。

613 :デフォルトの名無しさん:03/03/25 13:11
ここでlambdaとかcompile timeとか騒いでる奴は、一度MLやってみて欲シイ。
素質アリダヨ。
MLつってもメーリングリストじゃないよ。Meta Language。

614 :デフォルトの名無しさん:03/03/25 13:14
ステップ実行し、変数ウォッチすればわかる。


615 :デフォルトの名無しさん:03/03/25 13:52
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> >();
を最初に挿入しとくと通るよ。

616 :デフォルトの名無しさん:03/03/25 14:40
>>612
ほれ。
ttp://groups.yahoo.com/group/boost/files/lexical_cast_proposition/
あと、何気に 1.30.0 の lexical_cast がバージョンアップして、ワイド文字対応になった。


617 :デフォルトの名無しさん:03/03/25 15:03
>>613
Boost使いには意外と関数型言語使いが混じってるんじゃないかと思う。
私はHaskell知ってからBoost知ったクチだし。

618 :デフォルトの名無しさん:03/03/25 15:16
>>616
マジThx!

つーか1.30になってからlexical_castのドキュメント変わってるとマズイことに。
何故かは秘密♥

619 :デフォルトの名無しさん:03/03/26 06:51
1.30にしたら
#define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
しないとエラーが出るようになった。VC7。どうして?

620 :デフォルトの名無しさん:03/03/26 11:51
>>619
しくじったそうだ。↓のメッセージを追え。
http://lists.boost.org/MailArchives/boost/msg45656.php


621 :デフォルトの名無しさん:03/03/29 01:02
>>615
THX !! あらかじめ、インスタンスを生成しとくのね!?

グローバルで定義したり、boostの中に書いてみたり、使用クラスのなかで宣言してみたり
typedefしたり、うまくいかないでガセか?と、おもったけど、使用する関数で宣言すれば通るのね。


622 :デフォルトの名無しさん:03/03/30 09:32
date_time入れて、便利そうだから、greg_day_of_week使おうと思ったら
使えない。。
よく見ると、ドキュメントに記述があるのに、ヘッダファイルには痕跡がないし。

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

ドキュメントに使用が書いてあるのに、実際には、まだ開発中って
珍しくないこと?

623 :デフォルトの名無しさん:03/03/30 09:35
コンパイルした?

624 :デフォルトの名無しさん:03/03/30 11:29
>>622
した。

625 :デフォルトの名無しさん:03/03/30 11:35
続き。
コンパイルして、libファイル作って、
リンクもさせているはずなのに。
リンクのさせ方が変なのかなあ?
vc6+sp5です。

ちょっと出ていました。すみません。

626 :デフォルトの名無しさん:03/03/30 12:03
「使えない」とか「動かない」とかしか言わないってことは、
エラーメッセージは出ないのに、実行してみると動作しないってことだよな?

627 :デフォルトの名無しさん:03/03/30 12:28
説明不足で申し訳ないです。

greg_day_of_weekは宣言されていないというエラー、
pathに関してはリンカエラーが出ます。

628 :デフォルトの名無しさん:03/03/30 12:44
>>627
boost::gregorian::greg_weekday

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

質問するなら、エラーメッセージをそのまま貼り付けるのがベストだ。

629 :デフォルトの名無しさん:03/03/30 12:48
vc6,sp5,windows_sdk_coreアップ済みのヘッダー使用ですが、
boost::filesytem系は動いてますよ。
bjamで作ったlibはリンクエラーでまくったので、自分でlib作成しましたが。

stlportのiostream使ってるかどうかで、リンクエラーでたりするのがうざい。
regex++みたいに、自動でライブラリやdllをいっぱい作成して、コンパイル時に適当なlibwo
選んでくれるようにデフォルトでならないかな・・・。

630 :デフォルトの名無しさん:03/03/30 16:11
>>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 );

というソースで、


631 :デフォルトの名無しさん:03/03/30 16:11

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"

でやってみて、生成物を[プロジェクト]→[設定]の
[リンク]→[オブジェクト/ライブラリモジュール],[追加ライブラリのパス]
で呼ぶようにしてるんだけど。。

632 :629:03/03/30 21:06
俺もbjamで作成したら、それと同じエラー出たよ。
でも自分でlib作成したらでなくなったけどね。

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

(と、昔書いたが放置、、むしろ、VCスレで聞け?)

633 :デフォルトの名無しさん:03/03/30 21:59
>>631
それって、ライブラリのビルドのときにSTLport使われてんの?

634 :デフォルトの名無しさん:03/03/31 12:19
>>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を作ったので、何とも。


635 :デフォルトの名無しさん:03/03/31 23:58
>>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とこう。

636 :デフォルトの名無しさん:03/04/01 02:35
634じゃないけど

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

明日余裕あったら試してみるかな、、、

637 :635:03/04/01 02:41
>>635で引用した文の直後にこの文(↓)が続いてる。
"This assumes that you didn't rename the STLport folder and allows for automatic selection of multiple STLport versions."

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

というわけで、引用などあてにしてないで、自分で読めってこった。

638 :デフォルトの名無しさん:03/04/01 05:05
boost使いを、ブースターと呼ぶ

639 :VC6 + STLPort:03/04/01 11:39
#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;
}

640 :VC6 + STLPort:03/04/01 11:40
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 の実行エラー


って出るんですけど、何が悪いんでしょうか?

641 :デフォルトの名無しさん:03/04/01 12:06
>>639
lexical_castの前にboost::をつけるか
using namespace boost;

をつけてみたら?

642 :VC6 + STLPort:03/04/01 12:12
>>641
warning C4800 が出ましたが無事動作しました。

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



643 :デフォルトの名無しさん:03/04/01 12:32
>>642
上司説得しようぜ。

うちの場合、「便利なものあるんならどんどん使っていいんじゃないの?無料なら。」
といわれたので、使っておりますー。

644 :デフォルトの名無しさん:03/04/01 12:38
>>642
C4800って非bool値をbool型の変数に代入しようとした時に出る
んじゃないの?まだ怪しい部分が残っているような・・・・業務では
使わない方が吉。

645 :デフォルトの名無しさん:03/04/01 12:39
ちなみにBCCやgccではそんな警告は出ないから、VC6の問題であると
思われる。VC6に対応させるためのworkingaroundが随所に見られ、
その当たりにバグが残っているかもしれない。

646 :デフォルトの名無しさん:03/04/01 12:46
>>643
うちは「フリーのやつは、バグがあった場合の責任問題が云々」という理由で却下されますた。

647 :デフォルトの名無しさん:03/04/01 13:03
>>646
実際どうなんだろ。
VCのバグのほうは事実上どうにもならないが(大金払えば別だろうが)
フリーのSTLPortとかなら対処可能だよね
直すという結果が重要ではなく、責任をなすりつけるのが目的だとしても
MSは使用許諾で免責しまくりだよねえ・・

648 :デフォルトの名無しさん:03/04/01 13:26
やっぱ bjamで作ったlibを vc6.0 sp5 stlport で使用できない・・・。

だれかうまくいった人、環境設定とコマンドの例をおしえてください。
bjam使うなってことですかね?

649 :デフォルトの名無しさん:03/04/01 13:35
>>648
んなこたぁ〜ない。

650 :VC6 + STLPort:03/04/01 14:33
うっ・・・・

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

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

ううむ・・・

651 :デフォルトの名無しさん:03/04/01 14:43
>>650
#include <exception>//例外のクラス?

ていうかstlportへパス通ってる?

652 :VC6 + STLPort:03/04/01 14:49
パスは通ってます。include と lib

653 :デフォルトの名無しさん:03/04/01 14:49
>>651
bad_cast は <typeinfo>

654 :デフォルトの名無しさん:03/04/01 14:50
>>647
問題の原因を拡散させないのが大事なんじゃないかと。
だれもMSに責任を取ってもらおうなどとは考えてないよね。
まあ次のVC++でメジャーなテンプレートライブラリに
かなり対応する予定だとか。たのしみですけど。

655 :VC6 + STLPort:03/04/01 15:01
http://www.kmonos.net/alang/boost/

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

>>653 thx

656 :デフォルトの名無しさん:03/04/01 15:06
>>649
ライブラリ・リンクさせるの忘れてた。

657 :デフォルトの名無しさん:03/04/02 15:28
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メーリングリストにご意見ご批判を流して下さい。

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

このメーリングリストは翻訳者専用だそうですので、別にご意見ご批判
投稿用の場所を設けます。

659 :デフォルトの名無しさん:03/04/02 15:37
cppll@したらばがあります。
http://jbbs.shitaraba.com/computer/5651/
この中当たりはどうでしょうか?

660 :デフォルトの名無しさん:03/04/02 18:05
boostのコンパイルを速くするにはどうしたらいいですか?
VC++ならpchが効くんでとっても快適なコンパイルができるんですが、
gccだとふざけたほど時間がかかって困ってます。
ccacheもあんまり効果無いし。

661 :デフォルトの名無しさん:03/04/02 18:23
>>660
・速いマシンを買う。
・cvsからcurrent(3.4)を取ってきてpchのテスターになる。
(gcc/gcc/c-pch.c,cpppch.cあたりか?頑張って!)

662 :デフォルトの名無しさん:03/04/04 03:26
あ、こんなところに宣伝が。
フィードバックほしいです、はい。
ソースフォルゲのバグトラッキング(要メールアドレス)か、
cppll-bbs@したらば(まあ匿名)でお願いします。
別に、原文と照らし合わせてくれ〜、とまでは言わん。
変な日本語とか、意味がわからないところとか、指摘していただけたら幸い。
むしろ、原文でも意味がわからんところもあったりするががが。

663 :デフォルトの名無しさん:03/04/04 22:47
そういえば、boost::poolが使えるかどうか実験してみたんだけど
10000回くらいmalloc,free 繰り返したらがはっきりと差が出てくるね。
お手軽に使いたい場合ちょこっと便利かも。

ただそんなに大量に細かいオブジェクトを生成破棄する機会がいまのところないんだけどね、俺の場合。

664 :デフォルトの名無しさん:03/04/04 23:50
>>663
何と何を比べてどう差が出るのでつか?

665 :デフォルトの名無しさん:03/04/05 02:06
boost::poolってstd::list等のコンテナのメモリアロケータにも使えるのですか?
1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、
速くなりますかね?

666 :デフォルトの名無しさん:03/04/05 11:07
>>665
ベンチマーク取ってみればいいじゃん。

667 :デフォルトの名無しさん:03/04/05 13:57
>>666
使えるかどうかとどのように使うのかを聞いてるんですが…

668 :デフォルトの名無しさん:03/04/05 16:22
>>664
普通のmallocとかnewとかを生成、破棄するのに比べて速い。

>>665
日本語ドキュメントにはstd::vectorとかコンテナでも使えるみないなことかいてあったよ。
ただ、普通に使うのとちがってプログラム終了するまえにsingletonオブジェクトから
明示的に開放しないといけないっぽいらしいけど。
読んでみたら?


669 :デフォルトの名無しさん:03/04/06 00:50
>1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、
既に設計がおかしい様な・・・

670 :デフォルトの名無しさん:03/04/06 13:37
>>665
どんなゲーム内容だよ、それ
シューティングか?

671 :デフォルトの名無しさん:03/04/06 18:19
こんなのとか?
ttp://homepage3.nifty.com/arika_download_02/mpeg/ddd002_1.mpg
・・・つーても、

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

これが必要とは思えないが・・・。

672 :デフォルトの名無しさん:03/04/06 18:28
boost::poolとstd::mallocでdouble型のインスタンスを500000回生成して
速度を比較してみたよ。

malloc = 2231874
boost::pool = 1371511

short型でもやってみた。

malloc = 2181766
boost::pool = 1132248

コンスタントに2倍程度の速度が出ている。

673 :デフォルトの名無しさん:03/04/06 19:36
>>671
(((( ;゚Д゚))) ガクガクブルブル

674 :デフォルトの名無しさん:03/04/07 00:20
>>671
こんなのできるやついるんだな_| ̄|○
ライフ制をなの発見して、ちょっと安心( ´∀`)

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

>>672
GJ!!

675 :デフォルトの名無しさん:03/04/07 00:26
>>672
・・・この結果ならそんなにつかう必要性を感じないなぁ

676 :デフォルトの名無しさん:03/04/07 01:09
つーかそんなベンチやっても差はあんまり開かんだろ。
実際の運用を想定してmallocの方をある程度断片化させないと。

677 :デフォルトの名無しさん:03/04/07 01:11
>>675
boost::poolのコンストラクタにいちいちサイズを指定しなければ
いけないのが面倒。

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

こんな感じ。
サイズを固定化して速度をあげているような気がする。もちろん
テンプレートパラメータに型を指定すればサイズの指定は必要
ないが、doubleやintのような基本型を指定するとエラーになる
のが問題だ。

678 :デフォルトの名無しさん:03/04/07 02:19
>>677
用途判ってないだろ

679 :デフォルトの名無しさん:03/04/07 02:23
>>672
環境は?
mallocの実装がしょぼい環境でこそ、威力を発揮するだろうからな。
最近のOSなら、boost::pool相当のことはOS内部で既にやってある可能性もある。

680 :デフォルトの名無しさん:03/04/07 02:26
>最近のOSなら、boost::pool相当のことはOS内部で既にやってある可能性もある。
更に言うと、malloc内部でも同じ事をやっている可能性があって
boost::poolを使うと3重に無駄なことをしていると言うことにもなりかねない

681 :676:03/04/07 02:41
つーかね、バウンダリに収まるオブジェクトでテストしても効果無い。
断片化させた上で、16byte以上のオブジェクトで試せ。

682 :デフォルトの名無しさん:03/04/07 03:38
>>677>>679-680
F1見ながら釣りですか?

683 :デフォルトの名無しさん:03/04/07 23:12
>1/60秒ごとにlist内の数百〜数千のインスタンスを生成・破棄したりしてるんですが、

どんなん作ってんねん。1/60秒ってことはゲームなのだろうが、
たとえ弾幕シューでもそんな激しい頻度にはならないっしょ。

684 :デフォルトの名無しさん:03/04/08 01:22
「1/60秒」って言葉を使いたかっただけかと(藁

685 :デフォルトの名無しさん:03/04/08 15:04
ピクセル毎にオブジェクトで管理

686 :デフォルトの名無しさん:03/04/08 15:18
パーティクルアニメーションとか

687 :デフォルトの名無しさん:03/04/08 20:30
パーティクルならありそうだ

でも、作り方を見直したらboost::poolに変えるよりも数倍は早くなりそう

688 :デフォルトの名無しさん:03/04/11 22:25
VC7+STLport(iostreamビルド済み)で使ってるんですが
今度Boost::regexを利用しようと思うんですが、
makefileはvc6-stlport.makとvc7.makと有るんですが
STLport使いつつBoost使いたいのですが
どのメイクファイルでコンパイルすればいいのでしょうか?

689 :デフォルトの名無しさん:03/04/11 23:25
>>688
「ですが」 多すぎ

690 :デフォルトの名無しさん:03/04/11 23:30
>>688
まるちー

691 :デフォルトの名無しさん:03/04/12 00:02
VC7+STLport(iostreamビルド済み)で使ってるんまるちー
今度Boost::regexを利用しようと思うんまるちー、
makefileはvc6-stlport.makとvc7.makと有るんまるちー
STLport使いつつBoost使いたいのまるちー
どのメイクファイルでコンパイルすればいいのでしょうかまるちー?


692 :デフォルトの名無しさん:03/04/12 00:25
エロゲーヲタはカエレ!

693 :デフォルトの名無しさん:03/04/12 06:47
おまいら面白いな

694 :デフォルトの名無しさん:03/04/12 08:17
>>691
にょ

695 :デフォルトの名無しさん:03/04/12 11:29
VC7+STLport(iostreamビルド済み)で使ってるんだにょ
今度Boost::regexを利用しようと思うんだにょ、
makefileはvc6-stlport.makとvc7.makと有るんだにょ
STLport使いつつBoost使いたいにょ
どのメイクファイルでコンパイルすればいいのでしょうかにょお?

----
g++ 3.2.2 使ってるんだけど、STLport 入れた方がイイ?


696 :デフォルトの名無しさん:03/04/12 12:36
vc6 に stlport いれたら loki のSmartPtrコンパイルできんかった。

697 :デフォルトの名無しさん:03/04/13 00:06
         __ , ────── 、__
      , - ':::::::::::::::::::::::::::::::::::::::::::::::::::\
     / ;;;;;;;:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;\
    /,,;,,,,,  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ,,,,,,,,;::::::丶
   / :::::::::;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;:::::::::::::::::::ヽ
   i゙:::;:::::||::::::,!i:::::::::::,|i::::::::::::::::::;:::::::::::::::::::::::::::::::゙i
  i゙::::|;;;;| |;;;;;| |::::::::::| |:::::::::::::::::||::::::::::::::::::::::::::::::::|
 . i゙::::::i     ''''''''''' '───' |;;;;;;;;;;;;::::::::::::::::::::|
  .|:::::::|,-====-´  ゙ヽ,,,,,,,,,,,,,、    |:::::::::::::::::::|
  |;::::::::|,-──、    ~,.--`‐、    |:::::::::::::::::::|
  `ヽ、i     )__r'´    )__|;::::::::::::::/  
  .  ヽ、__、/<    ヽ、__、-    /^゙-、;;;;/     >>691おもろないよ
     {     ' '          '-'~ノ
    λ   ____        /-'^"
     ヽ,_  `ー─''´       (
     /`''丶、     , -    /^l
    /  /( ノ `'''''''´~ _, - ' ~ ゙i、
    { / /| ̄ ̄ ̄ ̄   _,-'^¨ }
    {/ /  ゙ー────'~   \|
    /               ヽ  \

698 :デフォルトの名無しさん:03/04/13 09:28
>>697
それだけを言うために、AAなんかはってんじゃねーよ、糞ボケがーー。

699 :デフォルトの名無しさん:03/04/13 14:05
>>698 ( ´,_ゝ`)プッ

700 :デフォルトの名無しさん:03/04/13 14:10
火垂るの墓の節子?

701 :デフォルトの名無しさん:03/04/13 15:16
C++とjavaではドッチが偉いの?

702 :デフォルトの名無しさん:03/04/13 16:32
>>701
C++

703 :デフォルトの名無しさん:03/04/13 17:03
つーかそんなネタに反応するなよ>702

704 :702:03/04/13 18:33
>>703
ごめん、他人の糞ネタを一番つまらない方法でさっさと消費するのが
最近のマイブームなんだ。

705 :デフォルトの名無しさん:03/04/13 18:50
言い訳レスもいらん。702はゴミ。

706 :702:03/04/13 18:56
という放置できない厨のせいで駄レスがさらに増えるのであった(w

707 :デフォルトの名無しさん:03/04/13 19:44
と鏡を見ながら発言する>>702

708 :デフォルトの名無しさん:03/04/13 19:50
なんなの・・・この駄レス・・・

709 :702:03/04/13 20:10
>>708
困ったもんだよねw

710 :デフォルトの名無しさん:03/04/13 20:29
もうどうでもいいからやめろ。 しつこすぎる。

711 :702:03/04/13 21:12
>>710
いやー、そういうこと書いちゃ終わるもんも終わらないでしょーw

712 :702:03/04/13 21:24
まったく馬鹿ばかりだ。 俺は悪くないぞ。

713 :702:03/04/13 22:15
俺も全然悪くないぞ。

714 :702:03/04/13 22:39
だれか、俺にかまってくれよ〜

715 :デフォルトの名無しさん:03/04/13 23:07
C#

716 :デフォルトの名無しさん:03/04/14 00:37
ttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BOOST_WIKI

こんなのあるんだねぇ。ガイシュツだったらスマソ

717 :デフォルトの名無しさん:03/04/14 00:58
>>716
既出もなにも、boost.org のトップページからリンク張ってあるしなぁ。

718 :vns:03/04/15 10:49
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です。

719 :デフォルトの名無しさん:03/04/15 12:22
#include<string.h>
   ↓
#include<string>

720 :ヽ(´ー`)ノ:03/04/15 13:18
strlen, strcat を使うのなら cstring じゃないのかと小一時間。
ていうか boost 関係ないやん…(;´Д`)


721 :デフォルトの名無しさん:03/04/15 14:56
ところで、boost::regexのライブラリ名で'i'ついているやつありますよね?
例:boost_regex_vc6-stlport_mdi.dll
                   ↑これ

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

それとも別な意味あるんですかね?


722 :山崎渉:03/04/17 15:22
(^^)

723 :山崎渉:03/04/20 04:33
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

724 :デフォルトの名無しさん:03/04/21 19:33

 守

725 :デフォルトの名無しさん:03/04/21 20:20
>>721
iはcase-insensitiveのi。

726 :デフォルトの名無しさん:03/04/21 23:05
>>725
信じていいですか?じゃー、ここがsの時はsensitiveかな?

727 :デフォルトの名無しさん:03/04/29 12:42
AGE

728 :デフォルトの名無しさん:03/05/13 21:46
boost::weak_ptr の仕様が1.3.0から変わってうかつにコンテナにいれたら泣くとか、
boost::filesystem をはじめとしてダブルバイト文字対応が弱くて泣くとか、
泣き言っても良いですか age



729 :デフォルトの名無しさん:03/05/13 23:02
>boost::weak_ptr の仕様が1.3.0から変わってうかつにコンテナにいれたら泣く、
まじっすか?どうなるんですか?
つーかいまのところ、コンテナにweak_ptrいれてないから安心だ。

730 :デフォルトの名無しさん:03/05/14 12:03
boost::thread_groupの実装にstd::listが使ってあって、
挿入・削除のときにstd::find(begin(),end(),...)してあるんだけど、
std::setを使わないのはなんでだろう?

731 : ◆hMJAPH9PWA :03/05/14 15:53
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だとコンパイルすら通らない


732 :デフォルトの名無しさん:03/05/15 00:11
>>729
1.30.0 の weak_ptr には比較演算子が operator< しかないから、
weak_ptr のコンテナに対して、std::find や std::remove などの
汎用アルゴリズムを専用ファンクタなしに呼び出すとコンパイルエラー

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


733 :729:03/05/15 21:16
>>732
ありがとん。

まぁ確かにlockしたり、shared_ptrにわたしたりすんのめんどくさいかも。

734 :デフォルトの名無しさん:03/05/18 20:55
結局、boostは商用のクローズドなプログラムに利用可能なんでしょうか?
過去ログ見たんですが、結論出ていないっぽいですよね…
可能ならバイト先のコードに使いたいんですが、皆さん商用プロダクトで使った
りしてますか?実際のところどうなのでしょう?

735 :デフォルトの名無しさん:03/05/18 20:58
漏れも使ってるんで大丈夫です。バイトだけど。

736 :デフォルトの名無しさん:03/05/18 21:42
>>735
おまえがルールブックか!

737 :通りすがりのランボー:03/05/18 21:53
このスレでは俺が法律だ。

738 :デフォルトの名無しさん:03/05/18 23:40
>>734
バイト先のプロジェクトの責任者に聞くべきじゃネーの?
それで何で利用不可能なの?

739 :デフォルトの名無しさん:03/05/19 00:20
ttp://www.tietew.jp/cppll/archive/5776
ttp://www.tietew.jp/cppll/archive/5777


740 :デフォルトの名無しさん:03/05/19 00:49
boostのライセンス的には要するに問題なしってことだな
後はプロジェクトマネージャーが使用許可くれるかどうかぐらいか
その辺の裁量も自分にあるならとっとと使えばいいし

741 :デフォルトの名無しさん:03/05/19 01:35
>740
改変型バークレーライセンスとか言うやつだっけ?

742 :734:03/05/19 01:44
皆さんどーもです。特に>>739サマ。
いやぁ、バイト先が小さい会社なんで、プロジェクトマネージャーとかそんな
のいなくって、むしろ実質僕がそのソフトの責任者みたいになってるんですが、
下手に外部ライブラリ使うと商用だとヤヴァイかなぁと思いまして。
一応自分でも調べてたんですが、自信が無かったものでして。

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

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



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

マルチバイトの処理に怪しいとこもあるので、独自ライブラリのままのほうが
いい場合もある。よく検証してから使おうね。
Unicodeとかでいけるなら、boostでいいけど。


744 :デフォルトの名無しさん:03/05/19 19:05
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)" は未解決です

745 :デフォルトの名無しさん:03/05/19 19:08
stlport使わんかったらうまくいった・・・。
なんでだー。
ていうか俺にどうしろちと・・・。
stlport使いたいんだよ・・・。

746 :デフォルトの名無しさん:03/05/19 20:43
>>744
ENVにSTLPORTかなんか追加して、includeディレクトリ設定してやった?
let's boostあたりに書かれてるんじゃないのかな

747 :744:03/05/19 22:46
今手元に設定ないんであれだが、だいたいこんな感じっす
[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って使えない?

748 :デフォルトの名無しさん:03/05/19 23:56
>>744
>>631-

749 :デフォルトの名無しさん:03/05/20 02:13
>>748
それ読んでもbjamじゃうまくできねーんだよぅ。馬鹿なおいらをたすけてくれぃ。

750 :デフォルトの名無しさん:03/05/20 02:32
>>749
ほぅ、
> set STLPORT_PATH=C:\hoge\STLport-4.5.3
これを、
> set STLPORT_PATH=C:\hoge
こう直してもダメだったわけだな。

751 :デフォルトの名無しさん:03/05/20 02:35
>>750
だめですた。

752 :デフォルトの名無しさん:03/05/20 03:05
>>751
DUMPBIN /SYMBOLS [できあがってるライブラリファイル] >symbols.txt

でライブラリのシンボルとって、symbols.txtの中を"native_file_string"し、
ヒットしたシンボルを>>744のシンボルと比べろ。

753 :デフォルトの名無しさん:03/05/20 09:17
>>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使われてないってことでしょうか?
ビルドしなおしてみます

754 :デフォルトの名無しさん:03/05/20 09:28
>>753
> stlport使われてないってことでしょうか?

そだねー。
>>750の変更したときに、古いオブジェクト消してなかった、ってことかな。

755 :デフォルトの名無しさん:03/05/20 09:31
>>753
ん?
[symbols.txt]と、[>>744]のシンボル、逆だよな?

756 :744:03/05/20 09:52
うまくいきますた。すいませんでした。

[環境変数]
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"
オプション忘れると悲惨ですね。


757 :デフォルトの名無しさん:03/05/20 11:11
let's boostは間違ってるの?

758 :デフォルトの名無しさん:03/05/20 15:58
STLPORT_PATHしか書かれてないね

759 :山崎渉:03/05/28 12:56
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

760 :デフォルトの名無しさん:03/06/02 20:11
boost memo が消えターーーーーーーーーーーーーー(゚∀゚)ーーーーーーーー!!!

どこ逝ったんだYO!!!

761 :デフォルトの名無しさん:03/06/02 20:22
>>760
Let's boost あたりからリンクをたどれ。

762 :デフォルトの名無しさん:03/06/02 20:25
WizOnline開発中!プログラマ緊急募集(C,Java)
http://anzu.sakura.ne.jp/~kuga/wol/
2chスレ
http://game3.2ch.net/test/read.cgi/mmominor/1053536167/



763 :760:03/06/02 22:20
>>761
アリガトン。
作者さんが進級してアカウント名が変わったっぽいですな。
お騒がせスマソ

764 :デフォルトの名無しさん:03/06/04 21:08
The Command Line & Config library by Vladimir Prus has been accepted
into Boost.

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

765 :デフォルトの名無しさん:03/06/04 21:13
コマンドラインとか設定とかの具体的なライブラリが増えていって、
どんどん自分でコードが書けなくなっていく…

766 :デフォルトの名無しさん:03/06/05 02:22
見た。けど、この変態的構文はどういうカラクリでござるか。C++疎くてもう。

desc.add_options()
  ("help", "", "produce a help screen")
  ("version,v", "", "print the version number")
  ("string,s", "arg", "output the specified string")
  ;


767 :sage:03/06/05 09:38
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,
になるかな。ためしてみれ

768 :766:03/06/05 10:46
サンプルコードまでありがたい。理解でき申した。感謝いたします。

769 :デフォルトの名無しさん:03/06/05 11:27
boostを商用のクローズドソフトウェアに使う→OK

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

boostを使って自分で書いたプログラムをGPLに
これってOK?

770 :デフォルトの名無しさん:03/06/05 12:13
>>769
つーか、それがだめだったらboost使った奴で商用のライセンスを作成できないじゃん。

771 :デフォルトの名無しさん:03/06/05 14:20
>>770
dクス。

商用利用は良くても派生不可という可能性もあるので気になっていたのでした。


772 :デフォルトの名無しさん:03/06/05 15:43
うぎゃー、filesystem2バイト目が\(0x5c)な文字を使うとだめじゃんかー!
……横着しないで自分で作ろう。
VC++の_splitpathのソースとか見ると_ismbbleadとか使ってちゃんと処理
してるんだよね。そういう風にならないかなぁ。


773 :デフォルトの名無しさん:03/06/05 23:56
>>772
BoostをWindows日本語版依存にしろと?

774 :デフォルトの名無しさん:03/06/06 00:18
wstringに対応しろって事じゃないの?

775 :デフォルトの名無しさん:03/06/06 00:27
パス区切りに\使うなって事だろ。

776 :775:03/06/06 00:27
書き込んだ瞬間に間違ってるのに気付いた。ごめん。

777 :デフォルトの名無しさん:03/06/06 08:32
>>773
国際化しろってことでしょ?
_ismbbleadならコードページによって処理が変わるから
日本語依存になるってことはないんじゃないかな。


778 :デフォルトの名無しさん:03/06/06 10:10
codeはすでにあるんだから、だれかがsubmitすればよいのでは。
localeを参照するようにするのは、それほど難しいことでないし。

779 :デフォルトの名無しさん:03/06/21 19:45
Gurtovoyさんおつかれさまやね

780 :デフォルトの名無しさん:03/06/22 00:24
最近 boost-jp に変化が無いのぅ。

781 :デフォルトの名無しさん:03/06/23 11:55
じっくり待ちつつ spirit でハクる

782 :デフォルトの名無しさん:03/06/24 09:02
>>780
仕事が忙しくて和訳する時間が取れないのよー。
年末は時間があったからどんどん訳していたけどな。

783 :デフォルトの名無しさん:03/06/24 14:06
boostっていうか、STLにstringってありますよね。
これはASCIIものだけでしょうか。
UNICODEの場合にはどうなりますか?

784 :デフォルトの名無しさん:03/06/24 14:09
>>783
stringはSTLっちゅーか標準C++ライブラリかね。
std::basic_string<wchar_t> = std::wstring があるが。

785 :783:03/06/24 14:36
ありますた。>>784

ついでに、教えて下さい。
RDBから読み取った内容の構造体を定義したいんですが、どんな風に書かれますか?
wchar_t[10];
wstring[10];

786 :デフォルトの名無しさん:03/06/24 16:24
[10]が格納できる文字数 or バイト数のつもりなら、

wchar_t[10 + 1]

wstring
でいいよ。

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

長さチェックを行う文字列を持ちたいなら、もうちょっと工夫しないといけない。


787 :デフォルトの名無しさん:03/06/24 18:24
>長さチェックを行う文字列を持ちたいなら、もうちょっと工夫しないといけない。
この詳細、超知りたいでつ。

788 :デフォルトの名無しさん:03/06/24 18:52
>>788
std::wstring ws(256,L'\0');
これのこと


789 :デフォルトの名無しさん:03/06/24 22:01
今月のCマガに載ってたね

790 :デフォルトの名無しさん:03/06/25 00:50
C++Builder6でboostしてます。

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

791 :デフォルトの名無しさん:03/06/25 01:00
淫乱展開できるかどうかは処理系依存なんで。
できない処理系がWarning出してても抑制でいいでしょ。

自分で展開しないようにソース書き換えるのは実りが少ない。

792 :デフォルトの名無しさん:03/06/25 02:04
淫乱展開(・∀・)イイ!!


793 :デフォルトの名無しさん:03/06/25 08:57
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()

どっかの日記にかいてあったが、すげーなと思った。

794 :デフォルトの名無しさん:03/06/25 10:05
>>793
これに依存したコーディングはしないほうがいいんだろうなぁ。

795 :デフォルトの名無しさん:03/06/25 10:38
>>793
何がすごいのか解説キボン・・
boost::shared_ptrがすごいの?

796 :デフォルトの名無しさん:03/06/25 10:45
>>795
↓に変えて実行してみな。
int main(){
std::auto_ptr<Super> hoge(new Sub());
return 0;
}

797 :デフォルトの名無しさん:03/06/25 10:51
ヘッダ追ってみた。なるほど。
shared_ptr<T>のコンストラクタが引数の型を自身の型とは別にtemplate typename Yで
受けていて、そのY型のchecked_deleter<Y>を与えてshared_countを作ってるのか。
だから全参照消滅時にはT=Superのデストラクタではなく、Y=Subのデストラクタが起動されるのね。

それと、解体のときにYのものですらなく、別途引数で解体関数を与えるコンストラクタもあるのね。

798 :デフォルトの名無しさん:03/06/25 11:05
>>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.
...]


799 :デフォルトの名無しさん:03/06/25 12:10
つまり、こういうような処理しないで、
コンテナにスマートポインタぶち込むとマズーなことになるのかしら?


800 :デフォルトの名無しさん:03/06/25 16:15
boost::shared_ptr<void*> hoge(new Sub());
こういうのもうまくうごくように出来てるよねたしか。

801 :デフォルトの名無しさん:03/06/25 16:59
>>800が動いたら神な訳だが。

802 :デフォルトの名無しさん:03/06/25 17:02
ごめんこっちね
boost::shared_ptr<void> hoge(new Sub());
バリアントポインタ配列みたいな感じで、
デストラクタも入れた物のがちゃんと呼ばれる。

803 :デフォルトの名無しさん:03/06/25 17:08
>>802
>>798で引用された文がそのことですな

しかしvoidでやっちゃうと中身使うのが大変だな。
開放管理専用にするしかないかな。

804 :デフォルトの名無しさん:03/06/25 19:41
なんだかやり過ぎのような。
「仮想関数かどうか」を判別するうまい手段があれば、
コンパイルエラーにするんだろうけど。

805 :デフォルトの名無しさん:03/06/25 20:42
>>783-785
同じ UNICODE でも UTF-8 なら std::string。
std::wstring なら一般的には「1要素==1文字」が
成立するんだけど例外があるから気をつけれ。
あと、環境によって 2 == sizeof(wchar_t) だったり
4 == sizeof(wchar_t) だったりするのにも気をつけれ。

806 :デフォルトの名無しさん:03/06/26 01:01
>>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> で受けられるのが便利。

807 :デフォルトの名無しさん:03/06/26 23:35
1-30-0のboost::signalはBCC5.5.1で使えないのか?
tutorialではsignalNのtemplateで使えるみたいなこと書いてるが。

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

が山ほどでる。

808 :デフォルトの名無しさん:03/07/03 17:43

VC++7.1 が Boost Regression Tests で 100% 達成1番のり Age!!


809 :デフォルトの名無しさん:03/07/03 23:49
smartポインタをコンテナにいれたときに、*iteratorしたら、smartポインタの実体が返ってくる奴が標準でついてほしい。
なんかそれっぽい記事はあったんだが、需要とかないのかね。
iteratorアダプターとかつかって自分でつくればいいのだが、まんどくせー。

つーか、iteratorアダプターってなんか激しく便利そうな予感。

810 :ちよ:03/07/03 23:49
はろ〜♪
http://kotarou.free-city.net/page002.html

811 :デフォルトの名無しさん:03/07/03 23:54
もういやだ!
デストラクタ辺りが複雑でついていけません。
「スマート」ポインタなのに、ユーザーが挙動を把握してないと使えないなんて
ナンセンスだと思います。

812 :デフォルトの名無しさん:03/07/04 00:35
>>809
> iteratorアダプターとかつかって自分でつくればいいのだが、まんどくせー。
作らんでもそのまんま indirect_iterator 使えばよいのではなかろうか。

813 :デフォルトの名無しさん:03/07/04 00:37
>>809
とちゅうでヌルポ入ってると、アルゴリズム系で爆死するがな。
しない方法ある?

あと、vc6だとmake_indirect_iteratorつかえないんで、まんどくさー。

814 :デフォルトの名無しさん:03/07/04 00:38
>>809じゃねーよ。
>>812だ。鬱だ。

815 :812:03/07/04 01:20
>>813-814
> *iteratorしたら、smartポインタの実体が返ってくる
この要求の時点でヌルポインタが入ってたら死亡確定な
気がするんだけど、どーゆー動作を期待してるん?

816 :デフォルトの名無しさん:03/07/04 01:20
★★完全無修正のエロエロサイト★★
http://upbbs.s2.x-beat.com/linkvp/linkvp.html

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



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

なんつーか、game programin gems の1巻にでてた、ハンドルマネージャークラスみたいに
Keyを入れたらすぐ値を返すために、vectorに値つーか、ポインタを保存しといて、
消去するときは、ポインタをNULLにするだけって感じなクラスをつくりたいときに、
めんどくさくなく、簡単にできんもんかなと思ったわけで。

818 :デフォルトの名無しさん:03/07/04 04:43
// うごいた・・・
#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;
}

819 :デフォルトの名無しさん:03/07/04 09:03
>>818
うんこVC6じゃコンパイルできない・・・。
はやく、7.1にしたい。

820 :デフォルトの名無しさん:03/07/04 18:27
おまえの稼ぎじゃ7.1なんて永遠に無理

821 :デフォルトの名無しさん:03/07/04 21:09
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
]

みたいなエラーが数箇所

どうすればいいんでしょう?

822 :デフォルトの名無しさん:03/07/04 23:13
>>821
>r<char>>::const_iterator,

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

r<char> >::const_iterator,

823 :デフォルトの名無しさん:03/07/04 23:47
ださいね(w

824 :デフォルトの名無しさん:03/07/05 11:11
>>822
821はエラーメッセージ中には'>>'が出てくるけどコンパイラがテンプレート
を展開したときにそうなってるだけで実際のソースはそうはなってないん
じゃないの?

違ったらごめん




825 : :03/07/05 12:36
知ったかが紛れ込んだ模様

826 :デフォルトの名無しさん:03/07/06 03:20
偶然boost::spiritを知って、ドキュメントを読んでみたが
これ凄いな

827 :デフォルトの名無しさん:03/07/06 13:09
yacc/lexには戻れない
といいたいけど、コンパイルにCPU食うんだよね、これ。

実験的に実践投入してます

828 :デフォルトの名無しさん:03/07/07 23:55
sprit 使った本格的な例何か無いかなぁ?
lisp のインタープリタとかそーゆーの。
そゆのがあれば大部使い方分かると思うんだけど。

829 :_:03/07/07 23:56
http://homepage.mac.com/hiroyuki44/

830 :デフォルトの名無しさん:03/07/07 23:56
>>828
Cプリプロセッサができあがってたはず。

831 :デフォルトの名無しさん:03/07/07 23:56
◎無修正画像をご覧下さい◎無料パスワードをゲットすれば、もっと凄い画像とムービーがご覧頂けます◎
http://endou.kir.jp/moro/linkv.html


832 :デフォルトの名無しさん:03/07/08 02:49
CSVのサンプルがあった

833 :デフォルトの名無しさん:03/07/08 05:37
ヤタ!漏れも今日からVC7.1だ!
lambdaが通ったときに感動したのは漏れだけですか。そうですか。

834 :デフォルトの名無しさん:03/07/09 10:03
7.1で不具合出たら報告キボンヌ

835 :デフォルトの名無しさん:03/07/09 23:04
lambda の読み方に関する議論は外出ですか?

とりあえず、「ランブダ」で合ってますか?

836 :デフォルトの名無しさん:03/07/09 23:19
>>835
らむだ

837 :デフォルトの名無しさん:03/07/10 00:45
議論も何もλそのまんまですからねぇ…

838 :デフォルトの名無しさん:03/07/10 09:02
ランバダ!!

839 :デフォルトの名無しさん:03/07/10 14:49
>835
ワロタ
っていうか高校物理で使っただろうに>λ(ラムダ)

840 :デフォルトの名無しさん:03/07/10 16:07
小学校入ったばっかの頃に「スターフォース」ってゲームをきっかけに
ギリシャ文字は全部覚えたよ。

841 :デフォルトの名無しさん:03/07/10 16:17
大学の教養で物理を真面目に勉強したらギリシャ文字をいつの間にか
全部覚えていた。

842 :デフォルトの名無しさん:03/07/10 16:26
じゃあ次は梵字だな

843 :デフォルトの名無しさん:03/07/10 23:57
小学校入ったばっかの頃に「斑鳩」ってゲームをきっかけに
梵字は全部覚えたよ。

844 :デフォルトの名無しさん:03/07/12 08:04
boostってすごいな
Cygwinのg++にboost_concept_check.hがあるじゃないですか。
これって有名な話?

845 :デフォルトの名無しさん:03/07/12 09:34
ああ、なんかつかえないや。う〜ん。

846 :デフォルトの名無しさん:03/07/12 10:29
結論。boostと一緒ジャン。
結局、普通にboostつかって。エラーチェックはstatic_assertのみに抑えて
あとはコンパイラに任せた方がよさそうだ。

847 :デフォルトの名無しさん:03/07/12 13:30


848 :デフォルトの名無しさん:03/07/14 01:50
ひとりごとで3レスかよ

849 :山崎 渉:03/07/15 10:03

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

850 :デフォルトの名無しさん:03/07/16 13:50
そろそろ

あ げ な い か?


851 :デフォルトの名無しさん:03/07/17 12:04
boost-jp だいぶ停滞してるね。あのプロジェクトは事実上フェイドアウト?

852 :デフォルトの名無しさん:03/07/17 14:02
まぁ、ボランティアだからな
メンバーが飽きたらそれまで

853 :デフォルトの名無しさん:03/07/17 18:31
日本人は持続力が無いね。

854 :デフォルトの名無しさん:03/07/17 18:50
>>851
俺の仕事代わりにやってくれるなら続きの訳してもいいよ。

855 :デフォルトの名無しさん:03/07/21 15:10
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.


856 :デフォルトの名無しさん:03/07/21 15:21
BoostのRegexはどうか知らないが、\が言語処理系のメタキャラで、かつ
正規表現のメタキャラなので、"\\\\"と書かないと正規表現中で「\」
一文字を表現できない、という問題がありがちです。

857 :デフォルトの名無しさん:03/07/21 15:44
\ にマッチする正規表現は /\\/ で、それを文字列で表すと "\\\\" ということですね

858 :855:03/07/21 15:51
>856-857

ありがとうございます。
というか、例外捉えるのをすっかり忘れていました(汗)。


859 :デフォルトの名無しさん:03/07/22 19:42
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を使おうとして動かなく、発見した。
既出かも知れないけど。



860 :デフォルトの名無しさん:03/07/23 06:09
boost::formatはistreamにも対応しないかねえ

861 :デフォルトの名無しさん:03/07/25 21:27
>>859
かなり前からCVSに修正版が置いてあった様な気がした。

862 :デフォルトの名無しさん:03/07/28 02:56
以下のソースをコンパイルするとエラーが出るのは何故なんでしょうか。
コメントアウトした部分のようにすれば大丈夫なんですが。

ソース:
#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;
}
};


863 :862:03/07/28 02:57
続き。

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'

864 :862:03/07/28 02:58
補足。
コンパイラは g++ (GCC) 3.2.3 (mingw special 20030504-1) です。

865 :デフォルトの名無しさん:03/07/28 03:51
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のバグかな。

866 :865:03/07/28 03:58
おもしろそうだから勝手にageさせてもらった。
ちなみに、
Test t1((function(bind(0))));
Test t2((function(bind(1))));
こうすれば、宣言と式の曖昧さが解決されて、
意図しているであろう本来の意味が、gccに伝わる。

867 :デフォルトの名無しさん:03/07/28 17:13
関数宣言と思われるからでは?
バグではなく、規格通りかと。

868 :865:03/07/29 00:42
>>867
エラーメッセージをよく見てみな。

869 :デフォルトの名無しさん:03/07/29 10:10
sandbox に何かお薦めってある?

870 :デフォルトの名無しさん:03/07/29 10:24
Let's boost 見たら
> 07/29 [Trojan Horse Warning] Webサーバーが感染しちゃってるので、 しばらくの間 IE からは boost.org のページを見ないように! とのこと。
http://aspn.activestate.com/ASPN/Mail/Message/boost/1750309
だと。

871 :デフォルトの名無しさん:03/07/29 23:54
>>870
これはageておいた方が良いだろう((((;゚Д゚)))ガクガクブルブル

872 :デフォルトの名無しさん:03/07/29 23:57
更新チェッカに引っかかったから見ちゃったよ。
サイズだけ変わってたのはそういうことか・・・。

とりあえずウィルスバスター無反応だった。

873 :デフォルトの名無しさん:03/07/30 19:53
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 を使ってるんですが。



874 :デフォルトの名無しさん:03/07/30 20:17
>>873
boost::mem_fnかboost::bindで。

875 :デフォルトの名無しさん:03/07/31 11:57
> 874
レスありがとうございます。

上をstd::for_each( vec.begin(), vec.end(), boost::bind( &hoge.print, _1 ) );
としたら動きました。

876 :デフォルトの名無しさん:03/07/31 23:25
>>875
boost::mem_fn(&hoge::print)
でも同じ事が出来るから試しにやってみれ。覚えておくと便利。

877 :山崎 渉:03/08/02 02:12
(^^)

878 :デフォルトの名無しさん:03/08/03 00:52
VC7.1が100%になってますね
ネタかと思ったよ

879 :デフォルトの名無しさん:03/08/03 13:00
どーせboostを通すことを再優先したんだろうけど。

880 :デフォルトの名無しさん:03/08/03 13:34
lokiもそのまま通るんじゃない?

881 :デフォルトの名無しさん:03/08/03 15:00
TypeList使えたよ。

882 :デフォルトの名無しさん:03/08/03 15:04
Boost, Loki, Blitzがらくらくって謳ってるしな。

883 :デフォルトの名無しさん:03/08/04 10:30
>>879
前々回が99%だったからboost側がコードを修正したんだろ
その1%はどのコンパイラも通ってなかったからソース自体がおかしかったんだろうし

boost通るってことはテンプレート周り完璧ってことなんだが

884 :デフォルトの名無しさん:03/08/04 10:33
Blitzって何?

885 :デフォルトの名無しさん:03/08/04 18:34
>>883
これでtypeofサポートしてくれたら……_| ̄|○

886 :デフォルトの名無しさん:03/08/05 01:01
typeofってどんな仕様のもので、どう使えるものが欲しいの?

887 :デフォルトの名無しさん:03/08/05 06:18
1.30.1 age

888 :デフォルトの名無しさん:03/08/05 08:48
>>886
http://gcc.gnu.org/onlinedocs/gcc/Typeof.html
http://std.dkuug.dk/JTC1/SC22/WG21/docs/papers/2003/n1478.pdf

889 :デフォルトの名無しさん:03/08/05 09:10
>>884
http://www.oonumerics.org/blitz/

890 :デフォルトの名無しさん:03/08/05 09:49
gcc/gcc/cp/* のバグ出ししてください。おながいします。

891 :デフォルトの名無しさん:03/08/05 22:10
std::string s = "000000FE";
unsigned long l = boost::lexical_cast<unsigned long>(s);
ってやったら例外投げつけられました。
16進の文字列はキャストできないんですか?
また、どのようにしたらできますか?

892 :デフォルトの名無しさん:03/08/05 22:35
strtoul(s.c_str(),0,16);

893 :デフォルトの名無しさん:03/08/06 03:07
内部で使われるストリームに書式を伝える方法がないからな

>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.

894 :デフォルトの名無しさん:03/08/06 04:37
struct B {};
struct D: B {};
B* ins = new D;
のとき、typeof(ins)はBになるのだが、
静的でなく動的な型を拾ってくれるtypeofはないものか。

895 :デフォルトの名無しさん:03/08/06 08:24
>>894
既にあるやん、typeid 。

896 :デフォルトの名無しさん:03/08/06 09:57
boost以前にC,C++をしっかりマスターしないとダメづら

897 :デフォルトの名無しさん:03/08/06 17:50
そうでござるな

898 :デフォルトの名無しさん:03/08/06 19:42
>>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;
  }
}


899 :デフォルトの名無しさん:03/08/06 19:45
>>898

  × >>89
  ○ >>891

900 :デフォルトの名無しさん:03/08/06 21:26
>>895
typeidじゃ型として使えないんじゃ?

901 :デフォルトの名無しさん:03/08/06 21:34
>>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から呼びだしゃ十分

902 :デフォルトの名無しさん:03/08/07 07:41
C++では任意型のデータを動的に作れるわけではないから無意味

903 :C++に死刑判決!!C ◆stD.yN6T9U :03/08/07 11:36
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


904 :デフォルトの名無しさん:03/08/07 12:59
( ゚д゚)ポカーーーーーーーーーーーーーーン

905 :デフォルトの名無しさん:03/08/07 17:26
つい、この間
shared_ptr の ポインタ(しかもvoid*にキャストして)を関数に渡して
データぶっ飛んでるよとなげいたことがありますた。

おまいらもなんかない?

906 :デフォルトの名無しさん:03/08/08 00:37
"1.30.1 is completely broken."

907 :デフォルトの名無しさん:03/08/08 02:08
>>906
? 何かあったの?

908 :906ではないが:03/08/08 08:21
>>907
いやもうバグだらけなので1.30.2を出すらしいよ。

909 :デフォルトの名無しさん:03/08/08 09:07
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=5651&KEY=1048584601&START=47

910 :デフォルトの名無しさん:03/08/08 11:15
ちょっといいですか?
BCC5.5で正規表現を使おうとすると
エラーが2,3個と警告が多数でるのですがどうすればいいのでしょうか。
ちなみにサンプルプログラムでも同じ現象が・・・

911 :デフォルトの名無しさん:03/08/08 12:08
>>910
http://www.hyuki.com/writing/techask.html

912 :デフォルトの名無しさん:03/08/08 15:25
>>911
http://homepage.mac.com/hiroyuki44/hankaku02.html

913 :デフォルトの名無しさん:03/08/10 12:50
今までvc6でboostが使えていたのですが.NET 2003で使おうと思い
.NET 2003のIDEのインクルードpathの設定をして、boost::formatでも試してみるかと思ったら
いきなりdisambiguaterが定義されていない識別子です、と言われてしまいます。
他にもテンプレートがらみのエラーがたくさん出ます。

.NET 2003のIDEからboostを使うときは何か他に設定が必要なんでしょうか?
場違いかとは思いますが、どうかよろしくおねがいします。

914 :デフォルトの名無しさん:03/08/10 17:18
>>913
>>859

915 :デフォルトの名無しさん:03/08/10 21:32
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: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください
とでるんだけどもしかして漏れの設定ミス?

916 :デフォルトの名無しさん:03/08/10 21:35
>>915
エラーもう一個追加
エラー E2324 \boost/limits.hpp 40: 数値定数が大きすぎる

917 :山崎 渉:03/08/15 15:54
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

918 :デフォルトの名無しさん:03/08/17 21:14
通報しますた

919 :デフォルトの名無しさん:03/08/18 00:35
>>918
良くやった

920 :デフォルトの名無しさん:03/08/18 13:02
cygwinでboost使うにはどうすればいいの?

921 :デフォルトの名無しさん:03/08/18 19:26
>>920
boostのうちでビルド不要な部分は #include さえすれば使えるので、
gccの、なんだっけ 環境変数CPLUS_INCLUDE_PATH とかでboostにパス通しとけばok。

ビルドが要る部分は、
 bjam -sTOOLS=gcc
でcygwin-gcc用にビルドできる。

922 :デフォルトの名無しさん:03/08/18 21:32
boost::threadの使い方を教えて欲しいダス。
bjamでビルドしたライブラリをプロジェクトに追加するだけじゃだめなんでつか?

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

ここをミロでもイイですので。

923 :920:03/08/18 22:18
なるほど、thanks!


924 :デフォルトの名無しさん:03/08/18 22:22
>>922
プロジェクトのプロパティのC/C++のコード生成のランタイムライブラリ
をマルチスレッド用に汁。

925 :デフォルトの名無しさん:03/08/18 22:45
>>924
できましたthx!
基本的なことなのに忘れてました。

926 :デフォルトの名無しさん:03/08/18 22:51
次スレはなしの方向で。
templateライブラリ総合スレッドへ移動よろしこ。

927 :↑そのスレのURLぐらい貼ったら?:03/08/18 23:03
 

928 :デフォルトの名無しさん:03/08/18 23:07
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50

だす。STLが相談室とどちらが相応しいのかは分らん。

929 :デフォルトの名無しさん:03/08/18 23:16
そのスレ荒れてるしboost専用スレ立てたほうが懸命だな。
というわけで漏れはboost専用の次スレに一票。


930 :デフォルトの名無しさん:03/08/19 00:01
>>929
一年前、確か、STL,boost,Loki,とテンプレートライブラリ関連の
スレッドが沢山ありすぎて読み難いという話から、一つにまとめよう
ということで、できたのが上のスレッドです。まさかここまでboost
スレが長持ちするものだとは思わなかったけどw
個人的にはどうでもいいです。boostスレが別個にあってもいいとは思います。

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

後の人に任せます。

931 :phoenix:03/08/19 01:35
spiritコムパイル遅すぎsage


932 :デフォルトの名無しさん:03/08/19 08:37
おまえら1.30.2でますたよ。



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

把握している人がいたら、解説キボン


934 :922:03/08/19 17:48
boost::threadを使った簡単なサンプル(ttp://www.kmonos.net/alang/boost/classes/thread.html)をコンパイルすると

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

ってのがいっぱい出るけどどうしたらよいでしょうか。無視?

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

誰かマジメにスレッド追ってる人、解説キボン。

936 :デフォルトの名無しさん:03/08/19 22:23
boost初心者ですがおながいします。
rationalとintを掛けたいのですができません。

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

int i= r * 2000;

見たいなのですが。どうすればいいでしょうか?

937 :936:03/08/19 22:27
すんません。rational_castっていうのがあるのですね。
しつれいしますた。

938 :933:03/08/20 11:53
>>935
ありがとう。
MLのLOGを読もうとしたけど、どこが根っこなのかわからなかったから、
こうしてまとめてもらえると助かります。
引き続き情報募集中です。

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

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

期待大。


939 :933:03/08/20 12:01
↑は、テストコードと、適当なヘッダを見ただけで書いたもの。
ソース部分は相変わらず複雑で、読むには相当な気合がなきゃダメっぽ。

940 :デフォルトの名無しさん:03/08/21 02:37
boostの実装ファイルはippって拡張子ですが、なぜなのでしょうか?
cppじゃない理由が知りたいれす



941 :デフォルトの名無しさん:03/08/21 07:09
BOOST_STATIC_CONSTANT の第2引数内にカンマを使いたいときは一度 typedef して
BOOST_STATIC_CONSTANT(bool, tmp::value) とかして大丈夫ですか?


942 :デフォルトの名無しさん:03/08/21 11:09
>>940

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

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

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

regexやthreadなどのライブラリのコンパイルが必要なものは実装に*.cppを使っている。

943 :デフォルトの名無しさん:03/08/21 15:35
>942
それは知ってます。hppじゃなくてippの話なんですが。


944 :デフォルトの名無しさん:03/08/21 15:42
>>943
ippって何のコンピュータ用のboostよ?Win32用は全部hppだぜ。

945 :デフォルトの名無しさん:03/08/21 15:43
というかboostはコンピュータをディレクティブで判断してるから一種類
しかないんだった。ippなんて見たことないなあ。

946 :デフォルトの名無しさん:03/08/21 15:52
*.ippは33ファイルあるよ。拡張子の用途は不明だが。MLに加入して
理由を聞いてみれば?

947 :デフォルトの名無しさん:03/08/21 18:05
vcとかだと、テンプレート宣言をヘッダに書いて、実装をcppに書くってことができんから、
ヘッダの最後の方でcppをインクルードするじゃないですか。
そんときに普通の実装と区別しやすいようにわざとippにしてんじゃないの?
インラインの頭文字とってippなのでしょうかね?

948 :デフォルトの名無しさん:04/03/26 19:20
あれなんでこんな古いスレがあるの?w

949 :デフォルトの名無しさん:04/03/26 19:37
過去を改変してみるテスト。
次スレはtemplateスレじゃなくて独自に建てようぜ!

950 :デフォルトの名無しさん:04/03/26 19:43
templateの話題はC++相談室でやってもらって、
テンプレートライブラリに特化した話をするスレつくろうぜ!

231 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)