C++相談室 part24

このエントリーをはてなブックマークに追加
Web上で見かけたんだけど

class parent{
public:
virtual void func( void ){ cout << "parent\n"; }
};

class child: public parent{
public:
virtual void func( void ){ cout << "child\n"; }
};

void main()
{
child a;
parent b;
parent &c = ( true ) ? a : b;
parent &d = a;
c.func();
d.func();
}

結果
parent
child

はVC++6.0のバグ?
>>456
VC++6.0でこれだとどうなるの?

#include <iostream>
class parent{
int x;
public:
parent(int i):x(i){}
virtual void func(void){cout<<"parent "<<x<<"\n";}
};
class child:public parent{
public:
child(int i):parent(i){}
virtual void func(void){cout<<"child "<<x<<"\n";}
};
int main()
{
child a(1);
parent b(2);
parent&c=(true)?a:b;
parent&d=a;
c.func();
d.func();
}
いい加減VC++6.0は捨てろ。それにスレ違い。
459デフォルトの名無しさん:03/10/26 15:55
スレ違いではありませんので458を無視してください
460デフォルトの名無しさん:03/10/26 16:00
BCCでもそうだった。なんでなんで?
461デフォルトの名無しさん:03/10/26 16:09
virtual関数の実装が別コンパイル単位(ファイル)だったら起きない問題か。
クラス宣言内に実装があるので、可能ならインライン展開しようとするから
そんときのクラスの選択がバグってると。
さすがに >>457 の数字はちゃんと正しく(共に1が)出るんじゃないか。

