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やコンパイラの垣根を越えて
共同作業というのもたまにはいいのではないでしょうか。

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)