VC6持ってる人検証キボン
参照だからじゃない
>>462
参照じゃなかったら文法違反だと思はれ。
464デフォルトの名無しさん:03/10/26 16:26
>>461
俺もinline化に関わるバグと思う
465デフォルトの名無しさん:03/10/26 16:33
vc6でやったよ。
xはprivateだからコンパイル通らんよ。
publicにしてさらに
//parent&c=(true)?a:b;
parent&c=a;
にしたら直ったよ。
466デフォルトの名無しさん:03/10/26 16:34
安心したければGCC使えということで
GCCかよ(笑
VC++6なんていう、ANSIC++以前のコンパイラが
ANSIC++に対応してないっていう話はいい加減やめれ。
そんなの当たり前もいいところ。
それを鬼の首でもとったかのように喜んでるのはただの知的障害者。
>>468
規格制定前にその規格を満たす実装は存在していないという妄想の例
470456:03/10/26 17:30
>457
> VC++6.0でこれだとどうなるの?
parent 1
child 1
三項演算子は正しくaを返してます。

>461
念のため関数定義を別のファイルにまで持っていきましたが再現したので
inlineは関係無いと思います


いろいろ試してみた結果、三項の部分は、どうも
parent &c = parent(( true ) ? a : b);
こんな風に解釈されているっぽいです。


ちなみに参照をポインタに変えたら、当然?期待通りに動いてくれます。
471デフォルトの名無しさん:03/10/26 17:32
>>470
コンストラクターの呼出し回数を数えてみるといいかも
472471:03/10/26 17:33
あ、その場合は
コピーコンストラクターを明示的に定義して
その中でカウントするなり、coutに向かって何かを書くなり
ANSIC++はある日突然現われたのではなく長い年月の議論の末に生まれているから
ANSIC++が確定する以前であってもANSIC++の概要を知ることは可能。
ANSIC++が確定する以前に作られたVC++6が
ANSIC++に書かれてあることの全てに対応できていなくても部分的に対応できていれば、
どこまで対応できているのかについての議論は今でも意味がある。
その議論そのものの存在意義を否定することができるのは
VC++6がANSIC++に書かれてあること全てに対応していない
ということが明確である場合だけとなる。

>>468
てことでVC++6はANSIC++に書かれてあること全てに対応していない
と言いたいということでよろしいか?
そんな古いコンパイラの話せずにおとなしくBoost100%のVC++7.1を使えばいいよ
>>463
ポインターってこと
parent* c = ( true ) ? &a : &b;
>>470
ということは、ポインタでなく値が式の結果となる三項演算子は
両者の型が違うときは共通化できる型に変換し、変換されるほうは
一時オブジェクトを生成して返してるってことになるのか。
VC++7.1 を使いたいのは山々なんだけど、いろいろなしがらみから現実には
まだまだ VC++6 をつかわにゃならんケースが多いんだろ。
実際問題、今現在でも VC++6 がもっとも使われている C++ コンパイラなんじゃないの?
478デフォルトの名無しさん:03/10/26 17:54
>>477
そんな統計あるならソース出せ
>>477
 winだけならな
>>474
いっとくけどvc7.1も>>456のもんだい解決できないぜ
481デフォルトの名無しさん:03/10/26 18:11
VC++はまずいよ。
こういうコンパイラーのおかしな動きで
システムに障害が出て
損害賠償請求されたらたまったもんじゃない。
>>481
納める前に動作確認するだろ。
>>482
馬具が必ず再現できるとは限らないよな
テスト至上主義には分からんか
>>483
まあそうだが、
コンパイラは規格に合致していることを契約しているわけではないので
従っていないことを理由に文句を付けることはできないよな。
コンパイラを選んだ時点で、現状のそのコンパイラの挙動に合わせて作る
しかない。
挙動を確認せずに間違って使ったほうが悪いんでは?
>>483
開発者の怠慢ですね
486463:03/10/26 18:17
child a;
parent b = a;
が通ったんだけど・・・

もしかして漏れとんでもない勘違いしてる?
その前にポリモーフィズムと言ったら普通ポインターでは
virtual関数周りの動作は実際に動いてみるまで分からないから怖い。
>>456のようなバグも
そのバグが発生しても日常的には問題がなくて気付かず、
珍しい条件が揃ってから初めて症状が出てくるようなシステムだと
動作確認で問題を見付けられないだろうな。
>>486
勉強し直し
>>484
一般的に、コンパイラーを選ぶのも開発側の責任に含まれることが多いから、
コンパイラーのバグが原因であっても、そうでなくても、
すべてひっくるめて動作の不具合は開発側の責任になって
開発側の負担にて修正することになる。
契約によっては損害賠償もあるだろう。
>>490
人命に関わるバグだったりすると・・・ね
492デフォルトの名無しさん:03/10/26 18:21
Windows上のシステムだと
コンパイラーの不具合でシステムが挙動不審になる確率より、
先にOSが勝手に落ちてくれる確率が高いから気にしない文化あり。

Windows以外の環境だと
VC++の選択はありえないのでこれまた問題ない。
>>492
別に開発環境のバグで起きたことについての損害賠償云々ってのはWindowsに限ったことではないんだが。
494デフォルトの名無しさん:03/10/26 18:29
結局>>456のサンプルはVC++6でも7.1でも駄目なのか?
>>494
自分で試せ
つーかVCの挙動が正しいんじゃないか?
497デフォルトの名無しさん:03/10/26 18:38
>>496
理由は?
VCが正しいとしても、constではない参照がテンポラリオブジェクトを指していることにならないか?
>>497
式'(true) ? a : b'の型はparent(parent &ではない)になるのが自然だと思われるから。
>>498
確かにそうだ。
VC7.0だと

これも
void foo(parent &){}
foo(parent());

これも
parent &c = parent(a);

コンパイル通るね。
Final Draftだから以後変わってるかもしれんが:
5.16 - Conditional operator [expr.cond]
の-3-の3個目では
if E1 and E2 have class type, (中略)
If the conversion is applied, E1 is changed to an rvalue of type T2 that
still refers to the original source class object (or the appropriate
subobject thereof). [Note: that is, no copy is made. ]

となってるみたいな。
>498
無名オブジェクトの、参照による延命ってやつ?では。

>499
(式) ? a : b;
のaとbが同じ型の場合だと、テンポラリは作られなかった。から正しくない。
>>499
> 式'(true) ? a : b'の型はparent(parent &ではない)になるのが自然だと思われるから。

まったく不自然なんだが。

parent & x = (true) ? a : b;
で、aとbが共にchildクラスだった場合もここでテンポラリー生成が自然?
となると
parent & x = a;
の場合もテンポラリー生成が自然ということになる。
505デフォルトの名無しさん:03/10/26 19:20
499がどのように感じても、VCの動きは規格的に間違いなので
「VCの挙動が正しい」という結論には繋がない
>>505
根拠は?
>>505
お前が作った規格で正しいと言われてもなぁ(藁
だれか>>502を和訳してくれ
最終Draftだから以後変わってるかもしれんが:5.16 ―条件付きのオペレーター[expr.cond] の(3)の3個目ではE1とE2がクラス・タイプ(中略)を持っている場合、
転換が適用される場合、E1は、オリジナルの出所クラス・オブジェクト(あるいはそれの適切なサブオブジェクト)にまだ言及するタイプT2のrvalueに変更されます。[注:すなわち、コピーは作られません。]となってるみたいな。
>>509
おお、ありがとう
511デフォルトの名無しさん:03/10/26 19:50
>>507
502の規格を作った人が505なのか?
512デフォルトの名無しさん:03/10/26 19:51
>>505 == ANSIC++規格作者
ということで
つーかVCが正しいでしょ。
間違っているという奴は間違っている証拠を出せないんだし。
>>513
502が証拠では?
ANSI C++ と VC++ の挙動が違うということは分かった。
しかし ANSI C++ が正しいという証拠はない。
ANSI C++ が間違いで VC++ が正しいこともある。
>>515
ちょっと違う。正式なANSI C++の規格自体出ていない。
ふざけんなてめーら。
わざわざDraftなんか持ち出して嘘つきやがって。
ISOだとVC++が正しいじゃねーかよ。

― if E1 and E2 have class type, and the underlying class types are the same or one is a base class of
the other: E1 can be converted to match E2 if the class of T2 is the same type as, or a base class of,
the class of T1, and the cv-qualification of T2 is the same cv-qualification as, or a greater cv-qualification
than, the cv-qualification of T1. If the conversion is applied, E1 is changed to an
rvalue of type T2 that still refers to the original source class object (or the appropriate subobject
thereof). [Note: that is, no copy is made. ]
518デフォルトの名無しさん:03/10/26 20:07
てことはANSI C++が間違いなので、ていうか存在してないので、
VCが正しいのか
>>518
違う。Draft(草案)が変更になった。
どうやらM$叩きは失敗したようだ。
>>478-479
http://www.trickpalace.net/cgi-bin/cppll/enq.cgi?mode=enquete&number=5

母数が少ないが、VC++6 がもっとも使われている C++ コンパイラ
という話はそれなりに信憑性があると思うぞ。
>>517
ん? 同じ文じゃないの?
つーか、英語を読めないだけだろ。
524デフォルトの名無しさん:03/10/26 20:11
>>517
君の出してくれたISOはVC++の間違いを示してくれてるよ
>>521
少なすぎ。
いくらBoost100%でもこんなに簡単な所で間違えてるようじゃVC++もまだまだだな。
なんでプログラマって英語も読めない馬鹿が多いの?
>>527
ふーん。そうやってアメリカのいいなりになるのか。
529デフォルトの名無しさん:03/10/26 20:15
>>525
激しく大笑いしました。
530デフォルトの名無しさん:03/10/26 20:16
>>517
That is, That is, That is,

> If the conversion is applied,
> E1 is changed to an rvalue of type T2 that still refers to the original source class object
> (or the appropriate subobject thereof).
> [Note: that is, no copy is made. ]

no copy is made.
in other words,
refers to the original source class object.

VC++ made temporary object, in this case.
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2
E1 is changed to an rvalue of type T2

つーかさ、ISOの記述が曖昧すぎるんだよ。
532デフォルトの名無しさん:03/10/26 20:19
この件に関して
VC++の動きとISO C++の規格が不一致であることはずっと明確であるのだが、
VC++が正しいと言ってる連中は
VC++が正しくてISO C++が間違っていると言ってるわけだよな?
ISO/IEC 14882:2003ではMSの方が正しくなっているに違いない。
>>528
英語読めるだけでアメリカの言いなりだなんて。
お前は未だに敵国語は使うなの精神で生きているのか?(w
しかし低級2cherがISO/IEC 14882:2003を所持しているはずが無いので、
この問題は海の底へと消え去るのでした。
536デフォルトの名無しさん:03/10/26 20:21
>>531
> E1 is changed to an rvalue of type T2
> E1 is changed to an rvalue of type T2

もしかしてその続きが読めない人?
>>532
> VC++の動きとISO C++の規格が不一致であることはずっと明確であるのだが、
そこが間違っている。
539デフォルトの名無しさん:03/10/26 20:28
>>537
なぜ間違っていることになる?
540デフォルトの名無しさん:03/10/26 20:31
ISO C++ Draftによると、
コピーは作成されず元オブジェクトへの参照になると書かれている。
VC++の動作ではテンポラリーオブジェクトとしてコピーが作成されている。
確かにISO C++ Draft的にはVC++の動きが間違い
でドラフトがどうかしたのか?
ドラフトが規格と全く同じだとでも?
542デフォルトの名無しさん:03/10/26 20:36
いまだにVC++が正しいと信じて疑わない連中がいるようですが
そいつらとしては
「VC++的にはISO C++が間違い」
という結論になってるんですよね?
>>542
だからドラフトが違うんだってば。いい加減にしろよ。
まあBoostでさえ100%取れないGCCはそれ未満だけどな。
ちなみにその部分はドラフトも正式規格も同じ
>>545
ソースは?
>>543
ソースは?
>>538
http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+14882%2D1998
14882:1998(訂正が盛り込まれる前の規格)は18j。(昔から)
なんでこんなに違うんだろ?
必死で正式版を隠しているのが笑える。
550デフォルトの名無しさん:03/10/26 20:48
ISO C++を100%取れないVC++と
Boostを100%取れないGCCの闘い

ISO C++とBoost、どちらを選ぶ人が多いか
551デフォルトの名無しさん:03/10/26 20:52
どっちを選ぶもなにも、
PC-UNIXならGCCしかないし、
WindowsならVC++しかないし
Cコンパイラの選択肢なんて
あってないようなものです
>>550
GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
553デフォルトの名無しさん:03/10/26 20:59
>>552
ソースは?
>>553
えっ? Boost100%じゃないのにISO C++100%だとでも?
555デフォルトの名無しさん:03/10/26 21:03
>>552
いつから
「Boostが100%動けばISO C++100%」
というようになったんだ?
>>555
誰もそんなこと言って無いだろ。日本語読めないのか?
とりあえずここのレベル低い香具師らはexportも知らないんだろうな
558デフォルトの名無しさん:03/10/26 21:09
>>556
「ISOC++100%取れてないならばBoost100%動作ではない」が真で
「Boost100%動作ではないならばISOC++100%取れてない」が偽ですか
>>558
当たり前だ。ボケ。
560デフォルトの名無しさん:03/10/26 21:14
VC++を必死で擁護する人って
対偶もしらないアフォばかりということでよろしい?
>>558
逆っぽそうだけどなあ。
BoostはISOの機能の一部を使って実装されているものだし。
0%-----------Boost100%-------------ISO%

Boost 100%でもISO 100%にならないことはあるが、
Boost 100%になってないのにISO 100%になることはない。

563562 ちょっと修正:03/10/26 21:16
0%-----------Boost100%-------------ISO100%
>>556
いや、言ってるよ

> GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
というのは
Boost100%動いたらISOC++100%取れてると言ってるのと同じ意味
>>564 ははははは。お前真性馬鹿だろ。
566デフォルトの名無しさん:03/10/26 21:17
564さらしあげ
567デフォルトの名無しさん:03/10/26 21:18
564は釣りだろ釣りw。ブハァ
568デフォルトの名無しさん:03/10/26 21:18
「AでないならばBでない」というのは
「BならばAである」と言ってるのと同じ意味。


段々と感情論になってきてますよ。
牛乳飲んでカルシウム補給せよ。
Boostが100%取れてないGCCがISO 100%になるはずないな。

ところで>>564よ。VCはBoost 100%なのだが、
ISO 100%だと本気で思っているのかね?
571デフォルトの名無しさん:03/10/26 21:20
「ISOC++100%取れてないからBoost100%じゃない」
ってことが正しいなら
「Boost100%動いたらISOC++100%取れてる」
ってことになるのでは?
572デフォルトの名無しさん:03/10/26 21:21
>>568
違います。もう少し勉強してください。
573デフォルトの名無しさん:03/10/26 21:22
>>568
対偶だよね〜
>>571
なりません。もう少し勉強してください。
>>572
君がね
576デフォルトの名無しさん:03/10/26 21:24
相変わらずレベルの低いスレだな
>>576
これくらいレベルが低くないと、プログラマなんてやってられません
578デフォルトの名無しさん:03/10/26 21:26
>>568
> 「AでないならばBでない」というのは
> 「BならばAである」と言ってるのと同じ意味。
全然ちがう。1つ目が正しいなら2つ目は間違い。

>>571
> 「ISOC++100%取れてないからBoost100%じゃない」
> ってことが正しいなら
> 「Boost100%動いたらISOC++100%取れてる」
> ってことになるのでは?

1つ目は正しいが、2つ目は間違い。
GCCは「ISOC++100%取れてないからBoost100%じゃない」になる。
BoostもISOC++も100%じゃないGCCと、
Boostが100%だと分かっているVC++。
どちらが正しいか誰が見ても明らか。
0%---GCC------Boost100%-----VC------ISO100%

Boostが100%に達していないなら、ISOが100%に達することはないし、
Boostが100%に達していても、ISOが100%に達しないこともある。

Boostが100%に達していないGCCはISOが100%になることはない。
そしてBoostが100%だからといってVCがISO 100%だと言っている奴もいない。

一人、Boost 100%ゆえにISO 100%と勘違いしている馬鹿がいるみたいだが(藁
(´д`)
581デフォルトの名無しさん:03/10/26 21:28
>>579
違います。
VC++はBoost 100%だから当然ISO C++100%になります。
みなさん幸せなんですね。
こんなにもくだらない事で盛り上がれるなんて。
>>578
ネタの可能性が高いけどマジレス。
「AでないならばBでない」ということは、Bという集合はAからはみ出だしていないことになる。
つまりBはAに含まれる訳だ。
このことから「BならばAである」は正しい。
>>581
もうそろそろ諦めたらどうだ。GCCはISOを100%満たしていないし
GCCはVCよりも劣るのだよ。
585デフォルトの名無しさん:03/10/26 21:31
>>584
たとえばお前とか
VC擁護してる馬鹿連中って根拠ないし、非論理的。
586デフォルトの名無しさん:03/10/26 21:33
>>583
> 「AでないならばBでない」ということは、Bという集合はAからはみ出だしていないことになる。
> つまりBはAに含まれる訳だ。
> このことから「BならばAである」は正しい。

ネタだろうけど、A=バナナ、B=リンゴに当てはめてみたよ(w

「バナナでないならばリンゴでない」ということは、リンゴという集合はバナナからはみ出だしていないことになる。
つまりリンゴはバナナに含まれる訳だ。
このことから「リンゴならばバナナである」は正しい。
>>552
> GCCもISOC++100%取れてないからBoost100%じゃないんだろ。

GCC叩きたくて必死らしいけど
そんな分かりやすい嘘をついてまで叩かなければならないのか?
0%---GCC------Boost100%-----VC------ISO100%

この図が真実を表している。だれも反論する奴はいないだろう。
>>586
ネタだろうけど、
「バナナでないならばリンゴでない」
は真ではないので、その推論は間違い。
おまえら、スレ違いですよ。
それにISO100%ってなんですか?どうやって確認するんですか?
ISOがテストプログラムでも用意してくれてるんですか?
>>587
どの点がウソだと?
>>586
>バナナでないならばリンゴでない
そもそもこれが間違っているだろ。
前提として「AでないならばBでない」が正しければ、
「BならばAである」が正しいと言っているわけで・・・
>>589
その通り。583の言っていることはめちゃくちゃ。
>>592
俺に反論するなよ。俺は単にA=バナナ、B=リンゴに置き換えただけだ。
583の言っていることがおかしいんだよ。
前提が間違っているなら、どんな命題も真って
直感に反するよな。
0%---GCC------Boost100%-----VC------ISO100%

この図が真実を表している。だれも反論する奴はいないだろう。
597デフォルトの名無しさん:03/10/26 21:38
 ←────→ISO 100%


│    GCC
↓VC++
Boost 100%
ここまでのまとめ。

550 :デフォルトの名無しさん :03/10/26 20:48
ISO C++を100%取れないVC++と
Boostを100%取れないGCCの闘い

ISO C++とBoost、どちらを選ぶ人が多いか


552 :デフォルトの名無しさん :03/10/26 20:53
>>550
GCCもISOC++100%取れてないからBoost100%じゃないんだろ。


555 :デフォルトの名無しさん :03/10/26 21:03
>>552
いつから
「Boostが100%動けばISO C++100%」
というようになったんだ?

556 :デフォルトの名無しさん :03/10/26 21:07
>>555
誰もそんなこと言って無いだろ。日本語読めないのか?
0%---GCC------Boost100%-----VC------ISO100%

この図が真実を表している。だれも反論する奴はいないだろう。
600デフォルトの名無しさん:03/10/26 21:42
質問です。
mmintrin.h の組み込み関数使いたいんけど、
このファイル、VCのSP5についてなかったっけ?

SP5入れたのに mmintrin.h が見つからない・・・。
ProcessorPackじゃないとダメとか?
うへ〜、とりあえず論理的な間違いだけは落ち着いてちゃんと理解しようよ。

A: (x > 5)
B: (x > 7)

「AでないならBでない」: (x <= 5)なら(x <= 7)
「BならばA」: (x > 7)なら(x > 5)

対偶の真偽は常に一致。

ではISO C++とBoostの話をどうぞ。
602デフォルトの名無しさん:03/10/26 21:42
>>600
雰囲気嫁馬鹿
552=556=VCマンセーによるGCC叩き
604デフォルトの名無しさん:03/10/26 21:44
要するにISO 100%取れないだけのVCと
ISOもBoostも100%取れないGCCってことだろ。
GCCコンパイル遅いよね
対偶しらない中学生に説明してるみたいだな・・・
たとえば
「辛くなければ唐辛子ではない」これが正しければ、
「唐辛子は辛い」が成り立つ。

同じように
「バナナでないならばリンゴでない」これが正しければ、
「リンゴならばバナナである」も正しい。

ただし、「バナナでないならばリンゴでない」これが間違っているのは
明らかなので「リンゴならばバナナである」は正しくない。
ISOの100%ってなに?どうやって確かめるの?
そんなにISO100%にしたければ自分でコンパイラ作れ
609デフォルトの名無しさん:03/10/26 21:48
>>601
0%---GCC------Boost100%-----VC------ISO100%
これをAとBに代入すると

Boost100%: (x > 5)
ISO100%: (x > 7)

「Boost100%でないならISO100%でない」
「ISO100%ならばBoost100%」

うむ。間違いではない。ところでISO100%と言った奴は誰かいるのか?
VCとGCCがそれぞれが何パーセント準拠しているのか分からんが
今回のバグ問題のようにいざってとき裏切ってくれるから
(ていうか今まで痛い目に会いすぎてるから)
漏れ的にはVCを信用しなかったりする
611デフォルトの名無しさん:03/10/26 21:49
つまり、Boost100%でないGCCは
当然ISOも100%ではないわけだ。
>>550
 > ISO C++を100%取れないVC++と
 > Boostを100%取れないGCCの闘い
 >
 > ISO C++とBoost、どちらを選ぶ人が多いか
に対するレスとしての>>552
 > GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
を読んで>>564
 > > GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
 > というのは
 > Boost100%動いたらISOC++100%取れてると言ってるのと同じ意味
みたいに解釈したり >>568
 > 「AでないならばBでない」
みたいにどこからともなく"ならば"を召還したりできる人がいるらしいが、

552の発言って>>570
 > Boostが100%取れてないGCCがISO 100%になるはずないな。
と同じ意味だろ。
とりあえずおまいら必要充分条件から出直せ
子供の中には「対偶も真なり」を直感的に受けつけてくれない奴もいるようだ
対偶からも証明されているように、これが正しい。
0%---GCC------Boost100%-----VC------ISO100%
616デフォルトの名無しさん:03/10/26 21:57
俺分かった。

ここにはVCはBoost100%(GCCは100%じゃない)だと知らない奴がいる。
617デフォルトの名無しさん:03/10/26 21:59
>>615
Boostへの対応度とISO C++への対応度は別次元では?
>>617
Boostは、次期ISO C++(C++0x)のライブラリ案を目的として
ISO C++の仕様を前提にして実装されているものなわけだが
>>617
Boostって何か知っている?
C++の機能(テンプレート)を使ったライブラリだよ。
BoostのテストってのはC++のテンプレートが正しく
実装されていれば100%とれる。
>>619
ろくにBoost知らないくせにそんな適当な事書いて恥ずかしくないの?
Boostは100%であるVCだがISOは100%でない。
Boostは100%でないGCCはISOも100%でない。
それだけのことなのに何でこんなにレスついてんだ?(w
>>621
みんな暇なんです。
>>620
言いたい事はそれだけのようですね。
間違いがないから指摘できないのでしょうが。
>>621
GCC LOVEなんです。
なあ、boostのリグレッションテストって日々増えてるんだよな?
http://boost.sourceforge.net/regression-logs/
100%なんて数字は今はどこにも書いてないわけだが。
>>623
boost::preprocessorはテンプレートで実装されてるんですか。そうですか。
>>623のような無知は怖いな

>>456 は?
--------------
今日の名(迷)言
--------------

**************************************************

Boostって何か知っている?
C++の機能(テンプレート)を使ったライブラリだよ。
BoostのテストってのはC++のテンプレートが正しく
実装されていれば100%とれる。



                             by >>619
**************************************************



いい加減、VC++6は
>>618
たまにコンパイラ依存 (ANSI C++ だと実装依存とされるやつ) のコードが発見されて、
修正が入ったりするけど。まぁ、かなり希だが。
>>629
いいから反論(w
>>630
一世代前のVCがどうかしましたか?
>>634
二世代前ですが
二世代前ではなかろうか。
>>634
二世代前なんじゃないかな
ケコーン >>635-636
>>626
boost::preprocessorは何で作られていると思ってるんだ?(w
Boostがテンプレートで作られていようが作られていまいが、
Boostで100%を取れないGCCはクソなわけだが。
641デフォルトの名無しさん:03/10/26 22:24
ようするに標準C++への対応度から言えば
GCC < VCということですね。
boost100%って強調するけど、現時点じゃ100%じゃないし、
それにGCCだって98%(Failが6個)は達成してる。
おまえらそんなに奇抜なコード書いてるのか?

>>640
大してかわらんだろ。
>>642
GCCが具体的なのに比べて、VCは具体的じゃありませんね。
>>643
は?
は? じゃなくてw
646デフォルトの名無しさん:03/10/26 22:35
なんでくだらない議論になってるんだよ。
おまえら厨房の集まりだな。
ここは質問スレだろ!
激しくスレ違いなチャットなんてしてるんじゃねぇよ!!
>>645
は?
なんかのびてるから読んでみたんだけど

>>552 が
「Boost100%でないならISO100%でない」
「ISO100%ならばBoost100%」
こう言ったのを


>>555 の馬鹿が
「Boost100%でないならISO100%でない」
「Boost100%ならばISO100%」
と捉えて大騒ぎしてる。


ということでいいですよね?

649 ◆qZ/VDjzu96 :03/10/26 22:41
とりあえず Boost100%ならIso100%である事を誰か証明してくれ。(漏れはよく知らん)
でなきゃ>>601は証明されない。

(例)
A : x > 4
B : abs(x) > 4
「A なら B」 は成立するが、「BならA」は成立しない。
>>649
>Boost100%ならIso100%である

だから、誰もそんなこと言ってないんだよボケ死ね
651デフォルトの名無しさん:03/10/26 22:44
結局のところ、対偶を知らない中学生が
対偶を前堤にした意見に拒絶反応を示したということか
>>648
はい。そして現時点ではboost100%のコンパイラはないので、
boostリグレッションテストの項目がISOC++の規格的に満たされる
べきものならば、現時点でのISOC++100%のコンパイラはなさそうだということ。
653デフォルトの名無しさん:03/10/26 22:53
>>648
> >>552 が
> 「Boost100%でないならISO100%でない」
> 「ISO100%ならばBoost100%」
> こう言ったのを

全然逆ですな

> 552 :デフォルトの名無しさん:03/10/26 20:53
> >>550
> GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
リンゴとバナナが入ったおかげでスレの流れがよう分からんでよ。
藻前らそんなに暇なのか
もういいじゃん。
VCはBoost100%。GCCはBoost100%じゃない。
VCはISO 100%じゃない。GCCも当然ISO 100%じゃない。
それだけ。
657デフォルトの名無しさん:03/10/26 22:57
552=648=652
必死すぎ
>>657
そういうセリフは下げて言わなきゃw
659sage:03/10/26 23:00
sage路線でいきましょう
660sage:03/10/26 23:00
今時sage厨ははヤンねェヨ
661デフォルトの名無しさん:03/10/26 23:02
オレのおかげで見事に荒れたな。ウヒャヒャヒャヒャヒャヒャ
662648:03/10/26 23:05
>>653
確かに「Boost100%でないならISO100%でない」 とは言ってないもよう。
途中のレスが混ざってしもた、削ろう

>>552 が
「ISO100%ならばBoost100%」
こう言ったのを


>>555 の馬鹿が
「Boost100%ならばISO100%」
と捉えて大騒ぎしてる。


ということでいいですよね?
>>662
うん。そして対偶とかいろいろ言って誤魔化しているがことごとく論破されている。
>>656
VC++も今はboost100%ではないんですが。。。
一番テスト項目をパスしてることは確かだとしても。
どこのコンパイラメーカーも自分勝手な独自仕様は入れるのに、
本分たる仕様をちゃんと実装しないその様は、俺の仕事ぶりとよく似ている。
>>662
> >>552 が
> 「ISO100%ならばBoost100%」
> こう言ったのを

いや、言ってないし

> 552 :デフォルトの名無しさん:03/10/26 20:53
> >>550
> GCCもISOC++100%取れてないからBoost100%じゃないんだろ。
>>666
「GCCもISOC++100%取れてないからBoost100%じゃない」 == 「ISO100%ならばBoost100%」

じゃないの?
>>655
俺は暇である。
つまり暇でなければ俺でない。
>>667
それは対偶ではなく裏ですな
違うものになる
>>666
> いや、言ってないし
そう。言って無いのに、

>>555 の馬鹿が
「Boost100%ならばISO100%」
と言っていると思い込んだんだろ。
みんな楽しそうだなw
漏れも混ぜてー。(・∀・)ノ
555が馬鹿 555が馬鹿 555が馬鹿 555が馬鹿
555が馬鹿 555が馬鹿 555が馬鹿 555が馬鹿
555が馬鹿 555が馬鹿 555が馬鹿 555が馬鹿
673649 ◆qZ/VDjzu96 :03/10/26 23:25
>>650
Oh!ボケてました。(でも死ぬのだけは勘弁な)
正しくはBoost100% < Iso100% であるかないかを証明するソースをくれ、ですな。
要するに>>562の図は正しいのかと。
でなきゃ正しいのか間違ってるのか判断できませんがな。
674555:03/10/26 23:25
キモヲタがうるせえな。
おまえらあんま調子になってっと頃すよ?
>>673
boostがISOC++の仕様のグレーゾーンを明らかにすることはあるだろう
>「AでないならばBでない」というのは
>「BならばAである」と言ってるのと同じ意味。

これは分かる。分かりやすく言い換えると
「動物で無いなら猫ではない」
「猫ならば動物である」
だからね。

しかし
>「ISOC++100%取れてないからBoost100%じゃない」
>「Boost100%動いたらISOC++100%取れてる」

これは分からない。そもそも↑この文は

>「AでないならばBでない」
>「BならばAである」

という形とは異なってるしさぁ。
●→逆
↓  ↓
裏→対偶
さっきから対偶対偶って言っているやつって
何が対偶でそれがどう関係するのか一言も言って無いんだよな。
こいつ対偶自体良く分かってないのかもしれない。
>これは分かる。分かりやすく言い換えると
>「動物で無いなら猫ではない」
>「猫ならば動物である」
>だからね。

未だ生を知らず、いずくんぞ死を知らん(論語)
死を知れば生を知ったということですか?
>>679
自分で何が言いたいのか説明できないこと言わない。
>「AでないならばBでない」というのは
>「BならばAである」と言ってるのと同じ意味。
これ自体間違い。
>>680
具体例を当てはめても
それで何かを説明したことにはならんということ
683 ◆qZ/VDjzu96 :03/10/26 23:42
>>676
それは「AはBを含む」という前提での話でしょう。
猫と動物を逆にしてみ。

「猫で無いなら動物でない」 : 正しい
「動物ならば猫である」 : 間違い
正直大愚よくしらんから、調べたんだけど、それとりあえず書いとくね


たいぐう 0 【対偶】

(名)スル
(1)対(つい)になっていること。対称をなすこと。
「此雲の変幻出没と彼水の寂静不動と―す/日本風景論(重昂)」
(2)修辞上、対比的な語句を対称して配置すること。漢詩文などで多用される。対句。
(3)〔数・論〕〔contraposition〕一つの命題「 p ならば q である」に対して、その後件の否定を前件とし、前件の否定を後件とする命題「 q でなければ p でない」をいう。ある命題が真ならば、その対偶も必ず真である。
一つの命題「 p ならば q である」に対して、
その後件の否定を前件とし、
前件の否定を後件とする命題「 q でなければ p でない」をいう。
ある命題が真ならば、その対偶も必ず真である。
調べて思ったんだけど、最初に対偶言い出した奴も馬鹿ってことですか?
>>683
> 「猫で無いなら動物でない」 : 正しい
茶でも飲んでおちけつ。
C++からかなり遠い話題になったな。
まぁ、こんな風に走り出したら止まらないのも分かるが、ほどほどに・・・
どっかにスレ変えたら?
まあ、>>555が馬鹿ってことですな。

552 :デフォルトの名無しさん :03/10/26 20:53
>>550
GCCもISOC++100%取れてないからBoost100%じゃないんだろ。

555 :デフォルトの名無しさん :03/10/26 21:03
>>552
いつから
「Boostが100%動けばISO C++100%」
というようになったんだ?
>>683
AならばBってのは、Aが成立するものはすべてBであることが成立するっていうことなので
「猫でないなら動物でない」ってのは
「猫でないすべてのものは動物ではない」と言っていることになるヨ
691689:03/10/26 23:51
これは対偶と似ているようで対偶とは関係ない。
>>686
その通り。
>>689
仮に、
「GCCもISOC++100%取れてないからBoost100%じゃない」これが真なら
「Boostが100%動けばISO C++100%」これも真。
と俺も思う。
正しくは、
「GCCもBoost100%取れてないからISOC++100%じゃない」だろう。
695555:03/10/26 23:59
あれからまだ続いてるのかよ
>>674
わざわざ他人を騙る必要があるのか?
(^¬^)(^∀^)(^∃^)(^∧^)(^∨^)(^→^)
697デフォルトの名無しさん:03/10/27 00:06
> 552 :デフォルトの名無しさん:03/10/26 20:53
> >>550
> GCCもISOC++100%取れてないからBoost100%じゃないんだろ。

> 555 :デフォルトの名無しさん:03/10/26 21:03
> >>552
> いつから
> 「Boostが100%動けばISO C++100%」
> というようになったんだ?


「ISOC++100%取れる」をA
「Boost100%動作」をBとする。

>>552
「GCCもISOC++100%取れてないからBoost100%じゃないんだろ」
と発言している。この内容は
「GCCがBoost100%動作しない理由は『ISOC++100%取れてないから』である」
という意味であり、
ここには『ISOC++100%取れてない』ならば『Boost100%動作しない』
という前堤があることを暗示している。
すなわち552は、ここにて
「AでないならばBでない」と言っているものとみなされる。
これが真ならば、その対偶の「BならばAである」も真となる。

>>555の発言は、その対偶そのものに対して
いつからそのような前堤が成立するようになったのかを確認している。
やっと理解できた

「GCCもISOC++100%取れてないからBoost100%じゃない」

この文は間違ってる。しかし俺は「ISOC++100%取れるならBoost100%とれる」とムリヤリ解釈した。

つまり馬鹿は俺だ。
>>698=552
君の勘違いのおかげでこのスレ壊れちゃったよ
そんなことより
【初心者歓迎】C/C++室【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1059041347/
の次スレ誰か立ててくれよ。
701698:03/10/27 00:12
てへ、ごめんね。でも552とは別人だよ。
702デフォルトの名無しさん:03/10/27 00:13
456のコードすらまともに動作しないVC++6.0とVC++7.1は
捨てましょうというのが結論
そんな下らんことで146レスも消費したのか。
704デフォルトの名無しさん:03/10/27 00:16
698、552両名が勘違いして555を叩き続けて
146レス消費した結果が「テヘ」かよ
でも、>>552の間違いを指摘するために、いきなり対偶を持ち出したら、混乱してもしょうが無いと思う。
>>704
俺は648からの数レスだけだよ
Boostの犬になると正常な判断を失うので
まずはBoost100%などという目眩ましに
騙されないようにすることから始めよう。
>>705
「対偶も真なり」に対して直感的におかしいと感じる子供もいるらしいが、
そういうアフォを前堤にC++の話をしてもつまんなくない?
>>705
552のように真とも偽とも区別つきにくい発言
(何をもって100%と言っているのか意味不明状態)
に対しては、その対偶を突きつけて
それに対して意見させるのも、良くある検証方法だと思われ
ところでrefman2003.pdfってどっからゲットできるの?
>>709
そんなつまらん話よりC++の話をしろ!
やっべ、なんだこのスレ進行。面白すぎだ。
おまいら、もっとガンガン続けちゃってください。
>>709 >>710
2chのようなあまり推敲されてない文章が大量にある場所だと
多少おかしな文章も頭の中で自動的に意味の通る文に補正しちゃうことあるでしょ?
それを踏まえるとちょっと唐突すぎないかなと。
715デフォルトの名無しさん:03/10/27 00:29
このコードは各処理系でどのように動作する?

#include <iostream>
class parent{
public:
int x;
parent(parent const &i):x(i.x){cout<<"C parent (parent "<<x<<")\n";}
parent(int i):x(i){cout<<"C parent ("<<x<<")\n";}
virtual void func(void){cout<<"F parent "<<x<<"\n";}
};
class child:public parent{
public:
child(child const &i):parent(i.x){cout<<"C child (child "<<x<<")\n";}
child(int i):parent(i){cout<<"C child ("<<x<<")\n";}
virtual void func(void){cout<<"F child "<<x<<"\n";}
};
int main()
{
child a(1);
parent b(2);
parent &c=(true)?a:b;
parent &d=a;
c.func();
d.func();
}
対偶しらねー馬鹿厨は
C++いじる前に日本語勉強してこいっつーこった
>>715
とりあえずstd namespace指定がないので大抵コンパイルエラーかも(笑)
そのへん補正よろしく >>717
GCCだと

C parent (1)
C child (1)
C parent (2)
F child 1
F child 1
C parent (1)
C child (1)
C parent (2)
C parent (parent 1)
C parent (parent 1)
F parent 1
F child 1

VC7.0
結局VC7.0も駄目か
WindowsでGCC使えればなあ
>>721
7.0は7.1と大違い
といってもこの件は同じ結果になるような予感もするが
723デフォルトの名無しさん:03/10/27 00:41
VC++7.0って
parent & c = (true) ? a : b;

parent & c = parent ((true) ? parent (a) : b);
と解釈するの?
C parent (1)
C child (1)
C parent (2)
C parent (parent 1)
C parent (parent 1)
F parent 1
F child 1

VC7.1
対偶って (A ⇒B ) ⇒ (not B ⇒ not A) って事か?
それよりド・モルガンの法則勉強しておいた方がC++には役立つぜ。
(A and B) == not(not A or not B) ってな。
(A or B) == not(not A and not B) も。
>>721
Mingw が使える。ただ UNICODE 関連やリソース作成、デバッグなどがメンドイから、
コンソールアプリ以外では使用をお薦めしない。
>>725
矢印が違うぞ。
>>727
⇔だったっけ?
>>698
罰としておまえのハンドルはこれから「バナナ」だ。
バナナ以外での出入りを禁止する。

アセンブラコード見たけど
漏れのgcc だと (true)?a:b; を最適化しちゃうね。
-O0 オプションつけてもだめだった。

つまり
>Otherwise, if the second and third operand have different types,
> and either has (possibly cv-qualified) class type
すら判定していないのだから、その後の型変換だの、
コピーだのが起こりようがない。
> つまり
> >Otherwise, if the second and third operand have different types,
> > and either has (possibly cv-qualified) class type
> すら判定していない

んなこたーない。
俺がプログラマーを始めたころはドモルガンとか常識だったし
and or not xorが複雑に入り組んでいても混乱しないやつらばかりだった。
そうじゃないとCとアセンブリ言語のmixed language programmingの
環境についてこれない。

最近の若いやつらは
not (not a or b) と a and not b
a and not (a and b) と a and not b
の置き換えすら満足に思考できない。
論理式の合理化ができないから無意味にネストしたif文を大量に連ねる。
たまに置き換えをやろうとすると高確率で間違ってバグを作ってくれる。
「この一連のif文の意図は何ですか?」「私にも分かりません」

あと2進数が分からないし分かりたくもないと胸を張るやつらもいる。
そんなやつらが俺が若かった頃よりも多く稼いでることを考えると
酒がまずくなる。

酔いも回ってきたころだし、寝るか
なんでこのスレこんなに早いんだよ…
突然 対偶が出てきてソレを理解できない厨によって
スレがどんどん脱線し、混乱して 収束した
ということでOKですか?
734バナナ:03/10/27 01:10
お礼外にも馬鹿なこと言ってる奴大勢居たのにどこいった?
735デフォルトの名無しさん:03/10/27 01:13
>>730
最適化とは違う話

parent &c=(true)?a:b;
parent &d=a;
c.func();
d.func();



for(int i=0;i<2;i++){
parent &c=(i)?a:b;
parent &d=a;
c.func();
d.func();
}

に変えても動きの本質は変わらない
>>734
バナナさんが最後だったんですよ。
いわゆるババ抜きのババを引いたときにゲーム終了って感じですね
>>731
漏れんとこは以下ですがねぇ。

g++ -g -O0 -o main main.cpp

parent &c=(true)?a:b;
lea 0xffffffe8(%ebp),%eax
mov %eax,0xffffffd4(%ebp)
parent &d=a;
lea 0xffffffe8(%ebp),%eax
mov %eax,0xffffffd0(%ebp)
738バナナ:03/10/27 01:17
>>736
そんなババナ
>>735
コンパイル通らない・・
full adder と half adder をC言語でエミュレートせよという宿題を
出された廚がいたので適当に答えておいた。あんなもん今じゃ
ほとんど忘れかけてるよ〜
>>735
gcc でこうなった

parent
child
child
child
>>737
なにがいいたいのですか?
>>740
昔はそういう宿題出されたら必死になって考えてたなあ。
今じゃネットで質問した方が早い。
そりゃ新卒もどんどん馬鹿になって小さくなるよ。
そのうち人間に肉として食われるようになるだろう。
よーし、今までの不手際を謝りながら、もう一度まとめさせてくれ
スマソスマソ
これでいいか?

#include <iostream>
using namespace std;
class parent{
public:
int x;
parent(parent const &i):x(i.x){cout<<"C parent (parent "<<x<<")\n";}
parent(int i):x(i){cout<<"C parent ("<<x<<")\n";}
virtual void func(void){cout<<"F parent "<<x<<"\n";}
};
class child:public parent{
public:
child(child const &i):parent(i.x){cout<<"C child (child "<<x<<")\n";}
child(int i):parent(i){cout<<"C child ("<<x<<")\n";}
virtual void func(void){cout<<"F child "<<x<<"\n";}
};
int main()
{
cout<<"<1>";child a(1);
cout<<"<2>";parent b(2);
for(int i=0;i<2;i++)
{
cout<<"<2>";parent &c=(i)?a:b;
cout<<"<3>";parent &d=a;
cout<<"<4>";c.func();
cout<<"<5>";d.func();
}
}
スレ違いだけど店頭PCにいたずらスレより。
このプログラムを .js の拡張子で保存し、走らせてみよう。
俺が悩んでいるのはjavascriptにsleep()がないために、
無駄にCPUを食うことだ。

var IE;
var ti = 2000;
for (i = 0; i < 5; i++) { // ここを適当に修正
IE = WScript.CreateObject("InternetExplorer.Application");
IE.Visible = true;
IE.Width = 1280; IE.Height = 930;
IE.Navigate("http://members.aol.com/pethumor/insane.swf");
var dstart = (new Date()).getTime();
while (1)
if((new Date()).getTime() >= dstart + ti) break;
ti = ti * 2 + 1000;
}
>>745
せめてC++に移植してからにしてくれ
>>746
わかった。C++ならWin32も使えるし簡単。まあ店頭へのいたずら
なのでjavascriptの方がお手軽だから使っただけ。
748737:03/10/27 01:37
>>735 でワカータよ。
731==742 タンゴメソ。吊っ(ry
 ∧||∧
>>748
さてはおまえバナナだな?
>>744
<1>C parent (1)
C child (1)
<2>C parent (2)
<2><3><4>F parent 2
<5>F child 1
<2><3><4>F child 1
<5>F child 1

GCCです
どうせコピーコンストラクターが呼ばれないから
参考にならないかもしれませんが参考のため
751デフォルトの名無しさん:03/10/27 01:41
バナナ=間違いをすぐ認める素直なアフォ
752デフォルトの名無しさん:03/10/27 01:58
555のようなものをエサと言うんだよな

驚くほど沢山の馬鹿が釣り上げられたこと
そんなババナ
ここはバナナの気持ちが分かるインターネッツですね
>744
VC++6.0
(略)ループから
<2>C parent (parent 2)
<3><4>F parent 2
<5>F child 1
<2>C parent (parent 1)
C parent (parent 1)
<3><4>F parent 1
<5>F child 1

ちなみに ((i)?a:b) にピリオドを打つとインテリセンスが働きやがります。
そしてこう書き換えても
parent &c=(i)?a:8;
問題なくコンパイルが通り、こうなった
<2>C parent (8)
C child (8)
C parent (8)
C child (child 8)
<3><4>F child 8
<5>F child 1
<2>C parent (1)
C child (child 1)
<3><4>F child 1
<5>F child 1

面白いなぁ。
しかし、演算子オーバーロードもできない三項演算子で、
オブジェクトそのものを扱うなってことか。
確かborlandC++だと3項演算子にバグがあって
コンストラクタが呼ばれてないのにデストラクタが呼ばれるとか
そんな変な動作をするような話を聞いた。

今のところ、オブジェクトの実体を3項演算子に渡すのは
避けといた方が無難なんだろうね。
特異な書き方をする奴が悪いということでFA
758デフォルトの名無しさん:03/10/27 08:39
VC酷いな
C parent (parent 1)
C child (child 1)
この二つの出現はありえない。

VCの三項でクラスを扱うと高確率でバグを産む気がする。
とりあえず三項禁止してif文にしようと思ったが
コンストラクターでのメンバー初期化のときはどうしようか。
759デフォルトの名無しさん:03/10/27 08:43
スレ違い申し訳ありません。
yahooの投票、みんなで「その他」に入れてみよーよ!
http://sports.yahoo.co.jp/baseball/jps/event/
面白くなるぞー!!時間がありませんのでよろしくお願いします。
一人1票です。
>>744
VC7.1

<1>C parent (1)
C child (1)
<2>C parent (2)
<2>C parent (parent 2)
<3><4>F parent 2
<5>F child 1
<2>C parent (parent 1)
C parent (parent 1)
<3><4>F parent 1
<5>F child 1

ちなみに3項演算子を以下のように参照に先にcastすると
cout<<"<2>";parent &c=(i)? static_cast<parent&>(a):b;

<1>C parent (1)
C child (1)
<2>C parent (2)
<2><3><4>F parent 2
<5>F child 1
<2><3><4>F child 1
<5>F child 1
>>758
> C parent (parent 1)
> C child (child 1)
> この二つの出現はありえない。

なんで?
762デフォルトの名無しさん:03/10/27 12:51
ログ嫁
763デフォルトの名無しさん:03/10/27 19:20
C++でマウスをプログラムで操作するにはどうすればいいんですか?
C++では出来ません。該当プラットフォームのスレに行ってください。
同じように言ってやりたい奴らが
まずマウスに車輪などの区動機をつけてください
話はそれからです
ロボットコンテストを目指してるのか
GCCもISOC++100%取れてないからBoost100%じゃない
の意味すら分からない低能スレはここですか?
時間の流れが他人と半日以上もずれた超人のいるスレはここですか?
>>769
GCC擁護必死だな
↑超人がキレた
ワラタ
♪ルンルン♪o(^0^o)♪~(o^0^)o ~♪♪~o(^0^o)~♪(o^0^)o~♪ランラン♪
家を壊すぜo(^0^o)♪ 橋を壊すぜ~(o^0^)o ~♪ ビルを壊すぜ~o(^0^o)~♪ 東へ西へ(o^0^)o~♪
good job
ttp://support.microsoft.com/default.aspx?scid=kb;EN-US;216715
こんなのしか見つからないな。
これをFIXしてあんなコードが出来たのか?
結局VCを叩いてた555の馬鹿は論破されたので
結論としてはVCが正しかったということですか
MS叩きの厨房はしつこかったな
今回MSはLoki/boost対応に主眼を置いて実際完全対応したけど、
やれば出来るじゃんっつーか、今までやってこなかったのは怠慢も甚だしいだろっつーか。
なんで7.0->7.1で出来ることを6.0->7.0時代にやらなかったんだ?
6.0->7.0間でもテンプレートとSTL相当良くなってたじゃん。
そうそう。んで7.0のバグフィックスして7.1になったからこれだけイクナったんじゃないの?
6.0のSTLはヤバすぎるので皆STLPort使ってたしな。
std::fstream hoge;
hoge.open("aaa.txt");
std::vector<double> vec;
while(hoge){
hoge >> vec;
}
ってやったら最終行が2回読み込まれるんだけど何で?
コードが悪いから
修正。
std::fstream hoge;
hoge.open("aaa.txt");
std::vector<double> vec;
while(hoge){
double tmp;
hoge >> tmp;
vec.push_back(tmp);
}
>>782 >>784
push_back()する直前にhogeをチェキすべし。
>>784
std::istreamはCと同じで読み込んでみて初めてエラーかどうかわかる。

while (true) {
 double temp;
 hoge >> tmp;
 if (hoge) break;
 vec.push_back(tmp);
}
あらら
×temp
○tmp
>>785>>786 おお!感謝!
>>778
6.0>7.0で対応目指したんだが間に合わなかったから7.1に回されたらしい。
while(1){
double tmp;
hoge >> tmp;
if(!hoge)break;
vec.push_back(tmp);
}

double tmp;
while(hoge>>tmp){
vec.push_back(tmp);
}
でwhileの外にtmpを宣言するのが気持ち悪かったので
前者で対応しました。>>785>>786さんサンクス。
その2択で前者はありえないと思た。
for (double temp; hoge >> temp; ) {
vec.push_back(temp);
}

だとダメ?
>>792 をを!いい!
>>791 理由を言ってくれるとありがたいです。.
>>792 for(double temp;hoge>>temp;vec.push_back(temp)){}
ってダメですかね?今コンパイル環境がないんでためしてないですけど。
>>794
おれは791氏じゃないけど、791が普通の感覚だとおもう。
まぁ、コンパイラの最適化次第でどうせ同じになるような気もするので、
どうでもいいっちゃどうでもいいけど。
>>795 理由を教えてください。
>>796
791でも795でもないけど、
せっかく条件を記入できるようにしてるところを殺して、わざわざ終了条件をわかりにくくすることはあるまいよ。
変数のスコープを制限したいのならその周りをさらに{}で囲めばいいだけなんだし。
>>797 言わんとする感覚は分かりました。明瞭な回答有難うございます。
なんで
for(;;){}
↑ここのスコープはブロックの中なのに
do{}while()
     ↑ここはブロックの外なんだ?
わざわざ外に変数作るのすげー邪魔くさいんだけど。
プログラム中で別プログラムを実行する場合はどうしたらいいんでしょうか。

pthread_createあたりで別スレッドを起動するぐらいしか自分は思い浮かばないんですが、
他に方法は無いでしょうか。
801800:03/10/30 06:37
ああースレッドでは関数は起動できるけど別プログラムは無理なのかな。
となるとfork()〜exec()をやればいいのかな・・・
別プログラムを起動して何をしたいのかにもよるけど、
system() とか popen() とか。>>800
803デフォルトの名無しさん:03/10/30 12:35
VC6で正規表現を使いたくてBREGEXP.DLLを使ってみました。
  char *pTarget=new char[1000];
  char *pKey=new char[1000];
  char *pMsg=new char[100];
  BREGEXP *pcRegExp=NULL;
  strcpy(pTarget, "The Test of BREGEXP.DLL 2003/10/29");
  strcpy(pKey, "/2003/2004");
  int iResult=BSubst(pKey, pTarget, pTarget+strlen(pTarget), &pcRegExp, pMsg);

とやってみましたが、pTarget[]の文字列は置換されていませんでした。
2003を2004に置換するにはどのように入力したらよいでしょうか?
>>799
両方とも、
{for(;;){}}
{do{}while()}
こう書いたときと等価なんだから、別におかしいとは思わない。
等価じゃありません。
806VBまん:03/10/30 13:22
VBをつかってブラウザを起動(もしくは作る)しHPのFORMタグに自動的に
ID,パスワードなどを入力させるプログラムを作りたいのですが、
資料がなく困っています。いい資料orHPなど参考になるものを
知っている方教えてください。
(ブラウザを起動することはできます。)
>>805
なんかちがうとこあるの?まさか;
>>804
おかしいかどうかは知らないけど
do
{
 bool succeeded = いろいろ;
}while(succeeded);

とか出来ないのサイアクじゃない?
809VBまん:03/10/30 13:44
すみません。書くところまちがえました。
C++のすれでしたね(T_T)
>>808
while(いろいろ(...)){} でいいじゃん。
>>810
論点ずらすくらいならレスしなほうがいいと思うよ。
アフォは、放置。
テキストファイルから1行ずつ文字列を読み込んで、特定の単語を抜き出し
配列に格納するルーチンはどう設計したらいいでしょうか?
#define UNKO 1000000000000000

Cの場合これでUNKOが100000000000000に置き換えられるのですが、
これはC++でも使えるのでしょうか?
コンパイルエラーが出るので、ひょっとしたら使えないんじゃないかと思うんですが・・・

>>814
コンパイラのunsigned long intの範囲を超えたんじゃないの?
816デフォルトの名無しさん:03/10/31 03:25
C++ではあるクラスのstaticなメソッドからそのクラスの
インスタンスのprivate/protectedなメンバは操作できなんでしょうか?

class A{
private:
 int Val;
public:
 static void doSomething(A *a){
  a->Val=10;
 }
};

みたいな感じで。
出来ます
>>816
そういうのは試してみてから物を言ってください。
819816:03/10/31 03:47
>>817,818
いや、VC++6で試してるんだが、protectedメンバにアクセスできない、ってエラーが出る。
具体的にはclass Aのスタティックメソッドからclass Aの親の親クラスの
protectedメンバを参照してるんだけど、これは無理?
無理です
821816:03/10/31 03:51
ショボーン

ありがとうございました。
822デフォルトの名無しさん:03/10/31 05:32
STLを使うとビルドが遅くなってしまう。
ヘッダにそれ関連を含めただけでもビルドが遅く・・・

みんな、どのように解決してる?
>816
無理矢理、やってやれないこともない
class A
{
protected:
enum {ANUM = 10};
};
class AA : public A
{
public:
static void sf(A *a){cout << static_cast<AA *>(a)->ANUM << endl;}
};
void main()
{
A a;
AA::sf(&a);
}
>>823 pimpl
>>823
速いマシンを買え
ビルド・・・
時代だなぁ。
>>823
プリコンパイルヘッダ使え
>>827
時代だねぇ
BCCもVC7.1もプリコンパイルヘッダ標準装備だし、あとgccが
プリコンパイルヘッダを装備したら、もうコンパイルの遅さを
コンパイラのせいにはできないぞよ。
んなもん、内部処理の出来不出来でいくらでも早くも遅くも出来るじゃん。
>>823
遅くなるって、何十分も何時間も遅くなるわけじゃないから、
たいした問題ではない。
>>823
マシン買い換えるのが一番手っ取り早い。
VC++の場合、コンパイル済みヘッダを使ってもテンプレートはあまり速くならない
コンパイル速度云々という話が出るたびに
PCなんて安いんだからいいの買えよって思う。
PCなんて安いんだから・・・
時代だなぁ。
5マソもあれば、アポロにのって月へ行ったマシンよりも
良いCPUの乗ったマシンがかえるもんな。
まぁファミコンのほうが性能がよかったらしいが
ファミコンといったら任天堂。
Play-Stationといったらsony。
次はどこのメーカーの次世代ゲーム機がヒットするのかな。
チュートリアルのテキストエディタの作成に失敗しました。
>>839
それはあなたが呪われているからです。
三日以内にテキストエディタを完成できないと(以下略
841デフォルトの名無しさん:03/10/31 19:56
>>839
金輪際プログラミングはしないと誓って、あとはファミコンで遊んでてください。
さもなくば一生呪われるでしょう。
VCのコンパイル時間はほぼCPUのスペックに比例
メモリやHDDが貧弱すぎなければの話だが

P3/550で5分
豚25で1.5分
843842:03/10/31 21:16
反比例だなスマソ
>>823 pimpl

↑めんどくさいよー。
それに外向けのサービス関数に、STLのコンテンツへの参照渡しなどに
したい場合、結局、ヘッダにSTL絡みのヘッダをincludeするはめになるし。
>>844
トレードオフってやつですよ。
>コンパイル速度云々という話が出るたびに
>PCなんて安いんだからいいの買えよって思う。
いや、だから、3.2GHz程度のPCでは速度的に足りなくて不満だから
別の解決方法を模索してるのに・・・。
847846:03/11/01 01:49
完全ビルドに45分かかってる。
仮に数年後に10GHzなCPUが登場してもなお、15分前後はかかる計算に。
しかも、ソースファイル数が100にも届かない初期段階。
おそらく開発後半は2時間かかるかも。

完全ビルドになりにくいようなヘッダファイルを構築する工夫があるが
これはこれで手間時間というコストがじわりじわりと効いてくるし
そもそも本質からは離れた作業。

「じゃ、テンプレート捨てろよ」と言われても、今更捨てられない。
捨ててしまう犠牲は計り知れない。

はてさて、どうしたものか。
各ヘッダでincludeするのやめろよ。先行宣言だけにせえ。
ヘッダ間の依存関係を極力なくせよ。
>>各ヘッダでincludeするのやめろよ。先行宣言だけにせえ。
横からつっこみ入れるけど、返却値だとか引数にSTLなどの
テンプレート使った時点で、それら標準ヘッダファイルをincludeせねば
ならない。仮に参照渡しやポインタ渡しのみ必要な場面であっても
先行宣言(存在仮宣言)だけが記述されたヘッダファイルというのは
STLには存在しない。

ヘッダ間の依存関係を極力なくしても、避けられない共通モジュールで
STLを使っていたら、全ての苦労が水の泡。

CPUパワーが100倍近く足りないという感には激しく同意。

小物ツールでよいならば、それこそ500MHz程度のPCで十分んなのだが。
HDD速い方が効果的なような
>>847
> 完全ビルドに45分かかってる。
どういうコードをビルドしてるんだ?

俺が今仕事でいじってるのは C++ とアセンブラで合計 7 万行程度のプログラムだが、
これでも gcc でフルビルドに要する時間は 2 分程度だぞ。CPU 8 つ使ってるけど。
>俺が今仕事でいじってるのは C++ とアセンブラで合計 7 万行程度のプログラムだが、
>これでも gcc でフルビルドに要する時間は 2 分程度だぞ。CPU 8 つ使ってるけど。

ん、それ、x8なら単一CPUで流したら、16分かかるでしょ?
C++というより、テンプレ使うか否かがボーダーラインだし。
仮に847のプロジェクトが20万行程度の規模だったら丁度、45分だろ。
ありえない話でもない。
gccが異様に遅いのが悪因なわけだが。
>>852
> ん、それ、x8なら単一CPUで流したら、16分かかるでしょ?
CPU に比例してリニアには延びないよ。gcc だとリンク時間も長くなりがちだし、dual
processor のマシン一台でもせいぜい 6 分程度。コンパイルだとファイル I/O 待ち
時間がかなり多くなりがちだから、

o 複数のファイルを同時にコンパイルし、入出力をオーバーラップさせる。経験上、
 プロセッサ1つにつき 2 - 3 ファイルを並列ビルドするのが良い。
o 主記憶を多めにとって、ファイルを極力キャッシュに載せる。ディスク入出力を
 可能な限り少なくする。分散ファイルシステムを使っている場合にはパラメタ
 要調整。

といった対策を取ると、コンパイル速度が向上する。

ちなみに俺のトコロだと Athlon MP 2100+ * 2, DDR SDRAM 2100 1GB というマシンを
4 台ネットワーク上に並べて分散ビルドしてる。だいたい、各マシンで同時に 4 ファイル
並列コンパイルするように設定。
GCCなら-pipeオプションや、/tmpをメモリ上に配置するだけで
かなり速くなる。VC++でも中間ファイルをディスクに書き込まない
設定とかあるんじゃないのか?VCが遅いとか言ってるのは
使い方がおかしい気がするが。メモリを沢山積めばソースファイルは
ディスクキャッシュが効いて、メモリ上に貼り付けになるしな。
まあ、どうでもいいがスレ違いだ。
>>855
> VCが遅いとか言ってるのは使い方がおかしい気がするが。
ありがちなのが pch の設定ミスだね。

> まあ、どうでもいいがスレ違いだ。
そうかも。
とりあえず iosfwd みたいなのが STL にも欲しいよな。
858831:03/11/01 15:40
>>857
同意
iosfwdしか先行宣言ヘッダがないのは標準の片手落ちな感じ。
859857:03/11/01 17:02
g++ について来るヘッダには bits/stringfwd.h ってのがあるなぁ。
あとは containerfwd.h とかってモンでも自分で作ればいいか。
なんか今までは「メンドイからいいや」とか思ってたけど、ちょいと作ればいいだけじゃねぇか。
gccでおそいって言ってる人に聞きたいんですが、デバッグ情報生成させてますか?
こんぱいるor実行 速度
どっちの話だ?
862860:03/11/01 17:51
ん?コンパイルの話ですよ。
g++で遅いって話はテンプレ使ってるからだろうってことでスレ違いになったよ。
>>1 周辺を読んでね
テンプレートと既成のテンプレートライブラリは別だろ。
gccはもともと速いコンパイラじゃないだろ
>>865
遅いと言うのは相対するものがないと言えないんだがなんと比べてるんだ?
>>864
別ですが。それで何?
>>866
時期時期で一般的なコンパイラ
TC/SC/MSC全盛の時代からgccが一番遅かったし
他プラットフォームの事情は知らんけど。
GCCってコンパイラの最低基準じゃないのか?
断罪されるべきはあれよりヘボイ物作っておきながら
金取ってる連中だろ。
コンパイラ間の比較はそれぞれが持っている機能に差がありすぎて
比較のしようがないような。。。
>>869
だからBCCも無料になったんだろ
>>869
> GCCってコンパイラの最低基準じゃないのか?
そういう問題じゃないだろう。

gcc はコンパイル環境・ターゲット環境ともマルチプラットホーム前提、場合によっては
コンパイルだけは gcc を使うがアセンブラやリンカは binutils を使わずベンダのものを
使う事もある、と汎用性を最重視している。

他のコンパイラは、また別のトコロに重きを置いている。プラットホーム固有の最適化
だったり、ウィンドウアプリケーション開発のための統合開発環境だったり。評価軸が
違うから、いちがいにどっちが良い悪いとは言えない。
>>868-869
香ばしすぎ!
>>873
何と比べて遅いか聞かれたから答えただけだが
どこが同おかしいのか説明してくれ
>>874
カキコしてから>>868はそうなのかもしれんとおもた。ゴメン。
同じソース行数で比較した場合、vc++がgccに比べて最低でも5倍は
速い。ただし、生成されるコードの速度に関しては特にその差は見られなかった。
Windows系はwindows.hという巨大ヘッダが立ちはだかってるから
早期からプリコンパイルヘッダが要求され、実装されてたもんな。
>>876
optimizerの設定は?
>Windows系はwindows.hという巨大ヘッダが立ちはだかってるから
>早期からプリコンパイルヘッダが要求され、実装されてたもんな。
そうだね。このあたり、小さなプログラムばかりをターゲットとしてた
gccは完全に遅れをとってる、というか未だに工事中な機能だしね。

インラインマクロを修正して、その挙動を確認するのに
全ビルドになってしまい、1時間かかってしまうこともあるからなぁ。
さらに、その1時間、別のことをしていて、なにを検証確認すべきかも
うっかり忘れてしまうこともあったりして。

1分なら待てるけど。
となると、やはりPen4換算で、180GHz のマシンは欲しい。
えっと、CPUパワーが60倍になるのにどれくらいだろ?
10年はかからないと思うけど、5年はかかるよね?
>>880
開発中にインラインなんて使わんだろ。何考えてんだ。
インラインにするかどうかは最終段階でプロファイル見て決めるんだよ。
Pen4の3GHzのマシンで1時間もかかるもの書いてるならコンパイラ変えたら。
インラインマクロって何だ?
>>880
ムーアの法則 http://e-words.jp/w/E383A0E383BCE382A2E381AEE6B395E58987.html
によると、大体 21ヶ月で4倍だから...

(log 60 / log 4) * 21 ≒ 62ヶ月 ≒ 5.2年 ぐらいかな。
>>883
処理手順のマクロのことじゃね?
>>885
全然意味がわかんない。
こんなマクロの事だろ

BEGIN_MSG_MAP(CMainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnListViewColumnClick)
END_MSG_MAP()
マクロっていつでもインラインでは。
>>881
インラインぐらい開発中でも使えよ。
>>889
880の例があるように、結構コストが高いのですよ。
>>890
それは各モジュールの独立性がほとんど確保できてなかったり
短くてもインラインにすべきでない関数の判断ができてないのが問題だと思うけど。
>>891
容易に判断を誤るものを「インラインぐらい」というのがおかしい。
>>892
そんなに容易に判断を誤るものなのか?
>>893
"Inlines are the third most-misused C++ feature (after inheritance and overloading),
used far more often than any practical criterion could justify,
just because it is more covenient to write them in place.
Anything that encourages their use beyond strict engineering merit is detrimental."
inline にも export みたいな仕様が欲しいな...。
そして、仕様に入ってるだけじゃなくて、ちゃんと実装してホスィ...。
>>894
どっからの引用かは知らんが、だから何?
>>896
容易に判断を誤るわけですよ。
そういうもんなのか。
漏れは最初は容易に判断を誤っても、
すぐに慣れるもんだと思ってたんだけど、
みんなは容易に判断を誤っちゃうのか。
>>898
お前も間違って判断してるだろ。そんなもんだ。
900デフォルトの名無しさん:03/11/02 15:33
900get & さらしあげ
>>899
覚えたてのころはよく誤ってたけど、
少なくとも最近は誤った覚えはないぞ。
>>901
だから何?
>>902
「容易に判断を誤る」ってことに懐疑的なだけ。
なんで誤ってないと核心できるんだろう
>>904
主観による判断でなにかいけませんか?
>>904は釣り
漏れの1メートルが正しい!
判断基準を明記せずに「誤ってない」とかいっても無意味。

謝った結果の悪影響には、実装の変更による再ビルドの影響、
パフォーマンスの悪化、そして出力コードサイズの増大なんかが
あるが、これらをどんなバランスで重要視するかだよな。

モジュール数が多い開発になるなら、実装の変更による再ビルドの
悪影響が耐えがたいほどになるため基本は非inline。pimplにするもいい。

パフォーマンスについては、ほとんどの場面でinlineにしても大して効果がなく
実際に大きな効果がある場所の判断は熟練してても間違いやすいので計測で。
>>908
ほぼ同意するが、結局はそれも主観。
雑談するならC言語スレに逝けよ
いや、ここでいい。
inlineな話題の延長だからな。
低脳ほどくだらんネタに拘るからな。
誰かにカマって欲しいならラウンジにでもいってこいよ。
>>912
ふーん、君はラウンジにお友達がいるんだ(w
↑すげー論理の飛躍
↑行間を読めないヤシ
インライン関数は.inlに書いて、リリース時はヘッダにインクルード
デバック時はソースにインクルードする手法が一般的になりましたが
さていかがお過ごしですか、みなさま。
そんな手法は一般的じゃありません
じゃあ、今からは取り入れて快適なC++ライフをお過ごしくださいね。
だからわざわざそんな面倒くさいアプローチとらにゃならんほどは
間違えないんだって。
別に大してメンドクサクも内ですよ。一度試してみてはいかがですか?
>>920
仮に間違えたってそのロスはビルドしなおす時間分だけで済み、
且つ実際には一度も間違えないのに、無駄に作業ステップを増やすことはないだろ。
少なくとも漏れにとってそれはチャリの補助輪と同じ。
一度チャリに乗りなれたら邪魔なだけ。
C++の質問なら私にきいてもいいよ♪お兄ちゃん♪
http://www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0069&rm=50
>>921
> 仮に間違えたってそのロスはビルドしなおす時間分だけで済み、
それが問題だというのがスレの流れ。前提を破壊するなよ。
>>923
日本語読めない子は放っておけ。
>>923
じゃぁ、そのだけ無視すれば。
assertion系マクロを有効/無効をチェンジするにも、
全部ビルドせねばならないし。開発後半、この切り替えは
重くのしかかってくるよ。

実装判断が間違えてなくても、厳しい例があるってこと。
>>926
ビルドディレクトリ分けてないの?
>>仮に間違えたってそのロスはビルドしなおす時間分だけで済み、
えっと、2chなのでいろんな環境の人が混じってるので、前提条件も
様変わりする思うのですが〜、とりあえず、ビルドしなおす時間が
数時間にわたるケースも決して珍しくないという点。

全ビルドをなるべく避けたい現場ってのがある場合、どういう工夫がある?
というのが流れ。
>>926
コンパイルオプションで部分的に有効にできるようになってればいいのにね。
なんでそんな構造になってるの?
>>928
>>881 に過剰に反応してしまったけど、
そういう意味でなら了解。
>>926
>全部ビルドせねばならない

いたたた
確かにデバッグゴードをマクロでラップしてる場合は、
完全ビルドだね。これはもう避けられないのでは?
実際、ソースコードとしてはなんら問題ない書き方なんだし
933デフォルトの名無しさん:03/11/03 00:26
>>932
ええ〜、本当に?
934r:03/11/03 01:01
つまり、ヘッダファイルと本体ファイルが別れてる、つか、
コンパイル済みのファイル(objファイルとか)から、
ヘッダファイルの情報が完全に無くなっている、
プリプロセッサなんてモノのある言語は糞だと。

そういうことか?
>>932
ふつー、デバッグビルドとリリースビルドは出力ディレクトリを変えておかないか?
すげー。そこまで言い切るんだ…
937デフォルトの名無しさん:03/11/03 01:24
>>936 == >>
>>932
完全ビルドってのは最初の1回だけで、
以降は変更したとこだけでしょ。
ピンプルってなに??
pointer implement
ピンクパイナップル
なんやねんそれは
得ろゲーのアニメ作ってる会社だったと思った
ひとり、やねうらをが混じってるな。
[OVA]新体操(仮)の内容はともかく歌はいいよな。
946デフォルトの名無しさん:03/11/03 08:15
みんな、だいたいどのくらいの数のファイルをコンパイルしてるんだろう。
うちのプロジェクトは、大体150個の.cppファイルと
それと同じくらいの数の.hファイルなんだけど、
Pentium3-1GHzのマシンでフルビルドが5分くらい。
VC++.NET 2002を使ってる。


コンパイルって、他のファイルのコンパイル結果を知らなくてもできるよね?
ってことは、めっさ分散処理向きだと思うのですが、
暇そうにしてるパソコンのCPUを使用する、
setiっぽいコンパイラって無いかな。
地球のみんな!オラのソースをコンパイルする為に力を貸してくれ!
Mac OSXの開発環境は分散コンパイル対応じゃなかったか。
ただまぁ、コンパイル速度ってCPUもさることながらI/Oの性能にも
かなり依存してるとこがあると思うんだが。
RAM512MB以上とATA66以上だと
ほぼCPUが律速段階と言い切ってもよさそう
SETI(Sokono Eroi-pc Tetsudae Imasugu-compile)プロジェクト始動!
>>946
> 暇そうにしてるパソコンのCPUを使用する、
> setiっぽいコンパイラって無いかな。
UNIX だと distcc とか PMVGmake とか。
>ただまぁ、コンパイル速度ってCPUもさることながらI/Oの性能にも
>かなり依存してるとこがあると思うんだが。
自分もそう思ってた口なんだが、実測してみると
I/Oはほとんど影響ないみたい。

>>952
分散コンパイルにするとネットワークを介してファイルや何かをやりとりするから、
そこがボトルネックになりがち。ローカルディスクだと話が違ってくる。
>>分散コンパイルにするとネットワークを介してファイルや何かをやりとりするから
設定次第だけど、タイムスタンプ比較でキャッシングするので
ネットワーク越しに限らず、その負荷は無視できるほど小さいケースが
多いっすよ。
>>うちのプロジェクトは、大体150個の.cppファイルと
何行くらいのファイル?
150個というと、かなり小規模プロジェクトかもしれないけど
ポリシーによって上下するのでなんともいえない。
>>954
> 設定次第だけど
うーむ、ネットワーク管理部門に NFS の設定を見直してもらうかなぁ。ちなみに
キーになりそうな設定項目が何か分かる?

俺のトコロだと C++ でソースをコンパイルする場合、単一プロセスだと CPU 使用率
(ユーザ時間 + システム時間 / 実時間) は 60% 程度。複数のファイルを並列で
コンパイルすると 100% 近く行くけど。
分散コンパイルをするためのwikiページ
http://acapulco.dyndns.org/pukiwiki/pukiwiki.php?distcc
distccの本家はこちら。
http://distcc.samba.org/
>うーむ、ネットワーク管理部門に NFS の設定を見直してもらうかなぁ。
>ちなみにキーになりそうな設定項目が何か分かる?
samba経由(linux上)にソース置いてるので、sambaでの設定なら分かるけど
NFSは不明。
山田うどんのホームページがつながらないよ!!
http://www.yamada-udon.com/
961デフォルトの名無しさん:03/11/04 17:40
Boostのregexを使ってみたのですが、関数内で

  boost::reg_expression<wchar_t> strRegExp=m_pwcRegStr;
  boost::match_results<std::wstring::const_iterator> cResult;
  BOOL bRes=boost::regex_search(stdStr, cResult, strRegExp);

とあり、この関数が2度以上呼ばれるとメモリーリーク起こすようなのですが
どのように対処すればよいですか?あと、正規表現自体の文法エラーを

  catch(boost::bad_expression){}    ・・・(1)

で、キャッチしているのですが、MFCだと

  catch(CMemoryException *pE){ pE->delete(); return -1; }

みたいなことが必要なので(1)でもdelete()処理をする必要があったりはしないのですか?
>>961
後半だけ、よく見比べれば飛んでるのがポインタかそうでないかの違いがあることに気づくはず。
963961:03/11/04 17:57
>>962
ぐぐってみると、
 catch(boost::bad_expression *e){}
 catch(boost::bad_expression&){}
なんてものがヒットしたんで混乱してます。・・・どちらにせよ例外時のメモリ解放処理は
ヒットしないので必要なさそうではあるのですが
> とあり、この関数が2度以上呼ばれるとメモリーリーク起こすようなのですが
> どのように対処すればよいですか?
boostのバグトラックかregexの作者さんに
メール投げるかするとよいと思われ。
>>964
分かったから次スレ立てて
966964:03/11/04 21:36
>>965
わかったけど今テンプレを連張りするとアクセス禁止くらいそうだから、
そんときは続きをよろしく。
967964:03/11/04 21:45
968デフォルトの名無しさん:03/11/05 10:41
山田うどん復活!!
969デフォルトの名無しさん:03/11/06 15:30
オメ!!
970デフォルトの名無しさん:03/11/09 00:27
ちゃんと最後まで埋めなさい!
埋めるならageるな
拡張子のcppとcc、どちらかに統一しなさい!
>>972
cxxやCは不許可ですか?
         v――.、
      /  !     \
       /   ,イ      ヽ
     /  _,,,ノ !)ノリハ    i                                        
    i  jr三ミ__r;三ミ_   ヽ     
    l  ,iヾ二ノ ヽ二 ハ   ノ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ、.l  ,.r、_,っ、  !_,    <  >>1 糞スレ立てんな、蛆虫、氏ね。
       !  rrrrrrrァi! L.     \______________
       ゝ、^'ー=~''"' ;,∧入
   ,r‐‐'"/ >、__,r‐ツ./   ヽ_
  /  /  i" i, ..:  /  /  ヽ-、   
 ./  ヽ> l    /   i     \

         v――.、
      /  !     \
       /   ,イ      ヽ
     /  _,,,ノ !)ノリハ    i                                        
    i  jr三ミ__r;三ミ_   ヽ     
    l  ,iヾ二ノ ヽ二 ハ   ノ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ、.l  ,.r、_,っ、  !_,    <  >>1 糞スレ立てんな、蛆虫、氏ね。
       !  rrrrrrrァi! L.     \______________
       ゝ、^'ー=~''"' ;,∧入
   ,r‐‐'"/ >、__,r‐ツ./   ヽ_
  /  /  i" i, ..:  /  /  ヽ-、   
 ./  ヽ> l    /   i     \

976デフォルトの名無しさん:03/11/09 19:39
大文字のCなんていう拡張子使うのか?
977デフォルトの名無しさん:03/11/09 19:41
>>976
はじめの頃はそれを使っていたとか。
でもWindowsみたいにファイル名の大文字小文字を区別しないOSで問題が出るからやめたとか。
C++ Primerか何かで読んだ。
978デフォルトの名無しさん:03/11/09 19:45
へぇーへぇー
979デフォルトの名無しさん:03/11/09 22:37
C++でcinに文字バッファが残っているかどうかってどうやって調べるんですか?
もし残っていたら特定の処理がしたいので、if分の条件式に入れたいと思っています。
cin.rdbuf()->in_avail()
 め
  る
   ぞ
986デフォルトの名無しさん:03/11/10 14:01
ロマサガ2をやろうかな

         v――.、
      /  !     \
       /   ,イ      ヽ
     /  _,,,ノ !)ノリハ    i                                        
    i  jr三ミ__r;三ミ_   ヽ     
    l  ,iヾ二ノ ヽ二 ハ   ノ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ、.l  ,.r、_,っ、  !_,    <  >>1 糞スレ立てんな、蛆虫、氏ね。
       !  rrrrrrrァi! L.     \______________
       ゝ、^'ー=~''"' ;,∧入
   ,r‐‐'"/ >、__,r‐ツ./   ヽ_
  /  /  i" i, ..:  /  /  ヽ-、   
 ./  ヽ> l    /   i     \
988デフォルトの名無しさん:03/11/10 23:48
捕手新党が自民党に吸収されたってね。
ただのヘタレ政党じゃん。
そろそろC--の時代じゃないか?
時代じゃありません。
そろそろC//の時代じゃないか?
992デフォルトの名無しさん:03/11/11 00:54
記念カキコ v(^-^=)
ずさっと
しかしよく続くねぇ>このスレ
5秒前
4秒前
(プゲラッチョ
sage
(rァ゚Д゚)rァ 死刑! >999
1000取得
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。