C++11/C++0x 15

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2011/11/16(水) 23:27:59.61
3デフォルトの名無しさん:2011/11/17(木) 00:01:25.19
痛みに耐えてよく頑張った! 1乙!

…奥さんとの会話は殆ど無いらしいよ?
そりゃあ、宮沢りえちゃんとは比較にならないよな、年上女房。
4前スレ977:2011/11/17(木) 09:50:50.98
前スレ >>982
おおお、VCでもできました。ありがとうございます。

VCでラムダのメンバが見れなかったから、なんか特殊な物だと思っていたんですが
関数オブジェクトだったんですね。

前スレ >>985
可変長はVCではできないので、また今度お願いします。ありがとうございます。
5デフォルトの名無しさん:2011/11/17(木) 10:29:00.11
結局 C++ 相談室との棲み分けはどうしたらいいの?

992 :デフォルトの名無しさん:2011/11/16(水) 23:17:17.49
C++11はもう正式な標準になったんだから、C++11の話はC++相談室でいいだろ。
こっちはC++1xとか「次期C++標準」とか、そういうスレになるんじゃないの?

993 :デフォルトの名無しさん:2011/11/16(水) 23:21:22.74
次期規格つっても5〜7年後だろ。
98?03?11って流れだからな。
ネタがないって。

994 :デフォルトの名無しさん:2011/11/16(水) 23:21:59.16
最狂言語スレ?

995 :デフォルトの名無しさん:2011/11/16(水) 23:22:54.74
>>993 ネタが無いならこのスレ終了ってことでいいんじゃね?

996 :デフォルトの名無しさん:2011/11/16(水) 23:24:24.02
まともに実装されて普及されるまでは必要だな
6デフォルトの名無しさん:2011/11/17(木) 11:03:48.34
あと1〜2年はC++11の新機能に関する
質問を受け付けつつ、次のC++の仕様を
夢見るスレってことでいいんじゃないの。
7デフォルトの名無しさん:2011/11/17(木) 12:53:28.54
如何にしてC++相談室への平和的な侵略を試みるかについて話し合うスレ
8デフォルトの名無しさん:2011/11/17(木) 13:39:15.21
棲み分けね

C++11 で不採用や延期になった proposal について語るスレでどうよ
まだ「C++0x」あるいは「C++11」で、「C++」ではなかった頃の話ってことで
9デフォルトの名無しさん:2011/11/17(木) 19:32:02.73
C++11はまだ99%以上準拠した環境がないんだから
メインはこっちで
10デフォルトの名無しさん:2011/11/18(金) 22:10:00.14
export非推奨になるかも…って話はいったいどうなったんですか?
11デフォルトの名無しさん:2011/11/18(金) 23:23:28.92
exportはdeprecatedですらなく、廃止されました
C++11ではexportはただの予約語
12デフォルトの名無しさん:2011/11/18(金) 23:59:29.51
call や overload みたいに予約語ですらなくならなかった理由は何だろう
まだ再燃する余地が残っているのかな
13デフォルトの名無しさん:2011/11/19(土) 00:23:11.61
autoみたいに再利用するかもしれないからだろ
今は予約語確保するのも大変なんだよ
14デフォルトの名無しさん:2011/11/19(土) 00:26:48.66
予約後も名前空間に入れてしまえばいいのに
std::auto x = hoge();
これで面倒な問題はだいたい解決する
15デフォルトの名無しさん:2011/11/19(土) 00:27:09.30
過去に使われたからだろ
16デフォルトの名無しさん:2011/11/19(土) 02:03:22.00
>>14
C++世代で識別子と予約語を混同する奴がいるとは思わなんだ。
17デフォルトの名無しさん:2011/11/19(土) 02:07:28.31
C++世代ってなんだ?
18デフォルトの名無しさん:2011/11/19(土) 02:16:53.08
水色時代
19デフォルトの名無しさん:2011/11/19(土) 09:56:27.95
>>12
overloadって規格になる前に消え去ったことないか
20デフォルトの名無しさん:2011/11/19(土) 11:44:27.92
>>16
Scheme だと特殊構文も名前空間 (Scheme 用語では library) に属してて、関数やマクロと一貫した扱いになってる綺麗な仕様。

混同する奴は問題じゃない。
区別しなけりゃならないクソ仕様な C++ に疑問を持たないお前が風の前の塵に同じ。
21デフォルトの名無しさん:2011/11/19(土) 12:56:04.09
括弧バカ言語の信者こわい
22デフォルトの名無しさん:2011/11/19(土) 13:12:23.43
C++はアホの言語ということを受け入れられない可哀想な子が居るね
23デフォルトの名無しさん:2011/11/19(土) 13:16:00.31
それでもC++が圧倒的なシェアを誇りSchemeなど足元にも及ばない現実を
認められない可哀想な子がいるね
24デフォルトの名無しさん:2011/11/19(土) 13:57:29.73
C++ が馬鹿でも使える優秀な言語であることは認めてやるよ。
25デフォルトの名無しさん:2011/11/19(土) 13:59:44.65
C/C++も括弧バカ言語の範疇へ十分に入るよ
26デフォルトの名無しさん:2011/11/19(土) 14:20:36.86
せやな
C++はバカ言語で決まりや
27デフォルトの名無しさん:2011/11/19(土) 14:53:16.74
>>12
export 実装した処理系が少なくとも2つ存在してる。
28デフォルトの名無しさん:2011/11/19(土) 14:55:09.33
>>25
Cを一緒にすんなよ。
29デフォルトの名無しさん:2011/11/19(土) 17:11:31.14
callやoverloadだって実装はされてたろう、多分
その時代知らないけど
30デフォルトの名無しさん:2011/11/19(土) 21:57:04.40
>>28
algol 系の begin/end ではなく {} を使うから「括弧バカ」だと言ってるんじゃないかな。
31デフォルトの名無しさん:2011/11/19(土) 23:08:58.23
begin/end よりも {} の方が見やすいと思うんだが
begin/end 見ると目が痛い…
32デフォルトの名無しさん:2011/11/19(土) 23:11:50.18
つか予約語の多い言語は総じてクソ。
beginやendがシンボル名に使えないとか
どんな罰ゲームだよ。
33デフォルトの名無しさん:2011/11/19(土) 23:24:12.96
begin endって関数名にもよくあったりするから
あまり他のとこで見たくない
3420:2011/11/19(土) 23:26:29.08
C/C++ は残念ながら比較対象に入ってないけど、
簡単な検証では Java が特に括弧が多いという見解が出てる。

http://e-arrows.sakura.ne.jp/2010/08/is-lisp-really-has-too-many-parenthesis.html

たぶん C++ も Java と似たような結果になるんじゃないかな。
言語はパラダイムの違いがあるから公平に「同じものを書いて比較」ってのが出来ないし、
この程度の単発のお題で結論は出せないけど、
世間で思われるほど他の言語より Lisp に括弧が多いということは無い。

言語の比較対象として Lisp を持ち出したときに括弧のところで思考停止するのマジでやーめーてー。
今回は識別子の扱いが一貫してる話で Scheme を出したのに何で括弧の話になってるんだよ。
35デフォルトの名無しさん:2011/11/19(土) 23:35:33.62
お前がくだらない事書くからじゃねぇか
36デフォルトの名無しさん:2011/11/20(日) 00:16:47.17
37デフォルトの名無しさん:2011/11/20(日) 01:11:55.58
式ごとにカッコが必要だから
当然多いわ
38デフォルトの名無しさん:2011/11/20(日) 01:15:21.51
括弧つけるかつけないか迷うくらいなら、全部付けなければコンパイル通らない方が、頭使わなくていいし、間違いも少ない。
39デフォルトの名無しさん:2011/11/20(日) 01:32:02.59
カッコの対応が・・・
40デフォルトの名無しさん:2011/11/20(日) 01:36:39.74
なるほど、カッコの対応が正確にあっていなくてもいい言語が必要なようですね。
41デフォルトの名無しさん:2011/11/20(日) 01:56:38.59
暗黙の結合規則で失敗するくらいなら、全部付けなければコンパイル通らない方が、頭使わなくていいし、間違いも少ない。
42デフォルトの名無しさん:2011/11/20(日) 03:25:29.50
>>40-41
つまり括弧ないとコンパイルは通らないけど、
全部無視される仕組みって事ですね。
43デフォルトの名無しさん:2011/11/20(日) 03:42:43.29
Lispのカッコが非常にうっとおしい。
Lispのカッコをなくすべき。
44デフォルトの名無しさん:2011/11/20(日) 04:03:24.35
というかもうHaskellでいいです
45デフォルトの名無しさん:2011/11/20(日) 07:16:47.63
右辺値参照を勉強し始めましたがさっぱりです。moveとforwardで躓きました。
8.3.2の↓をアホな僕にわかるよう誰か説明してもらえんでしょうか。
If a typedef (7.1.3), a type template-parameter (14.3.1), or a decltype-specifier (7.1.6.2) denotes a type TR
that is a reference to a type T, an attempt to create the type “lvalue reference to cv TR” creates the type
“lvalue reference to T”, while an attempt to create the type “rvalue reference to cv TR” creates the type TR.

void f(int &&a)のaは必ずint &&だけど、
template<typename T> void f(T &&a)に右辺値(0など)を渡すとaはT &&で
template<typename T> void f(T &&a)に左辺値(変数)を渡すとaはT &になる。何ですかコレ?
46デフォルトの名無しさん:2011/11/20(日) 08:24:49.84
>>45
http://slashdot.jp/~taro-nishino/journal/507551

これ読むと解決。
多くの場合コピーコンストラクタと代入演算子と生成に関するパターンが注意のしどころの様子なので
これはイディオムになるような気配がするんだよんよんよん…
47デフォルトの名無しさん:2011/11/20(日) 09:09:18.85
>>36
Lispだけ()の打鍵数多くて目立つなあw
なんで、共通してeの打鍵数が多いんだろ
48デフォルトの名無しさん:2011/11/20(日) 09:21:56.86
英語の中で e の出現頻度は飛び抜けて多い。
ってシャーロックホームズが言ってた。
49デフォルトの名無しさん:2011/11/20(日) 09:59:59.82
符号化の基本だよね
50デフォルトの名無しさん:2011/11/20(日) 10:50:27.42
>>48
モールス符号
51デフォルトの名無しさん:2011/11/20(日) 12:06:57.69
>>40-41
多過ぎて対応取るのが面倒という話なのになぜそうなる
52デフォルトの名無しさん:2011/11/20(日) 19:03:33.88
C++版可変長引数って配列を突っ込んだらそのまま使ってくれたりすんだっけ?

int
       array[] = { 1, 2, 3 };
Example
       a( 1, 2, 3 ),
       b( array );
53デフォルトの名無しさん:2011/11/20(日) 19:24:55.46
配列の先頭要素へのポインタが渡される
54デフォルトの名無しさん:2011/11/20(日) 19:33:03.54
オーバーロードするしか無いのか。
割と気が効かんね。
コンストラクターの委譲のおかげで多少シンプルにできそうだけど。
55デフォルトの名無しさん:2011/11/20(日) 19:58:32.39
配列を引数に個別に展開とか何の嫌がらせだよ
56デフォルトの名無しさん:2011/11/20(日) 20:17:59.26
ああ定数での渡し方を間違えてた。
Example
    a( { 1, 2, 3, 4} );

可変長引数じゃなくて、初期化リストっていうのかこれ。
57デフォルトの名無しさん:2011/11/20(日) 20:27:46.25
std::initializer_list<int> 型で渡されるんじゃないのか?
g++だと内部エラーが出て死んでしまったが
58デフォルトの名無しさん:2011/11/20(日) 20:30:50.24
って、もしかして a(...) じゃなくて a(std::initializer<T>) を想定してるのか?
まずは a のプロトタイプを教えてくれ
59デフォルトの名無しさん:2011/11/20(日) 20:40:27.73
前者のinitializer_list<T>を想定してる。
要するに、↓ができないのは残念ねって事を言ってた。

int array[] = { 1, 2, 3, 4 };
std::initializer_list<int> a = array;
60デフォルトの名無しさん:2011/11/20(日) 20:44:13.47
後者じゃないのか?
61デフォルトの名無しさん:2011/11/20(日) 20:52:10.06
これでいいので実のところ大した手間ではない

template <typename Iterator>
void a(Iterator b, Iterator e) { ... }

template <typename T>
void a(std::initializer_list<T> list) { a(list.begin(), list.end()); }

using std::begin;
using std::end;

a({ 1, 2, 3, 4 });
a(begin(array), end(array));
62デフォルトの名無しさん:2011/11/20(日) 20:54:37.07
見た目的にどうかってより、テンプレートの時どうかってね...。
63デフォルトの名無しさん:2011/11/20(日) 21:03:38.99
template <typename T>
void a(T (&array)[]) { a(std::begin(array), std::end(array)); }

これも追加しておけば?
64デフォルトの名無しさん:2011/11/20(日) 21:04:01.17
constわすれた
65デフォルトの名無しさん:2011/11/20(日) 21:14:09.51
だから>>54にね。
66デフォルトの名無しさん:2011/11/20(日) 21:53:30.68
いまさら組み込み配列なんか使ってんじゃねえ、とかw

#include <vector>

void fv(std::vector<int> const & v) {};

int main()
{
std::vector<int> v = {1, 2, 3};
fv(v);
fv({4, 5, 6, 7});
return 0;
}
67デフォルトの名無しさん:2011/11/20(日) 22:05:45.85
そこはstd::arrayだろう。
68デフォルトの名無しさん:2011/11/20(日) 22:16:27.68
>>66
だって動的メモリ確保おせーんだもん。
スタックでの配列確保なら1回の加算命令で済むのに、
ヒープ確保じゃ20命令以上使う上に分岐まですんだぜ。
69デフォルトの名無しさん:2011/11/20(日) 22:43:02.53
1回のというか、関数の最初に全変数分の領域確保するから
他に変数があればコストは0
(キャッシュヒット率に影響は出るかもしれないが)
70デフォルトの名無しさん:2011/11/20(日) 23:05:48.86
なるほど、それで小さいプログラムでは new とか malloc とか使わないのか。
スタック最強伝説。あせんぶりぶり
71デフォルトの名無しさん:2011/11/20(日) 23:36:14.45
脇道

>> だって動的メモリ確保おせーんだもん。
事実であってもその遅さの比較は真実として意味のあるものなのか?
プログラムを普通に一時間使ってる間にある処理が複数回行われてあるやり方だと合計で1msかかるのが
別のやり方だと100倍遅くて合計で100msかかるようになったところでなんだというんだ。

よく言う高速化・最適化は実測が基本というのは本来はそういう視点で高速化すべきポイントを見定めるという意味のほうが大きかったんだぞ。
72デフォルトの名無しさん:2011/11/20(日) 23:42:54.79
いやその例は体感できるだろw
0.1秒って結構分かるぞ

例を出すならマイクロ秒にしとくべきだったな
実際CPUの高速化で意味がなくなってる最適化も多いし
73デフォルトの名無しさん:2011/11/20(日) 23:51:17.59
ベクトル系の処理だと、頻繁にメモリ確保なんかしてられないんだけど。
計算数が増える前に一括で領域をとっておき、
固定で済む範囲は、生配列を使わないと指数的に影響するときもある。
74デフォルトの名無しさん:2011/11/21(月) 00:00:43.32
>>71
スレッド2つ用意して、1つのスレッドからデータ供給、
もう1つのスレッドからデータ読み取り。そのデータ供給の際、
1かつ確保したメモリを参照するパターンと、
毎回newしたメモリを引き渡すパターンを作って試してみ。
Mordern C++ Designにも書いてあった、C++のアロケータは
小規模メモリの確保が苦手というのがよく解ると思う。
75デフォルトの名無しさん:2011/11/21(月) 00:25:48.82
vectorによるメモリ確保はゼロクリアも行われるよね
76デフォルトの名無しさん:2011/11/21(月) 00:31:49.71
>>72
元の話は一時間での合計の差だぞ。つまり60*60*1000=3600000msと3600099msの違い。
一秒当たりにならすと1000msと1000.0275ms、1.0sと1.0000275sの違い。この差がわかるならたいしたものだ。

この考え方が理解できないなら一秒間に一回定期的に行われる処理の場合を考えてみな。
(その場合は理想的な例にすぎるが高速化のための実測データはこういう視点で解析する。)
77デフォルトの名無しさん:2011/11/21(月) 01:02:21.71
>>76
ループで動的に確保してたら普通に遅い。
それだけの話に本筋とかけ離れた当たり前な事を言って何がしたいの?
ゴリ押しは気持ち悪いよ。
78デフォルトの名無しさん:2011/11/21(月) 01:15:19.18
ん?ああ、一時間ってのを普通に読み飛ばしてたわすまんすまん
でも漢数字とmks混ぜんな
79デフォルトの名無しさん:2011/11/21(月) 01:16:26.64
モサーリを改善しようとしたときに関数引数にvectorとかコンテナつこてるとあちこち書き換えしなきゃならなくなる
せっかくクドイC++で書いてんだから速度ヤバメな機能切れ目のやり取りには始めっから生配列を使っておこうや
80デフォルトの名無しさん:2011/11/21(月) 02:00:43.17
>>77
オマエ国語力無いな。
ループとか関係なく、トータルの時間差が
意味があるかを考えるってだけの話が理解できないのか。

200nsかかる処理が1万回ループしたとして、
それがウェブの1回の処理の中だったら2msなんて誤差だろ
81デフォルトの名無しさん:2011/11/21(月) 02:16:59.06
Webアプリだの速度が求めれれない環境の話しなんざしてないし
そんな環境でスタックだヒープだ気にはしない
82デフォルトの名無しさん:2011/11/21(月) 07:25:46.82
速度が求められるプログラムを組んだ事無い人なんだろうね
83デフォルトの名無しさん:2011/11/21(月) 07:53:17.33
そんなレベルの低い人はこのスレを見る資格無いよな
84デフォルトの名無しさん:2011/11/21(月) 12:11:18.55
はいはいワロスワロス
85デフォルトの名無しさん:2011/11/21(月) 12:17:09.64
速度原理主義者はクズ
高速化はハードに任せてソフト面では開発効率を最大重視するのが人類にとって有益
86デフォルトの名無しさん:2011/11/21(月) 12:35:14.53
>>85
そういう用途にはシステム記述言語以外のものを使ってくれ。
87デフォルトの名無しさん:2011/11/21(月) 12:55:03.85
>>85
だったらJavaでも使ってろよ。
お前自体がスレ違いだ。
88デフォルトの名無しさん:2011/11/21(月) 13:06:23.53
Javaはないだろ……
89デフォルトの名無しさん:2011/11/21(月) 13:21:54.53
「この新しくて軽い靴なら100M走のタイムが縮まるぜ!」

「(・・・その前に走行フォーム見直せよ・・・)」
「(・・・楽に走れる履きなれたのを使えよ。怪我するぞ・・・)」
「(・・・お前が走るのはマラソンだぞ。軽さより衝撃吸収性を考慮しろよ・・・)」
90デフォルトの名無しさん:2011/11/21(月) 13:59:21.77
C++でシステム記述w
91デフォルトの名無しさん:2011/11/21(月) 17:56:43.99
>>90
何か問題でも?
92デフォルトの名無しさん:2011/11/21(月) 20:37:19.85
>>85
ハード屋はクズってことか
ハードしかできない人ではなくハード「も」できる人まで

おまえさ、ソフトって何か本質がわかってねえだろ
せいぜい教科書で教わった程度の定義でもの言ってるだろ
93デフォルトの名無しさん:2011/11/21(月) 20:40:02.07
重箱の隅つつくばかりの能無しが湧いてきやがったぜwww
94デフォルトの名無しさん:2011/11/21(月) 21:09:34.68
>>89
せいぜいRubyの靴を履いてフォーム改善に勤しんでろ
95デフォルトの名無しさん:2011/11/21(月) 23:11:51.43




96デフォルトの名無しさん:2011/11/23(水) 15:46:46.08
おまえら全然C++11の話してないな
97デフォルトの名無しさん:2011/11/23(水) 16:34:50.03
既に死んだ言語だし。
98デフォルトの名無しさん:2011/11/23(水) 18:56:10.81
では今来た俺に教えてくれ。最終的に9月の規格にはどこまでの仕様が挿ったんだ?
・右辺値参照 + moveセマンティクス
・unique_ptr
・テンプレ可変湖引数
・ラムダ
ここまで理解した
99デフォルトの名無しさん:2011/11/23(水) 18:57:29.38
そこまでだ問題ない
100デフォルトの名無しさん:2011/11/23(水) 18:57:46.85
wikipediaあたりに載ってるよ
101デフォルトの名無しさん:2011/11/23(水) 19:37:59.51
VC++で使えない仕様なんてゴミだろ
102デフォルトの名無しさん:2011/11/23(水) 19:44:40.76
VCがクソなだけ
いいかげんVCなんて捨てろよ
103デフォルトの名無しさん:2011/11/23(水) 19:51:18.99
商用コンパイラがGCCに比べて対応が遅くなるのは仕方ないだろ。
WindowsでVisual C++捨てろというやつの方が変だと思うぞ。仕事にならん
104デフォルトの名無しさん:2011/11/23(水) 20:13:41.57
Intelコンパイラとか
Borlandコンパイラとか
Comeauコンパイラとか

会社でそれなりの地位に居れば
それなりの選択肢はある。
105デフォルトの名無しさん:2011/11/23(水) 20:34:35.37
会社でそれなりの地位に居て決定権がありますが、
コード書くのは主に自分でなく部下・グループメンバーでなので、
チームで成果を出さないといけないので、自分はVC以外を選択する勇気がありませぬ(´・ω・`)
殆どのメンバーはラムダとか右辺値参照とか全く理解できないのです。下手をするとRAIIも
106デフォルトの名無しさん:2011/11/23(水) 20:43:58.69
そんな会社で大丈夫か?
107デフォルトの名無しさん:2011/11/23(水) 20:46:49.63
RAIIくらいは理解させといた方がいい
108デフォルトの名無しさん:2011/11/23(水) 20:47:41.83
教育しろよカス
109デフォルトの名無しさん:2011/11/23(水) 21:11:49.94
部署にもよるだろうな。
うちの特許レベルの技術開発してる部署だと、
主任レベルの人が社長と掛けあってIntel C++導入してたしな。
110デフォルトの名無しさん:2011/11/23(水) 21:15:47.95
マ板向けの話ではあるが、
C++使う人なら、上級技術者と、それ以外とが
部署として別れてる会社に入ったほうがいい。
111デフォルトの名無しさん:2011/11/23(水) 21:45:42.82
VC6 しか使わせてくれなかったので会社辞めたった
誰でも知ってる某大手子会社だぜw
112デフォルトの名無しさん:2011/11/23(水) 22:16:17.13
boost使うの禁止とか言われたんで嫌々自分でスマポ作った思い出ならある
113デフォルトの名無しさん:2011/11/23(水) 22:35:22.21
ITってかなり重要な部門なのに
なんでコンパイラごときで経費ケチケチすんだろうね
114デフォルトの名無しさん:2011/11/23(水) 22:41:10.53
不法コピーしない限り、コンパイラってかなりばかにならんぞ
115デフォルトの名無しさん:2011/11/23(水) 22:41:27.12
不法コピーしない限り、コンパイラってかなりばかにならんぞ
116デフォルトの名無しさん:2011/11/23(水) 22:42:48.57
重い
117デフォルトの名無しさん:2011/11/24(木) 00:08:42.24
禿20人とお前で開発環境はVC6でboostやstlport無し

お前任意数で環境はぼくのかんがえたさいきょうの開発環境
どっち選ぶ
118デフォルトの名無しさん:2011/11/24(木) 00:13:29.81
>>104
ほかはわかるがBorland?
03のテンプレートすら怪しくないかそれ
119デフォルトの名無しさん:2011/11/24(木) 00:15:28.91
Intel C++とハゲと俺まで読んだ
120デフォルトの名無しさん:2011/11/24(木) 00:17:33.34
>>118
最新のコンパイラはほぼ規格準拠してるだろ。
てか、今はEmbarcaderoだっけ。
121デフォルトの名無しさん:2011/11/24(木) 00:18:24.84
>>117
禿は規格無視したVC6使うぐらいならgcc使うんで仕事にならんと思う。
122デフォルトの名無しさん:2011/11/24(木) 00:19:57.50
俺の考えた最強の開発環境がどの程度のものかによるな
あらゆるツールやライブラリにスパコンとかも使えるんだろ
123デフォルトの名無しさん:2011/11/24(木) 00:28:23.59
ぼくのかんがえたさいきょうの開発環境

・ベース:Qt
・コンパイラ:clang++
・補助ライブラリ:boost
・バージョン管理:git
・作業OS:Fedora

他には?
124デフォルトの名無しさん:2011/11/24(木) 00:29:14.49
補助ライブラリにAceとBlits++でも加えとくか
125デフォルトの名無しさん:2011/11/24(木) 00:30:43.25
>>112
そもそも boost がない頃から極めて重要な関心事だったが
126デフォルトの名無しさん:2011/11/24(木) 00:32:26.89
京つかったらコンパイルも一瞬だろうな
127デフォルトの名無しさん:2011/11/24(木) 00:42:57.00
ぜひ、gccのフルビルドのスコアを教えてくれ
128デフォルトの名無しさん:2011/11/24(木) 02:26:59.30
ネタ話はプログラム書けない奴が何とかかんとかスレでやれよ
せめて
129デフォルトの名無しさん:2011/11/24(木) 11:56:17.69
Visual C++のIDEが使うコンパイラのファイルを
こっそりgccに入れ替えて、コマンドラインスイッチとかにも
対応してくれるようなのってない?
130デフォルトの名無しさん:2011/11/24(木) 11:59:34.27
C++11でできた新たな「罠」って見つかってないのかな
>>45
のmoveとオーバーロードとかちゃんと理解してないとハマりそうな
131デフォルトの名無しさん:2011/11/24(木) 12:30:09.52
とりあえずdecltype括弧問題
132デフォルトの名無しさん:2011/11/24(木) 18:34:31.40
>>131
kwsk

もしかして括弧で囲むと参照になるやつのこと
133デフォルトの名無しさん:2011/11/24(木) 18:58:37.41
int n;
decltype(n) i;   // int
decltype((n)) r;  // int&

これね
id-expression ならその変数の型、
そうじゃなくて左辺値なら参照、
(n) は id-expression でなく左辺値なので参照になる、と
134デフォルトの名無しさん:2011/11/24(木) 23:29:21.87
この挙動、左辺値でも参照でなく普通の型(上の例では int)にしたら
何か問題があったのかね
135デフォルトの名無しさん:2011/11/25(金) 07:40:10.49
N1978 -> N2115 の改訂で、
「decltype((e)) は decltype(e) と解釈する」という条文が消えた。
理由は書いてなかった。
136デフォルトの名無しさん:2011/11/25(金) 13:07:14.96
autoとdecltypeとtemplate型推論は同じかとおもってたが
decltypeだけそういう仕様があったのね

ほかにこの3つが違う型になる場合ってあるの?
auto a = ...;
decltype(...) a;
template<typename T> void hoge(T a){}
hoge(...);
137デフォルトの名無しさん:2011/11/26(土) 16:43:03.71
この手の話を全部覚えて使いこなせとか無茶だろ・・・
138デフォルトの名無しさん:2011/11/26(土) 16:55:23.68
気合の入ったライブラリを書く気がないなら必要ないから大丈夫だ
あとはsutter先生あたりの本が出るのを待つんだ
139デフォルトの名無しさん:2011/11/29(火) 09:03:23.09
とりあえず次期仕様には


テンプレートコンストラクタのテンプレート引数を明示的に指定する
operator()のテンプレート引数を明示的に指定する
インスタンス化不要な関数オブジェクト static operator()
配置newのテンプレート引数を明示的に指定する
というか演算子オーバーロード全般のテンプレート引数を明示的に指定する
配置newに対応するdeleteの明示的呼び出し
namespaceのprivateメンバ
テンプレートnamespace
テンプレートでないコンストラクタの引数からテンプレートクラスのテンプレート引数を推定する
 template<typename T> struct A{ A(T){} }; A(1)と書いたらTがintと推定できるような
テンプレート定数 template<int a> static const int b = a * 2;
テンプレートクラスのテンプレート引数によるオーバーロード
テンプレート関数の部分特殊化
SFINAEをキモイ構文じゃなくて言語機能として実装
オーバーロードの優先順位を指定したい
動的declype
 struct A{ virtual vodi f() = 0; };
 struct B : A{ void f(){} };
 A *b1 = new B;
 A *b2 = new dynamic_decltype(*b1); //Bのインスタンスができる


とか希望。

俺以外の誰もいらないと思うけど。
140デフォルトの名無しさん:2011/11/29(火) 09:25:08.77
オナニーは1日3回まで
141デフォルトの名無しさん:2011/11/30(水) 08:17:39.35
>>139
テンプレート関数の部分特殊化とdynamic_decltypeはほしい

それ以外はいらん
142デフォルトの名無しさん:2011/11/30(水) 10:55:33.30
関数テンプレートの部分特殊化は入らんよ
オーバーロードがあるからね
143デフォルトの名無しさん:2011/11/30(水) 19:51:49.76
テンプレートの特殊化はもちょっとどうにかならんかねぇ。
特殊化した型で、メンバー関数の実装を省いたら、
汎用型のメンバー関数を使うぐらいして欲しいんだけど。
メンドイ。
144デフォルトの名無しさん:2011/11/30(水) 20:01:16.07
特殊化していない方を継承すればいい。
145デフォルトの名無しさん:2011/11/30(水) 20:24:31.65
それじゃ、いらんもんが付いてくるので勘弁。
146デフォルトの名無しさん:2011/11/30(水) 21:21:56.53
コンストラクタ引数からtemplate型推論は欲しいな
このためだけにテンプレート関数作ることが結構ある
147デフォルトの名無しさん:2011/11/30(水) 21:41:10.58
>>146
単純なものだともう必要なくね?

Example<A, B> object = Type<Example>()(argA, argB);
型推論を使うと更にすっきり
auto object = Type<Example>()(argA, argB);
148デフォルトの名無しさん:2011/12/01(木) 10:07:07.70
>>145
設計が悪い。
149デフォルトの名無しさん:2011/12/01(木) 11:27:27.61
(:foo, bar:) みたいなのでtupleを返してくれるとか
150デフォルトの名無しさん:2011/12/01(木) 18:21:28.90
std::make_tupleで何がご不満か
151デフォルトの名無しさん:2011/12/01(木) 20:04:33.09
ながい
152デフォルトの名無しさん:2011/12/01(木) 21:22:35.54
>>148
設計の問題か?
template<> class Vector<2>;
template<> class Vector<3>;
例えば、ベクトルを次元別に特殊化して作ったとき、
外積は2次元3次元で実装変えるけど、
内積は共通のものを使いたいとか普通にあるだろ。
153デフォルトの名無しさん:2011/12/01(木) 21:32:25.13
あるある
というかまさにその例で
154デフォルトの名無しさん:2011/12/01(木) 21:45:05.95
>>152
メンバ関数単位で特殊化すればそこだけ入れ替わるよ。

template <class T>
struct A {
  int f(){ return 0; }
  int g(){ return 100; }
};

template <>
int A<void>::f(){ return 1; }

データメンバは同じやり方では特殊化できないけど
データメンバまで入れ替わるような特殊化をしたなら
汎用のメンバ関数なんぞ役に立つまい
155デフォルトの名無しさん:2011/12/01(木) 21:48:11.20
Vector<T, 2> / Vector<T, 3> だとそれ無理
156デフォルトの名無しさん:2011/12/01(木) 21:49:56.86
>>154
それ処理系依存でしょ。
157デフォルトの名無しさん:2011/12/01(木) 21:54:02.38
うむ。確かにダルイな
二桁近くのバリエーションに成れば対策講じるけど〜5種くらいならダサいなと思いながらもコピペ
158デフォルトの名無しさん:2011/12/01(木) 22:00:55.06
>>156
gcc -pedantic でもいけるから、たぶん規格通りのはず。C++11 も関係ない
159デフォルトの名無しさん:2011/12/01(木) 22:02:49.02
なるほどありがとう。多分当時触ったVCが糞だったんだろう
160デフォルトの名無しさん:2011/12/01(木) 22:11:21.56
現状の汎用的な解決策は、異なる関数だけfriendなんだろうが、
オーバーライドはできないし、コンストラクターや
デストラクターはどうしようも無いんだよなぁ。
161デフォルトの名無しさん:2011/12/01(木) 23:02:31.44
>>155
本当だ。部分特殊化はできないのか。
162デフォルトの名無しさん:2011/12/01(木) 23:11:37.21
Vectorをfloat/double/long double、2/3/4(同次座標)で作りたかった時に
部分特殊化できなくて困った
結局コピペ
163デフォルトの名無しさん:2011/12/02(金) 00:50:59.75
サイズわかってる行列とその演算はスクリプトで出力する派
164デフォルトの名無しさん:2011/12/02(金) 17:36:26.95
template<> class Vector<2> : public Vector_base<2>;
template<> class Vector<3> : public Vector_base<3>;
165デフォルトの名無しさん:2011/12/02(金) 20:20:16.66
結局俺もそれと同じような書き方してるな。

話が変わるが、Dのtypedef structってなんか問題あるの?
C++も組み込めばいいのに。
166デフォルトの名無しさん:2011/12/05(月) 11:26:56.34
プリプロセッサがスクリプト並にリッチになればいいのに
167デフォルトの名無しさん:2011/12/05(月) 11:32:21.31
俺用メモ

Amazon.co.jp: ゲームプログラマのためのC++: マイケル・ディックハイザー, 三宅 陽一郎, 田中 幸, ホジソン ますみ, 松浦 悦子: 本:
ttp://www.amazon.co.jp/dp/4797366761
ttp://togetter.com/li/223398
ttp://www.amazon.co.jp/gp/bestsellers/books/754384/

168デフォルトの名無しさん:2011/12/05(月) 11:42:24.43
そこまで行くとスクリプトとmakeでいいじゃんってなる
169デフォルトの名無しさん:2011/12/05(月) 14:08:10.40
初めてのC++11まだ出てないですか?
170デフォルトの名無しさん:2011/12/05(月) 14:32:18.49
>>169
mayersがPDF売ってるよ
171デフォルトの名無しさん:2011/12/05(月) 19:22:23.18
>>166-168
げてものでならば

C#をプリプロセッサとして使う ― CsPP
ttp://labs.yaneu.com/20111002/
172デフォルトの名無しさん:2011/12/05(月) 19:33:36.18
コードジェネレータ系の欠点はエディタやIDEのサポートがなくなることだよな
そこまで自作してメンテナンスする気も起きないし
173デフォルトの名無しさん:2011/12/07(水) 02:34:31.08
>>170
高橋真奈さんのやつです。
174デフォルトの名無しさん:2011/12/09(金) 01:58:58.79
まなのC++本はNG入りのはずだが。
C++11対応を仮に書いたとしても期待できない。
175デフォルトの名無しさん:2011/12/12(月) 17:54:00.65
dynamic_castを言語機能の中に入れてしまったのは間違いだったよね
176デフォルトの名無しさん:2011/12/12(月) 20:43:01.12
なんでやねん
177デフォルトの名無しさん:2011/12/12(月) 23:26:37.32
それ以外の言語機能でできることを、言語機能とはしないというポリシーはもともとないんだが
178デフォルトの名無しさん:2011/12/12(月) 23:58:52.20
プリプロセッサw
自分で書けよw
179デフォルトの名無しさん:2011/12/15(木) 15:23:10.00
int a = 0;
int &b = a;
int &&c = (int&&)a;
int d[2] = {};
int (&e)[2] = d;
int (&&f)[2] = (int(&&)[2])d; //error C2440: '初期化中' : 'int [2]' から 'int (&&)[2]' に変換できません。左辺値を右辺値の参照にバインドすることはできません

vc10のバグ? c++11の仕様?
180デフォルトの名無しさん:2011/12/15(木) 19:00:02.91
MSVCのバグ。
181デフォルトの名無しさん:2011/12/16(金) 09:12:17.10
thx
182デフォルトの名無しさん:2011/12/17(土) 11:33:37.65
バグっていうより古いだけの気がする。
xvalue が登場する前の rvalue reference なんじゃないの?
配列の prvalue って存在しない気がするし。
183デフォルトの名無しさん:2011/12/17(土) 20:47:06.63
よく考えたら配列の prvalue も存在するな…。
やっぱバグだな。

void f(int (&&a)[1]){ std::printf("%d\n", a[0]); }

int main()
{
  struct X { int x[1] = { 10 }; };
  f(X().x);
}
184デフォルトの名無しさん:2011/12/18(日) 22:12:10.31
バグバグ言ってる奴
そのVCが出たのいつだと思ってるんだ?
185デフォルトの名無しさん:2011/12/19(月) 00:48:41.88
β状態だし、期待するだけ無駄だよな。
186デフォルトの名無しさん:2011/12/19(月) 07:36:31.43
いつかは関係ないよ
はなから不完全と言って出してんだから
187デフォルトの名無しさん:2011/12/19(月) 12:18:00.95
vc11も対応項目あんま増えないらしいし
未実装というより、やる気ないってのが正しい気がする
188デフォルトの名無しさん:2011/12/19(月) 22:32:16.26
C99と同じ運命を辿りそうだな
189デフォルトの名無しさん:2011/12/19(月) 22:33:04.84
実装すらされないC99に比べれば
まだM$はやる気があるよ
190デフォルトの名無しさん:2011/12/20(火) 00:20:30.86
やる気がないんじゃなくて
WinRT対応を優先させただけ
191デフォルトの名無しさん:2011/12/21(水) 19:11:08.09
vector< vector< vector<int> > > unko;
C++11ってこれを簡単に書けるようになったんだっけ?
もしくは配列にデフォルトのコンストラクタがあってくれればいいんだけど
やっぱ無理?
192デフォルトの名無しさん:2011/12/21(水) 19:35:05.36
vector<vector<vector<int>>> unko = { { {1,2,3}, {4,5,6}, {7,8,9} }, { {0,0}, {0}, {} } };
こういうの書きたいの?出来るよ
193デフォルトの名無しさん:2011/12/21(水) 19:51:48.00
int unko[5][5][5];
に比べて長いのをC++11で簡単にかけるようになってないかなと

vector<int[5][5]> unko;
これでもいいんだけど
resizeでコンパイルエラーが出てて
多分int[5][5]();を呼びだそうとしてエラー吐かれてしまうま

Marray<vector<int>, 3> unko(5,5,5);
みたいの作らないと無理かな
194デフォルトの名無しさん:2011/12/21(水) 22:06:10.58
>>191
template < std::size_t I, std::size_t J, std::size_t K > using Shit = std::array< std::array< std::array<int, K>, J >, I > ;
Shit<5, 5, 5> unko ;

まあ正直、

template < std::size_t I, std::size_t J, std::size_t K >
struct Shit
{
using type = std::array< std::array< std::array<int, K>, J >, I > ;
} ;
Shit<5, 5, 5>::type unko ;

とあんまり変わんないけどね。
195デフォルトの名無しさん:2011/12/21(水) 22:12:41.22
usingもtemplate使えるんだっけ?
196デフォルトの名無しさん:2011/12/21(水) 22:21:56.74
可変長テンプレート使えばええがな。
Array< int. std::vector >( 10, 20, 30, 4, ・・・);
197デフォルトの名無しさん:2011/12/21(水) 23:00:41.98
なるほどー参考になったありがと
C++03の範囲で作ってみるよ
198デフォルトの名無しさん:2011/12/22(木) 01:21:26.33
何でunkoとかshitとかなの?
199デフォルトの名無しさん:2011/12/22(木) 11:33:13.21
だって美味しいじゃん。
200デフォルトの名無しさん:2011/12/22(木) 13:45:09.09
<thread>ってないの?
201デフォルトの名無しさん:2011/12/22(木) 13:48:21.79
threadsならあるよ
202デフォルトの名無しさん:2011/12/22(木) 20:21:53.50
あるよ
203デフォルトの名無しさん:2011/12/23(金) 18:11:34.48
『ゲームプログラマのためのC++』発刊2日目のつぶやきまとめ
ttp://togetter.com/li/231358

まとめ主は嬉しそうだな
204デフォルトの名無しさん:2011/12/23(金) 19:26:54.83
スレ違いすぎる
205デフォルトの名無しさん:2011/12/24(土) 05:04:57.88
マック関連の環境では全然受け入れられてないよね
linuxとwinでは動くけど
206デフォルトの名無しさん:2011/12/24(土) 05:14:17.13
>>203
こういう奴のせいでゲーム屋はロリコンばかりだと思われるんだ。
アイコンのコピーライトはクリアできてるんだろうな? 泥棒に宣伝してもらっても嬉しくないだろう。
207デフォルトの名無しさん:2011/12/24(土) 05:43:11.03
208デフォルトの名無しさん:2011/12/24(土) 07:15:27.47
>>206
実際多いからしょうがない
209デフォルトの名無しさん:2011/12/24(土) 11:37:15.10
アニヲタっぽい話題ふってる人多いと思うよ
そして、そんな人の中にスーパーハカーがいたりする

C++11 Advent Calendar 2011でも見てみなよ
ttp://atnd.org/events/21936
210デフォルトの名無しさん:2011/12/24(土) 13:01:09.12
17.6.4.3.5
_ で始まらないユーザー定義リテラルの接尾辞は、予約されている。

17.6.4.3.2
グローバル名前空間では、一つ以上の _ で始まる名前は予約されている。

→つまりユーザー定義リテラルは非グローバルな名前空間で定義しないといけない。

でもユーザー定義リテラルを呼び出すとき、
その名前空間を引数から判断することはできない。
(引数はプリミティブな型だから)

どうすればいいの…。
211デフォルトの名無しさん:2011/12/24(土) 13:17:33.96
using でいけるんちゃうん?
212デフォルトの名無しさん:2011/12/24(土) 13:41:30.54
operatorも含めて名前でおk
213デフォルトの名無しさん:2011/12/24(土) 15:49:51.90
>>210
ユーザー定義リテラルの接尾辞は「名前(name)」じゃないので
17.6.4.3.2の制約を受けない

ってどっかで結論が出てたような
214デフォルトの名無しさん:2011/12/24(土) 17:35:37.87
215デフォルトの名無しさん:2011/12/24(土) 17:44:54.42
0_hoge は operator""_hoge(0) とも呼べるんだよね?
216デフォルトの名無しさん:2011/12/24(土) 18:15:34.18
>>214
トン。読んできた。

"hage"_x; // ここでは "hage"_x でひとつながりで切り出されるトークン
operator"" _x("hage", 4); // ここでは _x は独立したトークン

だから、普通に使うとき "hage"_x; は何の問題もない。

問題は定義するときや operator"" _x("hage", 4); という書き方をするときで
その場合でも _x は suffix なので、他の名前と衝突していても構わない、ということね。

で、あと問題はプリプロセスのマクロだけど
マクロで予約されているのはダブルアンダースコアか、_ + 大文字 だから
_ + 小文字 なら置換される可能性はないというわけだ。

なるほど。
217デフォルトの名無しさん:2011/12/24(土) 18:22:22.84
#define _x a がある時の operator "" _x は
"" と _x が離れてるので1つのトークンとは見なされないから
operator "" a になるってのでいいの?
218デフォルトの名無しさん:2011/12/24(土) 18:38:03.32
>>217
13.5.8-8 の第4例に

float operator ""E(const char*); // error: ""E (with no intervening space)
                // is a single token

とわざわざ書いてあるので、 operator"" _x の場合
_x は独立したトークンだし、独立したトークンとして書かなければいけない。

だから #define _x a があったら operator"" a になるので正しいはず。
219デフォルトの名無しさん:2011/12/24(土) 20:19:33.23
なるほど
220デフォルトの名無しさん:2011/12/26(月) 21:52:17.21
http://www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
Schme to readable C++
に自動型推論を導入してみました。まだ不具合が沢山あるので1ヶ月後ぐらいに見るといいかも
221デフォルトの名無しさん:2011/12/27(火) 10:35:01.40
Sub<T>からTを取り出すようなtype_traitってないですか?

$ cat d.cpp
template <class Derived>
class Base {
typedef typename Derived::type type;
};

template <typename T>
class Sub: Base<Sub<T>> {
typedef T type;
};

int main()
{
Sub<int> s;
return 0;
}

$ g++ -std=c++0x d.cpp
d.cpp: In instantiation of ‘Base<Sub<int> >’:
d.cpp:7:7: instantiated from ‘Sub<int>’
d.cpp:13:12: instantiated from here
d.cpp:3:34: error: no type named ‘type’ in ‘class Sub<int>’
222デフォルトの名無しさん:2011/12/27(火) 10:55:20.16
typeidでいいんじゃね?
223デフォルトの名無しさん:2011/12/27(火) 10:58:39.67
template <template <typename> class Derived, typename T>
class Base {
public:
typedef T type;
};

template <typename T>
class Sub : Base<Sub, T> {
};

とかじゃだめ?
224221:2011/12/27(火) 11:11:41.30
>>222
実行時は嫌かな。

>>223
Boostは引数たくさん与えるアプローチで、それに近い。
けどライブラリ側で頑張って仕事したい感じなんで。
225221:2011/12/27(火) 11:13:38.25
ttp://stackoverflow.com/questions/6006614/c-static-polymorphism-crtp-and-using-typedefs-from-derived-classes
によるとこんな感じ。
メタにやるのは難しいのですかね。

template <typename T> struct trait;

template <class Derived>
struct Base {
typedef typename trait<Derived>::type type;
};

template <typename T>
struct Sub: Base<Sub<T>> {
typedef T type;
};

template <typename T>
struct trait<Sub<T>> {
typedef T type;
};

int main()
{
Sub<int> s;
return 0;
}
226デフォルトの名無しさん:2011/12/27(火) 12:16:27.91
227デフォルトの名無しさん:2011/12/27(火) 12:17:06.02
//テンプレートでない引数を入れた場合
template<typename T>
struct template_trait{
typedef T type;
};

//テンプレートを入れた場合
template<template<typename> class temp, typename T>
struct template_trait<temp<T>>{
typedef T type;
};

template<typename T>
struct hoge{};

typedef hoge<int> ihoge;
template_trait<ihoge>::type i = 0;

こんなかんじ?
228221:2011/12/27(火) 13:01:02.76
>>227
良い。

こんなのもないのか・・・
229デフォルトの名無しさん:2011/12/27(火) 18:37:34.12
>>225
> メタにやるのは難しいのですかね。
というかそもそも

template <typename T>
class Sub: Base<Sub<T>> { // (1)
typedef T type;
};

Base<Sub<T>>は(1)の時点で定義されるけど
その時点ではSub<T>は不完全型でメンバは未定義なんでBaseの中ではSub<T>のメンバに依存するものは定義できない
230デフォルトの名無しさん:2011/12/29(木) 18:45:08.64
0xだと無名関数を束縛した変数つかって
関数を定義できるようになるよな。
auto Function = []()->int{ return 0; }
Function();

これ応用してクラスの中に書いたとき、
メンバー変数のメンバー関数の委譲に
使えたりはしないんかね。

struct T
{
     D member;
     auto Function = member.Function;
};

T object;
object.Function():
231デフォルトの名無しさん:2011/12/29(木) 18:51:53.54
autoは無理だがstd::functionならいける
232デフォルトの名無しさん:2011/12/29(木) 19:19:25.32
double a = -0;
はIEEE表現で0なのに
-a
とするとIEEE表現で-0になるバグはどうにかならないのかな

http://ideone.com/m27cn
233デフォルトの名無しさん:2011/12/29(木) 19:24:44.83
0 も -0 も int(0)
http://ideone.com/WBvnH
234デフォルトの名無しさん:2011/12/29(木) 19:28:02.74
メンバー関数とオブジェクトにドット演算子とアロー演算子を適用したときの演算結果って
相変わらず関数呼び出し演算子を呼び出せる何かなんだな。
いいかげん、建前だけでもラムダを返すって事にしてくれりゃいいのに。
235デフォルトの名無しさん:2011/12/29(木) 19:39:11.03
>>233
なるほど
236デフォルトの名無しさん:2011/12/29(木) 19:41:32.47
>>234
ラムダが暗黙の関数オブジェクトとして定義されているから循環参照になる。
237デフォルトの名無しさん:2011/12/29(木) 19:57:57.35
>>236
実装上は問題ないじゃん。

object.Function;// この時点ではラムダ無し
auto lambda = object.Function; // 使用されるタイミングで初めてラムダ生成
238デフォルトの名無しさん:2011/12/29(木) 23:48:51.06
C++「javaが二の足踏んでる間にλ入れちゃったぁ えへっ☆」
239デフォルトの名無しさん:2012/01/02(月) 21:15:35.72
Javaには本気でほしい機能。あとイテレータの改善も。
240デフォルトの名無しさん:2012/01/04(水) 22:45:07.44
質問。
ラムダ式って何が便利?

関数ポインタを引数にとる関数のテストには使えるかなと思ったけどそれ以外の使い道があるのか知りたいです。
241デフォルトの名無しさん:2012/01/04(水) 22:53:28.31
>>240
関係のある処理を近くに書けるところ。
キャプチャーができるところ。
242デフォルトの名無しさん:2012/01/04(水) 22:59:40.51
関数作るまでもないような処理を
そのままインラインで書ける
243デフォルトの名無しさん:2012/01/04(水) 23:53:03.89
・関数オブジェクトのクラス定義を式中に書ける
・そのクラス定義を簡略記法で書ける
つまり、ソースの記述の面で書くときに楽になって読むときの可読性があがる。

と、実のところそれだけだけど適切に使えば効果は大きい。
244デフォルトの名無しさん:2012/01/04(水) 23:59:34.84
ラムダがあるのにforにrange-basedの構文を追加したのは冗長だと思う
245デフォルトの名無しさん:2012/01/05(木) 00:21:05.83
for(int i : v){
printf("%d",i);
}

std::for_each(v.begin(),v.end(),[](int i){
printf("%d",i);
})

めんどくせーと書こうと思ったけど
書いてみると大して変わらなかった
246デフォルトの名無しさん:2012/01/05(木) 00:24:06.31
上の方がすっきりに見える
247デフォルトの名無しさん:2012/01/05(木) 00:24:52.48
上で書けた方が格段にいいわ
248デフォルトの名無しさん:2012/01/05(木) 00:36:52.36
lambdaじゃ引数にauto使えないしな
249デフォルトの名無しさん:2012/01/05(木) 02:03:11.46
C++のforeachはめんどくさい
範囲指定するのがめんどくさい
引数の型書くのがめんどくさい
forとeachの間に_書くのがめんどくさい
250デフォルトの名無しさん:2012/01/05(木) 02:04:53.50
boost::for_each(v,[](int){
printf("%d",i);
})
だと記述量はそんなに変わらんだろう
型推論はもうちょっと真面目にやれと思う
251デフォルトの名無しさん:2012/01/05(木) 07:20:28.94
折角std::begin, std::end導入したんだから
conceptさん無くてもそういうアルゴリズムが欲しかったな
関数名変わっても良いから
252デフォルトの名無しさん:2012/01/05(木) 11:39:18.95
concept_mapあればrange-based forがもっと効いてくるのになあ。
253デフォルトの名無しさん:2012/01/05(木) 19:05:49.70
conceptさんなんで逝ってしもうたんや…
254デフォルトの名無しさん:2012/01/06(金) 00:06:38.10
std::vector<int> values;
For( &value ).Each( []( int i ){ std::cerr << "values:"<< i << std::endl; } );

どうせインライン展開してループに変わるんだから
こういう形式を標準で作ってくれればよかったのになぁ。

Sequence sequence( 1, 100 );
For vector_for( &vector );
Iterator *loop;

loop = &sequence;
loop = &vector_for;
loop->Each( []( int i ){ std::cerr << "values:"<< i << std::endl; } );
255デフォルトの名無しさん:2012/01/06(金) 00:11:35.67
関数を
[] func( X x, Y y ) -> decltype( x + y );
みたいにかけるようになるのもラムダのおかげだっちゃ?
256デフォルトの名無しさん:2012/01/06(金) 10:28:07.67
>>254 そういう形式で書きたかったら
自分でそういうライブラリを作ればいいじゃん
257デフォルトの名無しさん:2012/01/06(金) 10:44:57.09
現時点で一番C++11が使えるコンパイラってどれなの?
258デフォルトの名無しさん:2012/01/06(金) 11:30:02.17
GCCじゃないの?
259デフォルトの名無しさん:2012/01/06(金) 13:32:46.06
>>256
書くけどさぁ。標準化されてないのが残念だなって。
標準化されてれば、こういう関数を、他の人のライブラリに対しても
使えるわけじゃん。非標準じゃ自分しか使えない。

template<class Iterator> F( Iterator i )
{
      //事前処理
      loop.each( [](int i){ this->container.push_back( i ) } ):
      //後処理
}
260デフォルトの名無しさん:2012/01/06(金) 14:07:15.63
gccと比べるとmsvcの対応のお粗末さに泣ける
261デフォルトの名無しさん:2012/01/06(金) 14:38:42.15
foreachみたいなものは、ライブラリではなく
言語の構文として実装してほしいなあ

言語自体を大きくするつもりはないらしいが
pararell_forよりもompのほうがしっくりくる
262デフォルトの名無しさん:2012/01/07(土) 01:03:52.09
>>254
> For( &value ).Each( []( int i ){ std::cerr << "values:"<< i << std::endl; } );

このForは不要では?
&も。
Each(value, 〜)でいいのでは?
263デフォルトの名無しさん:2012/01/07(土) 01:39:46.98
gccもまだまだ実装できてないものあるけどね
264デフォルトの名無しさん:2012/01/07(土) 02:04:06.30
>>262

template<class Iterator> F( Iterator loop )
{
      loop.each( [](int i){ this->container.push_back( i ) } ):
}

引数で、ForやSequenceを受け取りたいから、それじゃ困る。
265デフォルトの名無しさん:2012/01/07(土) 21:11:16.94
Boost.RangeとかPStade.Ovenとかじゃだめなの?
何がどう便利なのか分からない。
自分の書きたいように書きたいという気持ちは分かるけど。
266デフォルトの名無しさん:2012/01/08(日) 08:31:45.54
コードのconst祭り状態を何とかしてくれ
規格で
267デフォルトの名無しさん:2012/01/08(日) 20:04:15.78
>>265
所謂コルーチンと言われるものと同じメリットがある
別にテンプレートじゃなくていいのがひとつのメリット
他にも色々あるが書くと長くなって面倒だから、
コルーチンで調べて味噌
268デフォルトの名無しさん:2012/01/08(日) 20:50:50.80
書けるものなら書いてごらん
269デフォルトの名無しさん:2012/01/10(火) 13:27:51.70
>>266
はい sed s/const//g
270デフォルトの名無しさん:2012/01/12(木) 23:46:23.31
245の例なんだけどさ、コンテナの要素の型名が糞長い場合ってあるじゃん?
std::shared_ptr<LongClassName> みたいな感じで。
そのまま書くとラムダが糞長くなっちゃって、for(int i = 0; ... 的な原始的
表記の方が短く書けることがあってさ。
こういうときは型名をtypedefして短縮する、というのが正攻法だと思うんだけど、
boost::for_each(v, [](decltype(v[0])& x){ process(x); });
ってしてもいいの?
gcc, vcともにコンパイルは通るし動きはしたんだけど、
あんまり良いことじゃないような気がして。
271デフォルトの名無しさん:2012/01/13(金) 00:06:50.12
いいんじゃね?
でもその書き方だとrangeに対して一般的に使用することはできないな。
272270:2012/01/13(金) 00:50:36.73
>>271
いいのか。thx。
ぶっちゃけvectorしか頭に無かったんだが、
コンテナ要素の型名を取り出す一般的表記、というと
decltype(v.back())、あたりが一番短い感じか。
[0]もbackも無意味なのが生理的にいまいちイヤだけども。

conceptさえあればこんなしょーもない記述も必要無くなるんだがなぁ……
273デフォルトの名無しさん:2012/01/13(金) 01:00:54.11
標準コンテナならdecltype(v)::value_typeが本当は正解なんだろうけどな
VCじゃ使えないしオレオレコンテナでは定義されてるとは限らないし
274デフォルトの名無しさん:2012/01/13(金) 01:07:35.41
そこでマクロですよw
昔、g++のtypeof使ったのよく書いてたよ。
275デフォルトの名無しさん:2012/01/13(金) 01:09:43.15
定義されてるとは限らないはSFINAEでなんとかなるっしょ。
276デフォルトの名無しさん:2012/01/13(金) 01:32:49.99
using std::begin;
decltyle(*begin(v))

こうしたほうがいいんだろうなあ
277デフォルトの名無しさん:2012/01/13(金) 07:21:54.60
なんにせよdecltypeはキーワードとして長過ぎる
278デフォルトの名無しさん:2012/01/13(金) 10:14:47.15
確かにdecltypeは長いな。
他に何か良い名称は無かったものか・・・。
279デフォルトの名無しさん:2012/01/13(金) 10:26:30.83
#define d decltype
280デフォルトの名無しさん:2012/01/13(金) 12:10:05.40
decltyan
少し読みやすくなった
281デフォルトの名無しさん:2012/01/16(月) 08:58:03.50
#ifdef HAVE_LAMBDA
とか
#ifdef HAVE_DECLTYPE
みたいなことはできないものでしょうか
282デフォルトの名無しさん:2012/01/16(月) 11:08:05.55
Boost.Config に BOOST_NO_DECLTYPE とか BOOST_NO_LAMBDAS とかある。
ttp://www.boost.org/doc/libs/1_48_0/libs/config/doc/html/boost_config/boost_macro_reference.html
283デフォルトの名無しさん:2012/01/18(水) 09:22:42.83
0xのまとまった情報のあるサイト教えてください。
284デフォルトの名無しさん:2012/01/18(水) 20:27:50.32
wikiじゃダメ?
285デフォルトの名無しさん:2012/01/18(水) 21:06:28.81
とりあえずWikipediaかびゃーんの御大のページ(日本語訳もある)だろうな
286デフォルトの名無しさん:2012/01/18(水) 21:20:33.11
ただ網羅してるだけじゃなく無用な部分を迷い無く読み飛ばせる文書を
纏まってると言うんじゃないかな
287デフォルトの名無しさん:2012/01/18(水) 21:25:46.33
クラス名、メソッド名の命名規則なんだけどさ。
STL, Boost, LinuxAPI:小文字開始のスネークケース
WindowsAPI:大文字開始のキャメルケース+ハンガリアン
Google:大文字開始のキャメルケース

自分は特に理由もなく大文字開始のキャメルケースを採用してるんだけど、
STLを使わないC++とかまずないわけで、そうなると小文字開始のスネークケース
の方が全体的に見て統制が取れてるような気がしてきたんだよね。
仕事じゃなければ好きにしろ、って話ではあるんだけど、
小文字開始のスネークケースはやめた方が良い理由って何かある?
288デフォルトの名無しさん:2012/01/18(水) 21:30:50.83
すれち
289287:2012/01/18(水) 21:36:52.51
ごめんC++のスレと間違えた。
287は無視してください。
290デフォルトの名無しさん:2012/01/18(水) 23:46:08.36
(),[],{},<>と全部使う最強カッコ言語だな。
次は、どうすんだろう?
291デフォルトの名無しさん:2012/01/18(水) 23:58:07.65
>>290
Eヨとかじゃね?
292デフォルトの名無しさん:2012/01/18(水) 23:58:13.42
<>をtemplateに使ったのは失敗だったな
$とか#を使えばよかったのに。

template #T #U class F;
F#int#int f;

…キモッw
293デフォルトの名無しさん:2012/01/19(木) 00:11:02.01
>>290
\(^o^)/
294デフォルトの名無しさん:2012/01/19(木) 00:51:32.25
まだ@""とかL""とか""_xxxとか、
qw()とか@()とか%{}とかとかとか
295デフォルトの名無しさん:2012/01/19(木) 02:28:31.29
>>286
「無用な部分」が読み手や時と場合によるんだから、無理だろ。
296デフォルトの名無しさん:2012/01/19(木) 18:51:36.22
>>284
どこの?
297デフォルトの名無しさん:2012/01/19(木) 18:55:44.35
>>287
禿曰く、小文字なのは標準ライブラリだから。
使う側の人はキャメルケース使えとさ。
298デフォルトの名無しさん:2012/01/19(木) 19:51:52.37
>>292
Dの!は悪くないと思う
299デフォルトの名無しさん:2012/01/19(木) 20:03:46.64
FORTHみたいに2-characterで囲い始めを表せばよかったんだよ
template.(typename T)class a{};

a.(int) i;
300デフォルトの名無しさん:2012/01/19(木) 20:33:25.32
/ / が残ってるよ
301デフォルトの名無しさん:2012/01/19(木) 20:47:40.61
>>300
/*コメントに使われてない?*/
302デフォルトの名無しさん:2012/01/19(木) 21:59:22.31
それは /* */ だし
303デフォルトの名無しさん:2012/01/19(木) 22:21:34.22
¥/があるな。日本人には見づらいが。
304デフォルトの名無しさん:2012/01/19(木) 23:15:00.42
>>303
なあに。Linuxならバックスラッシュだし、Windowsでもフォント改造するから問題ないさ。
305デフォルトの名無しさん:2012/01/20(金) 09:32:37.97
<>は比較演算子とシフトに使われているがかっことしては見やすい。
!()はきもいが明確。

「」とか【】とか、新しい括弧がキーボードから直接打てれば、
それが一番いいんだが。
306デフォルトの名無しさん:2012/01/20(金) 09:45:58.42
>>290
括弧いいな
しかし、[[ ]]これはどうよ
307デフォルトの名無しさん:2012/01/20(金) 12:05:07.84
それなら他と完全に区別できるかな。
attributesで使われる予定だったんだっけ?
308デフォルトの名無しさん:2012/01/20(金) 18:50:12.14
attributeはC++11でも生き残ってるよ
309デフォルトの名無しさん:2012/01/20(金) 20:20:07.96
やっぱりヌルポインタを nullptr にしたのは失敗だったな
nullpo にしておけば Java と一歩差をつけられたのに
310デフォルトの名無しさん:2012/01/20(金) 21:40:46.44
なぜ null_ptr にしなかったのか。。unique_ptr や shared_ptr と整合性がとれない…
311デフォルトの名無しさん:2012/01/20(金) 21:46:42.69
キーワードとクラスで整合性取られても
312デフォルトの名無しさん:2012/01/20(金) 22:02:45.81
null_ptrだと
既存のプログラムで動かないのが出てくるから
313デフォルトの名無しさん:2012/01/20(金) 22:48:11.67
< /> があるぜよ
314デフォルトの名無しさん:2012/01/20(金) 23:20:03.38
なんだよそのXHTML
315デフォルトの名無しさん:2012/01/20(金) 23:41:43.43
http://www.open-std.org/jtc1/sc22/wg21/
News 2012-01-18: The deadline for the next mailing is 2012-02-24
News 2012-01-18: The 2012-01 pre-Kona mailing is available
News 2012-01-18: The C++ Standard Core Language Issues List (Revision 78) is available
316デフォルトの名無しさん:2012/01/21(土) 00:08:09.28
ところで tr2ってどうなったの?
317デフォルトの名無しさん:2012/01/21(土) 01:25:46.35
C++1yとか何かと思ったらC++1x(C++0x)の次ってことか
次スレはこれだな
318デフォルトの名無しさん:2012/01/21(土) 08:32:16.35
yだともう16進とは言い訳出来ないな
319デフォルトの名無しさん:2012/01/21(土) 09:09:09.41
まあ、TR2はさすがに7年あれば十分だろ。
320デフォルトの名無しさん:2012/01/21(土) 09:30:45.95
2003 - 1998 = 5
2011 - 2003 = 8

さあどうなるか
321デフォルトの名無しさん:2012/01/21(土) 10:18:03.85
10年後ぐらいか
322デフォルトの名無しさん:2012/01/21(土) 11:21:23.00
yは17進数と言い張られる可能性が
323デフォルトの名無しさん:2012/01/21(土) 12:03:46.24
つ フィボナッチ数列
324デフォルトの名無しさん:2012/01/21(土) 12:52:31.84
次はマイナーチェンジじゃないの?
なら大丈夫

static if とか入るなら嬉しいけどさ
325デフォルトの名無しさん:2012/01/21(土) 13:34:42.03
【プログラミング部】 PHPが100倍速で動くようになったぞー
http://awabi.2ch.net/test/read.cgi/poverty/1327050821/
326デフォルトの名無しさん:2012/01/21(土) 17:33:49.57
そりゃコンパイル作りゃ速くなるだろ
327デフォルトの名無しさん:2012/01/21(土) 17:38:55.67
インタープリター型のVMが遅すぎるだけだ
328デフォルトの名無しさん:2012/01/22(日) 04:31:26.68
http://www.open-std.org/jtc1/sc22/wg21/
News 2011-01-18: The C++ Standard Library Issues List (Revision 77) is available
329デフォルトの名無しさん:2012/01/23(月) 03:08:00.28
禿って、C++11対応の「プログラミング言語C++」書いてくれてんの?
330デフォルトの名無しさん:2012/01/23(月) 06:36:11.30
静的型推論でPHPが高速になったのなら
ちょっと使ってみたいけど
331デフォルトの名無しさん:2012/01/23(月) 10:11:17.18
>>329
そりゃ書くだろ。
書かんかったら十字砲火浴びると思われ。
332デフォルトの名無しさん:2012/01/23(月) 18:40:48.07
でも翻訳版が出るまで何年かかるんだろう…
333デフォルトの名無しさん:2012/01/24(火) 11:49:07.13
猫でもわかるように頼む
334デフォルトの名無しさん:2012/01/24(火) 19:25:31.69
猫には分かるが
お前には分からん
335デフォルトの名無しさん:2012/01/24(火) 21:03:40.76
にゃー
336デフォルトの名無しさん:2012/01/24(火) 21:48:27.17
せっかくユーザー定義リテラルさんがいるんだからと
二進数作ってみたけど

if(flag & 0x0101c0111c0000c0000_b) ...

とかするしかなくて、キモイ。普通にマクロで作ったのがマシだな。
337デフォルトの名無しさん:2012/01/24(火) 22:23:49.61
なんでそんなキモイ作り方になるの
338デフォルトの名無しさん:2012/01/24(火) 23:04:14.64
区切りを入れたいんだろう
339デフォルトの名無しさん:2012/01/25(水) 00:10:39.44
ユーザー定義リテラルさん使えるコンパイラって今あるの?
340デフォルトの名無しさん:2012/01/25(水) 00:15:08.55
区切りがないと二進数はかえって見づらいから
最初は "0101_0111"_b みたいにできないかなと思ったんだけど
user-defined string literal は constexpr にできない。

かといって 0101_0111_b にすると、_0111_b がサフィックスになる。

というわけで妥協して c で区切るというキモイものに。

ユーザー定義リテラルはこういう使い方をするためのものではないということがわかった。
341デフォルトの名無しさん:2012/01/25(水) 00:20:58.03
>>339
gcc-4.7 の最新レポジトリのは大体の新機能が使えるよ。

template <char... args> long operator"" _b(){ ... }
template <char... args> long long operator"" _b(){ ... }

のように戻り値だけ違うものが普通にオーバーロードできてしまって
後者が必ず選択されるというバグっぽいものはある。

もしかしたらこれが規格通りの動作かもしれないけど。
342デフォルトの名無しさん:2012/01/25(水) 00:29:11.26
色々バグはあるみたいよ
ttp://cpplover.blogspot.com/2011/09/gcc-47static.html
343デフォルトの名無しさん:2012/01/25(水) 00:37:09.80
実装状況
ttp://gcc.gnu.org/gcc-4.7/cxx0x_status.html

大きな所は
・Alignment support
・Inheriting constructors
・Thread-local storage
あたりかな
344デフォルトの名無しさん:2012/01/25(水) 01:21:51.08
>>340
> user-defined string literal は constexpr にできない。

そうなの?
↓こんなん書いてあったんだけど。
N337 13.5.8 [over.literal] p7
> ... Also, they can be declared inline or constexpr, ...
345デフォルトの名無しさん:2012/01/25(水) 06:54:38.33
>>340
俺もそれほしかったんだが
そうか無理なのか・・・残念だ
346デフォルトの名無しさん:2012/01/25(水) 07:33:10.75
文字列は静的な定数だけど
それでも配列要素にアクセスするのは
constexpr の範疇外な気がする
ポインタ演算だから
347デフォルトの名無しさん:2012/01/25(水) 07:33:42.80
ポインタ演算というか、脱参照ね
348デフォルトの名無しさん:2012/01/25(水) 07:34:41.43
いや、演算後の脱参照だ
349デフォルトの名無しさん:2012/01/25(水) 08:34:28.36
>>340
constexperと可変長引数テンプレートの方がよくね?
b(1111, 0000);

そもそも2進直書きなんて何に使うんだよ。
350デフォルトの名無しさん:2012/01/25(水) 10:30:54.66
>>346-348
別にそんな制限なくね?
http://ideone.com/gk4KE
351デフォルトの名無しさん:2012/01/25(水) 12:25:11.60
ほんとだ。
文字列リテラルの dereference は定数として使えるんだ。
知らなかった…。

int main()
{
  int a["0"[0]] a;
  std::printf("%d\n", (int)sizeof(a));
}
352デフォルトの名無しさん:2012/01/25(水) 12:35:57.51
ということは、
  再帰できない、
  return 文しか書けない、
  仮引数は定数として使えない、
という制限のもとで
文字列を解釈して整数に直す constexpr 関数をどうやって書くかという問題になるわけだな。
353デフォルトの名無しさん:2012/01/25(水) 13:38:28.23
宣言時に初期化されているconst配列と、constexpr配列の添字アクセス、ポインター演算は、
規格制定の最後の土壇場に認められた。

>>352
再帰はできるぞ。
354デフォルトの名無しさん:2012/01/25(水) 15:06:48.56
constexpr 整数パーサとか既にあるぞ
http://d.hatena.ne.jp/osyo-manga/20120113/1326395185
355デフォルトの名無しさん:2012/01/25(水) 16:22:15.54
>>353
あれ、ほんとだ。普通に許されてるねえ。
どこかで「再帰は許されない」って文面を見た気がするんだけど…。
ググってもソースがでてこない。
356デフォルトの名無しさん:2012/01/25(水) 18:52:15.39
昔はむしろ再帰くらいしかできないクソ仕様だった
357デフォルトの名無しさん:2012/01/25(水) 20:13:27.77
再帰出来なかったら constexpr の価値が下がりまくり
358デフォルトの名無しさん:2012/01/25(水) 21:06:38.63
ソースは日本語版wikipediaだった。古いのかな >>355
今の規格では再帰は明確に許されている(Annex Bに「最低512回再帰を許せ」とある)

ところで constexpr 関数内でエラー処理が必要なとき
static_assert の中に仮引数を入れられないんだけど、どうしたらいいんだろう。

constexpr int f(int a){ return (a == 0)? a : throw std::logic_error("ふぇぇ"); }

constexpr int x = f(1); // コンパイル時にエラーが出てくれる
if(x == f(1)){ ...; } // 実行時にエラーが出る(コンパイル時に出てほしい)
359デフォルトの名無しさん:2012/01/25(水) 22:10:05.36
リンカエラーにならできる
http://d.hatena.ne.jp/RiSK/20110713/1310540882
360デフォルトの名無しさん:2012/01/25(水) 22:17:00.00
なんでstatic_assertできない仕様になったの?
361デフォルトの名無しさん:2012/01/25(水) 22:20:47.82
constexpr関数は普通の関数としても使えるから。
関数内ではコンパイル時なのか実行時なのか判断できない。
362デフォルトの名無しさん:2012/01/25(水) 22:22:05.90
なんでDの__ctfe変数みたいのを用意しなかったんだ
誰かC++1yで提案してくれ
363デフォルトの名無しさん:2012/01/25(水) 22:58:03.42
>>359
頭いい
364デフォルトの名無しさん:2012/01/26(木) 00:58:27.68
>>362
なんで自分で提案しないのさ?
365デフォルトの名無しさん:2012/01/26(木) 05:59:06.80
>>360
できる。
というか規格嫁アホ。
366デフォルトの名無しさん:2012/01/26(木) 07:27:54.56
main.cpp:3:2: エラー: non-constant condition for static assertion
main.cpp:3:2: エラー: ‘a’ is not a constant expression

って言われるぞ
367デフォルトの名無しさん:2012/01/26(木) 09:01:46.10
>>365
static_assert を入れることはできるけど
static_assert する条件には仮引数を使えない
368デフォルトの名無しさん:2012/01/26(木) 09:09:53.37
ああ、それか。
まあ、constexpr関数はコンパイル時に評価されることもあれば、実行時に評価されることもあるしなぁ。
369デフォルトの名無しさん:2012/01/26(木) 12:07:17.02
こうなってくると、コンパイル時にしか呼び出せない関数がほしくなるな
370デフォルトの名無しさん:2012/01/27(金) 00:17:48.01
実行時に評価される時は無視してくれればいいのに
371デフォルトの名無しさん:2012/01/27(金) 09:29:07.07
ignore namespaceって
こういう使い方ができるのかな。

namespace another_lib{
void func1();
}

namespace my_lib{
//another_lib::を書くのが面倒なので
using namespace another_lib;
inline void func2(){ func1(); }
//my_lib::func1と書けないようにする
ignore namespace another_lib;
}
372デフォルトの名無しさん:2012/01/27(金) 09:40:13.81
>>371
スレ違い。
ここはC++11スレだ。
そういう話はC++1yスレを立ててやれ。

まあそれはともかく、まだ大雑把に提案されただけで、規格の文面の用意されていない段階じゃねーか。
373デフォルトの名無しさん:2012/01/27(金) 09:59:40.90
というかこれでいいじゃん。

#include <string>

void f()
{
  {
    using namaspace std ;
    string s ;
  }
  std::string s ;
}
374デフォルトの名無しさん:2012/01/27(金) 10:48:12.65
templateのADLがらみでしょ。
375デフォルトの名無しさん:2012/01/27(金) 18:35:57.55
randomデバイスの挙動が意味不明なので、おしえてください。
intに入る非負だと思っていたのですが。

$ more rnd.cpp
#include <iostream>
#include <random>
using namespace std;

void echo(int val) {
cout << "why? " << val << endl;
}

int main()
{
static random_device rnd;
for (int i=0; i<10; ++i) {
echo(rnd());
cout << rnd() << endl;
}
}

$ g++-mp-4.6 -std=c++0x rnd.cpp

$ ./a.out
why? -1796924150
3042913710
why? -314325772
2069611482
why? 1357648257
1265153896
...
376デフォルトの名無しさん:2012/01/27(金) 18:40:35.61
非負数ならunsignedで受けないと。
377デフォルトの名無しさん:2012/01/27(金) 18:44:02.95
>>375
random_device関係ないし。
unsigned intからintへの変換でintの表現可能な範囲を超えているので鼻から悪魔を召喚してしまっている。
random_device::result_typeはunsigned intであり、intではない。
その値の範囲はrandom_device::min()とrandom_device::max()の間。
378デフォルトの名無しさん:2012/01/27(金) 19:04:04.50
unsignedって一桁おおいのですね。あぁ恥ずかし。
ありがとうございました。
379デフォルトの名無しさん:2012/01/27(金) 19:38:24.38
調べていたらこれに当たったのですが、
ttp://cpplover.blogspot.com/2009/11/c0xrandom.html
最後のuniform_real_distribution(あるいはuniform_int_distribution)
に到達する道のりが長すぎます。その後、何かショートカットできてたりしませんか?
380デフォルトの名無しさん:2012/01/27(金) 20:34:45.41
しません
381デフォルトの名無しさん:2012/01/29(日) 06:37:08.94
「とりあえずテレビをつける」のをやめようか
http://www.nicovideo.jp/watch/sm16774477

1/28 27日の朝生の感想 & 岐阜にキムチの町があるらしい!
http://www.nicovideo.jp/watch/sm16814879

日本の年寄は情弱。一日中反日TVを見てる。
http://www.nicovideo.jp/watch/sm16812923

マスゴミの麻生さん叩きを検証しよう
http://www.nicovideo.jp/watch/sm16811530

外圧で日本経済の破壊工作をする馬鹿
http://www.nicovideo.jp/watch/sm16811102

【拡散】 民主党の新たな言論弾圧法案、[秘密保全法案]
http://www.nicovideo.jp/watch/sm16809977

法務省の「新たな人権救済機関」Q&Aが国民を騙している件
http://www.nicovideo.jp/watch/sm16809271

【西部邁ゼミナール】安倍(元総理)の日本国民に訴える
1 http://www.nicovideo.jp/watch/sm16692013
2 http://www.nicovideo.jp/watch/sm16750147
3 http://www.nicovideo.jp/watch/sm16810518

【討論!】野田民主党内閣の本質と行方[桜H24/1/28]
1/3 http://www.nicovideo.jp/watch/so16804695
2/3 http://www.nicovideo.jp/watch/so16804716
3/3 http://www.nicovideo.jp/watch/so16804726
382デフォルトの名無しさん:2012/01/29(日) 15:01:14.79
>>381
グロ?
383デフォルトの名無しさん:2012/01/31(火) 00:39:17.13
マルチディスパッチはいつになったらはいんのよ。
Perlですら対応したんだから、変態言語も威厳を見せろよ。
384デフォルトの名無しさん:2012/01/31(火) 00:43:15.54
ADLで我慢しなさい。
385デフォルトの名無しさん:2012/01/31(火) 00:55:47.49
パッと見似てるけど、全然違うじゃんかよ?
オレ、アレがいい?。アレがいぃ?。
アレじゃなきゃヤダヤダ?(´・д・`)
Perlくんも持ってんだよぉ?
買って買って?
386デフォルトの名無しさん:2012/01/31(火) 04:08:20.44
あなたにはboostがあるでしょ!
うちは低水準なんだから我慢しなさい
387デフォルトの名無しさん:2012/01/31(火) 06:40:04.22
dynamic_castで分岐すりゃいいじゃんいいじゃん
388デフォルトの名無しさん:2012/01/31(火) 12:26:03.48
次の大規模な改訂で入るかもしれんぞ。
なにしろ、禿がいまだに諦めてないから。
389デフォルトの名無しさん:2012/01/31(火) 21:05:51.56
クラス構造はそのままに制約無く実現するには関数の様に振舞う関数じゃないナニカを導入しないといかんから
またラビリンス度が上がるな
390デフォルトの名無しさん:2012/01/31(火) 22:02:26.11
いや、禿の目指してるのはvirtual functionのmultiple dispatchだよ。
効率よいVFTの作り方を模索中(だった、かな?)。
>>n2216
391デフォルトの名無しさん:2012/01/31(火) 22:43:22.81
bridgeパターンのdynamic_castは解決できるのん?
392デフォルトの名無しさん:2012/02/01(水) 00:11:12.60
>>387
どうやってやんの?
関数追加するたびに、分岐書き換えたりしないんだよね。
393デフォルトの名無しさん:2012/02/03(金) 13:42:28.92
>>340
Digit Separators coming back
http://www.open-std.org/JTC1/sc22/wg21/docs/papers/2012/n3342.html
入るといいね
394デフォルトの名無しさん:2012/02/03(金) 18:13:05.91
インデントみたいに何桁区切りにするかで不毛な議論が行われるんだろうなあ
395デフォルトの名無しさん:2012/02/03(金) 20:44:01.59
こういうの各自で解決するためのユーザー定義リテラルさんだったんじゃないのか
一体何だったのか…
396デフォルトの名無しさん:2012/02/03(金) 22:04:27.32
何桁区切りにするかはconstexprで計算する
397デフォルトの名無しさん:2012/02/04(土) 08:20:11.66
398デフォルトの名無しさん:2012/02/04(土) 10:02:57.80
マジか!

range-based for 使ってみるとすごい便利だから嬉しい。

std::vector<std::shared_ptr<A> > vec;
for(auto it = std::begin(vec); it != std::end(vec); ++it){
  it->func(); // 間違い
  (*it)->func();
}
for(auto& x: vec){
  x->func(); // こう書ける
}
399デフォルトの名無しさん:2012/02/04(土) 10:34:38.57
range-based forどころかあらかた実装しろよ
400デフォルトの名無しさん:2012/02/04(土) 11:08:39.27
C++11 だと
> std::vector<std::shared_ptr<A>>
でもおkなんじゃ
401デフォルトの名無しさん:2012/02/04(土) 12:24:15.34
挙動に違いがなければコーディングスタイルに突っ込まなくてもいいじゃない
402デフォルトの名無しさん:2012/02/04(土) 12:50:04.08
MS's Visual C++ team invites you to complete this C++11 Conformance Survey
おまいらもやってこい
403デフォルトの名無しさん:2012/02/04(土) 12:56:12.82
Visual C++ 11 Beta って言ってるけど既に2012年なんだよな
404デフォルトの名無しさん:2012/02/04(土) 13:09:15.51
2011年に出す……出すが、今回その底の指定まではしていない
どうかそのことを諸君らも思い出していただきたい
つまり…我々がその気になればVisual Studio 0x2011にすることも可能だろう……ということ……!
405デフォルトの名無しさん:2012/02/04(土) 13:16:01.12
一万年と二千年前から愛してる
406デフォルトの名無しさん:2012/02/04(土) 13:27:21.45
八千年過ぎた頃から毛根がなくなった
407デフォルトの名無しさん:2012/02/04(土) 13:31:16.22
C++11の準拠度を上げたVSという意味で申し上げた
408デフォルトの名無しさん:2012/02/04(土) 13:33:19.61
g++ 4.7 並の準拠率でも微妙に不十分だってのに
それに遥かに及ばないんじゃ
409デフォルトの名無しさん:2012/02/04(土) 13:40:00.27
>>402
どこだか探しちゃったじゃないか
http://blogs.msdn.com/b/vcblog/archive/2012/02/02/10263304.aspx
410デフォルトの名無しさん:2012/02/04(土) 19:34:28.14
どれを優先的に実装して欲しいかの投票?
411デフォルトの名無しさん:2012/02/04(土) 22:01:17.17
>>403
VC++2011じゃなくてVC++11だから
6 = 6
2002 = 7
2003 = 7.1
2005 = 8
2008 = 9
2010 = 10
って続いてきた通し番号だから
412デフォルトの名無しさん:2012/02/04(土) 22:08:14.81
おお、そう言えばそうだな
近い数字だから惑わされてた
413デフォルトの名無しさん:2012/02/04(土) 22:13:44.13
C++0xを踏まえたネタかと
414デフォルトの名無しさん:2012/02/05(日) 16:18:34.36
C++11の仕様を一気に取り入れるのは難しいことなの?
働けやMS
415デフォルトの名無しさん:2012/02/05(日) 16:25:36.86
なんでこんなに時間かかってるんだろうな。
あまり人員割いてないのか難しいのか。
インテルもgccもC++11全体で見るとどんぐりの背比べだよな・・・
416デフォルトの名無しさん:2012/02/05(日) 16:27:43.79
いやー、この規模はそう簡単に実現できるものじゃないと思うけどな。
417デフォルトの名無しさん:2012/02/05(日) 16:45:17.73
下手したら言語処理系史上最悪の複雑さかもしれん
Common LispやAdaがオモチャに見える……というと言い過ぎだがw
418デフォルトの名無しさん:2012/02/05(日) 16:56:04.66
複雑だからプログラマーに仕事が生まれるっていう例のネタがさらに強度を増したな
419デフォルトの名無しさん:2012/02/05(日) 17:55:20.50
コンパイラの実装が複雑な分、言語のユーザーはその機能で楽ができるって
ことなのか?
420デフォルトの名無しさん:2012/02/05(日) 17:57:26.00
>>417
下手せんでも最悪。なんでこんな難解な言語にしたんだか。
421デフォルトの名無しさん:2012/02/05(日) 17:57:50.56
>>417
http://www.kmonos.net/wlog/83.html#_1721080322

CLはまだ遠いが、Adaは確実に追い越してるだろうな。
422デフォルトの名無しさん:2012/02/05(日) 17:58:14.83
>>419
楽できる機能は初期段階で挙動を把握しないといけないので、
それのコストがバカにならないとみんな嘆くのだ。
423デフォルトの名無しさん:2012/02/05(日) 18:32:23.21
>>421
その比較だとC#やJavaの方が上じゃん
424デフォルトの名無しさん:2012/02/05(日) 18:39:44.15
>>423
Javaはバイトコードの仕様まで入ってるからしゃーない。
425デフォルトの名無しさん:2012/02/05(日) 19:26:19.99
意外とC言語からものすごい膨れあがってるってわけでもないんだな。
426デフォルトの名無しさん:2012/02/05(日) 21:00:51.83
膨れ上がって入るけどg++が既に9割は実装してんだから
VC++もがんばれ
427デフォルトの名無しさん:2012/02/05(日) 21:24:54.21
VCはC++/CX実装で忙しい
428デフォルトの名無しさん:2012/02/05(日) 22:23:39.96
IDEもな
429デフォルトの名無しさん:2012/02/05(日) 22:31:35.61
C++03
Managed C++
C++/CLI
C++/CX
C++11
430デフォルトの名無しさん:2012/02/05(日) 23:43:27.22
C++11/CLI/CX
431デフォルトの名無しさん:2012/02/06(月) 00:35:50.60
>429
C++AMPも入るらしいよ
432デフォルトの名無しさん:2012/02/06(月) 01:14:54.43
Embedded C++ 「・・・呼んだ?」
Objective-C++ 「きちゃった・・・」
433デフォルトの名無しさん:2012/02/06(月) 07:14:49.82
Embeddedはカエレ!
434デフォルトの名無しさん:2012/02/06(月) 15:23:25.53
>>422
より少ないタイプ量からc++コードの自動生成が本来の目的だった
http://d.hatena.ne.jp/niitsuma/20120203
435デフォルトの名無しさん:2012/02/06(月) 18:29:33.44
>>431
AMPって何?メタプロをサポートした拡張とか?
436デフォルトの名無しさん:2012/02/06(月) 18:50:43.88
>>434
面白いなー。スキーム書けないけど。
このトランスコーダってどれくらい最適化してくれるんかねぇ。ベタ移植してくれるんかな??
437デフォルトの名無しさん:2012/02/06(月) 18:56:20.71
438SCHEME餃子 ◆8X2XSCHEME :2012/02/06(月) 19:47:56.65
>>434
Ver 0.6 の Not support の項にある define inside define ってのは Scheme 用語で言う internal define のこと?
これは Ver 0.7 では関数内でクラス宣言することでなんとかしたってことでいいのかな。
lambda が使えれば展開後の C++ コードがもうちょっと readable な感じに出来そうだね。
439デフォルトの名無しさん:2012/02/06(月) 21:16:39.35
>>433
Embeddedを甘く見るやつはEmbeddedに泣く
440デフォルトの名無しさん:2012/02/06(月) 21:44:48.56
甘くも何も失敗作には近づかないのが吉
441デフォルトの名無しさん:2012/02/06(月) 21:47:11.72
???
442デフォルトの名無しさん:2012/02/06(月) 22:39:11.63
>>436
ベタじゃないと読めない
443デフォルトの名無しさん:2012/02/06(月) 22:41:19.54
このスレでEmbedded C++がひどい失敗作だったことを知らない奴はいない
444デフォルトの名無しさん:2012/02/07(火) 01:09:50.40
標準化委員会に(といっても実質は禿)、名指しで無意味な糞って言われるくらいだからな。
445デフォルトの名無しさん:2012/02/07(火) 01:27:11.60
色々と肝心なものを削った結果、CともC++とも互換性失ったクソ言語だからな
446デフォルトの名無しさん:2012/02/07(火) 07:22:00.88
だって仕様が減るEmbeddedを加えようが無いじゃん!
447デフォルトの名無しさん:2012/02/07(火) 08:19:20.52
embeddedの言い訳がましさはすげぇよな。
どう見ても組み込み関係なく、
コンパイラ作れないんで、
これで許してちょだもんな
448デフォルトの名無しさん:2012/02/07(火) 09:13:34.09
ぶっちゃけ、これが入ってればまだマシだったて言うのはどういう仕様?
調べたらこの仕様決めてる奴らトップが日本人なのか。ソフト弱いってレベルじゃねーな
449デフォルトの名無しさん:2012/02/07(火) 10:00:31.57
例外はともかく、多重継承なしは意味が分からん。
ライブラリ全部自前で設計する必要あるじゃん。
C++のフル仕様のコンパイラ作るのが大変ってレベルで、
独自ライブラリを設計構築できる訳がない。
コンパイラの作成は努力の積み重ねで何とかなるが、
ライブラリの設計はセンスが要求される。
450デフォルトの名無しさん:2012/02/07(火) 11:36:26.54
やめて!Embeddedのライフはもう0よ(ry
451デフォルトの名無しさん:2012/02/07(火) 12:53:55.07
名前空間位言い訳せずにさっさと入れとけやと思った。
細かいとこはともかく、基本的なスコープはすぐ実装できたはずだ。
452デフォルトの名無しさん:2012/02/07(火) 13:48:07.02
仕様のシンプルさと吐出すバイナリのシンプルさに相関成り立たないしね
フルC++にコンパクト化修飾子追加する形にすればよかったのに
453デフォルトの名無しさん:2012/02/07(火) 19:49:07.09
テンプレートはまだしも、名前空間とか新形式キャストとか
実行時コスト0の機能まで考えなしに削ってるのが受ける
策定者は本当に馬鹿だったんだな
454デフォルトの名無しさん:2012/02/07(火) 23:58:26.31
日本発の言語なんだからRuby見たく盛り上げようよ!
455デフォルトの名無しさん:2012/02/08(水) 00:32:26.51
あんなもの、世に発表するのは、社会への害悪。消え失せい
456デフォルトの名無しさん:2012/02/08(水) 00:53:25.50
>>454
ISLISPの方がまし
457デフォルトの名無しさん:2012/02/08(水) 01:01:27.64
屍を動かそうとするのは愚か
458デフォルトの名無しさん:2012/02/08(水) 01:51:49.37
>>453
名前空間は別として、新形式キャストは一貫性を保つためなんじゃね?dynamic castに配慮というか
459デフォルトの名無しさん:2012/02/08(水) 03:14:26.02
何か生まれてきたことを土下座して誤らないといけないレベルの叩かれようだなw
460デフォルトの名無しさん:2012/02/08(水) 03:42:18.94
とりあえず門田浩と田丸喜一郎は絶対に許さない
461デフォルトの名無しさん:2012/02/08(水) 03:43:11.57
実際そのとおりだ。こいつのせいでクズコンパイラがバカ高い値段で売られることになり、
手を染めたコンパイラのその後の進歩(ISO仕様での実装しなおしなど)も遅れることになった。
462デフォルトの名無しさん:2012/02/08(水) 07:26:43.51
叩き所がわかりやすい言語は
叩きやすくて良いよね
463デフォルトの名無しさん:2012/02/08(水) 08:40:06.30
引き算するだけの言語設計も簡単だしね。
464デフォルトの名無しさん:2012/02/08(水) 16:52:51.73
日本産のまともな言語ってRubyくらい?
なんか悲しいね。
465デフォルトの名無しさん:2012/02/08(水) 16:57:19.67
プログラミング言語が諸子百家みたいに乱立する戦国時代よりマシだろ。
466デフォルトの名無しさん:2012/02/08(水) 20:28:32.70
>>465
むしろその方がいいかと
467デフォルトの名無しさん:2012/02/08(水) 20:51:58.72
多少書き方が似てるだけで、既に乱立状態だろ。
案外、百種類位余裕で揃えられそうだ。
468デフォルトの名無しさん:2012/02/08(水) 20:57:26.58
C#のプログラムをJava ILにコンパイルするコンパイラとかないの?
469デフォルトの名無しさん:2012/02/08(水) 22:47:26.09
>>468
Antlrの文法一覧にあったかもしれない
470デフォルトの名無しさん:2012/02/08(水) 22:49:06.90
>>464
AnthyといいTuro Linuxといい
日本産のものを過剰に叩き過ぎだよなあ

iphoneがアニメキャラ名を一発変換→すげえ
anthyeがアニメキャラ名を一発変換→きもい
471デフォルトの名無しさん:2012/02/08(水) 23:12:14.35
そのコピペ流行ってんの?
472デフォルトの名無しさん:2012/02/09(木) 00:17:40.93
da yo ne
473デフォルトの名無しさん:2012/02/09(木) 00:40:15.47
Anthyと並べるならTOMOYO Linuxだろjk
474デフォルトの名無しさん:2012/02/09(木) 02:57:53.68
SELinuxでいいよね
あれ何のために存在してるの
475デフォルトの名無しさん:2012/02/09(木) 03:03:14.44
(資金や労働を調達して)自分好みの環境を作れるヤツの贅沢な(企画厨的な)遊び
476デフォルトの名無しさん:2012/02/10(金) 00:36:46.40
C++11のSTL拡張についてまだよく知らないんだけど、もうBoostが必要ないって
くらいにはなったの?
477デフォルトの名無しさん:2012/02/10(金) 00:40:18.83
std::progress_display
478デフォルトの名無しさん:2012/02/10(金) 01:24:31.04
>>477
ぷろぐれすでぃすぷれいたんはもう…ぶーすとにもいないんだ……・
479デフォルトの名無しさん:2012/02/10(金) 11:37:31.73
彼女はね転校しちゃったんだ
480デフォルトの名無しさん:2012/02/10(金) 12:22:31.45
std::egg
std::oven
481デフォルトの名無しさん:2012/02/10(金) 19:12:38.34
std::even
std::odd
はまだですか
482デフォルトの名無しさん:2012/02/12(日) 00:55:49.22
std::nullpo はまだですか
483デフォルトの名無しさん:2012/02/12(日) 02:50:22.28

\\
\\\
\  ∧_∧
   ( ´・ω・)
   G   と) ガッ >>482
    ヽ⌒)、 \人∧__∧
      ̄ (_) >`д´)')
         ∨つ   /
484デフォルトの名無しさん:2012/02/12(日) 10:00:33.29
namespace fucking_std {
const struct {
template<typename T>
operator T() const { return nullptr; }
} nullpo;
}
485デフォルトの名無しさん:2012/02/12(日) 13:03:51.86
#define fucking_std std
486デフォルトの名無しさん:2012/02/12(日) 13:24:32.60
find . -print | xargs grep -l nullpo >rm
487デフォルトの名無しさん:2012/02/12(日) 13:32:40.91
ガッ
488デフォルトの名無しさん:2012/02/13(月) 12:16:30.65
T&& 型の変数と、T&& 型へのキャストを使わずに
T 型の変数または、T& 型の変数を使って
decltype で T&& を生成する方法はありますか?

T a;
typedef decltype((a)) TT;
とやると T& になるように。
489デフォルトの名無しさん:2012/02/13(月) 12:28:51.30
>>488
意味が分からない
490デフォルトの名無しさん:2012/02/13(月) 12:39:03.13
>>488
C++言語の前に日本語の勉強をしたほうがいいんじゃないか?
エスパーで答えるとこうだな。

using type = std::add_rvalue_reference<decltype(a)>::type ;
491デフォルトの名無しさん:2012/02/13(月) 12:55:11.32
最終的な目標はT&が欲しいのかT&&が欲しいのか
492デフォルトの名無しさん:2012/02/13(月) 17:10:05.08
T&&が作りたいのですが、T&&という記述ができない前提なのです。
なので、add_rvalue_referenceは内部でT&&になっているので、使えません。
decltype内部でT&&を生成する必用があります。
decltypeで出てきたTに&&を付けるのも不可です。
493デフォルトの名無しさん:2012/02/13(月) 17:19:28.94
decltype(std::declval<std::remove_reference<decltype(a)>::type>())
494デフォルトの名無しさん:2012/02/13(月) 17:19:39.35
そうですか。
495デフォルトの名無しさん:2012/02/13(月) 17:41:33.91
何がしたいのかサッパリわからん
496デフォルトの名無しさん:2012/02/14(火) 08:29:44.88
すいません、具体的に申し上げますと
T = char[]なのです。

VC2010にバグがあるらしく、
T& と T&& という記述ができないのです。

ですが、
extern char a[];
decltype((a)) とすると char(&)[]
という型ができたので、
同じような方法で char(&&)[] を作る方法を
模索しているのです。

declval も add_rvalue_reference を内部で使っているので
使えませんでした。
497デフォルトの名無しさん:2012/02/14(火) 09:47:46.35
char (&&)[n] はそう書けば普通に作れると思うが…。
どの変数も受け取れないというバグがあるだけで。
498デフォルトの名無しさん:2012/02/14(火) 11:13:01.18
配列は右辺値にならない。
499デフォルトの名無しさん:2012/02/14(火) 11:21:37.89
ああ、VC10か。
そりゃどうしようもないわ。
窓から投げ捨てろ。
500デフォルトの名無しさん:2012/02/14(火) 13:38:48.81
あれ、配列って右辺値にならないんですか?
それなら作る必用ないかな…

ちなみに作りたかったのはchar(&&)[n]ではなく
char(&&)[]またはchar(&&)[0]です。
501デフォルトの名無しさん:2012/02/14(火) 14:00:32.04
配列のprvalueはあるし(クラスのサブオブジェクトという形でしか存在しないと思うが)、配列のrvalue referenceもある。
MSVCがタコなだけだ。
502デフォルトの名無しさん:2012/02/15(水) 09:05:30.95
なるほど、メンバなら右辺値参照もあり得るのですね。
struct A{
char b[];
} a;
A &&b = (A&&)a;
typedef decltype(b) C;
typedef decltype(b.b) D;
とやると、CはA&&になりましたが、
Dはchar(&&)[]にはならずchar[]でした。
なんとかここからchar(&&)[]を取り出す方法がないでしょうか?
この挙動もVC2010がおかしいだけ?
503デフォルトの名無しさん:2012/02/15(水) 09:46:22.42
おかしいだけ
504デフォルトの名無しさん:2012/02/15(水) 10:20:36.09
もう一つ言うなら、C++ には C と異なり長さ 0 の配列が存在しないので
「長さ不明の配列への参照」ではなく「長さ0の配列への参照」を作ろうとしているなら
それはそもそも規格違反。
505デフォルトの名無しさん:2012/02/15(水) 12:06:31.65
vcでは>>502の a.a と>>496の a は同じ型と見なされているようです。
vcの規格違反である>>502の a.a のような長さ0の配列の入力に対応するのは不毛なのですが
>>496の a のような長さ不明の配列への対応は必用と考えてやっています。
506デフォルトの名無しさん:2012/02/15(水) 18:32:27.19
もう諦めてvector<char>&&を使ったらいかがでしょうか
507デフォルトの名無しさん:2012/02/15(水) 21:12:28.96
タコなのはCの配列だったんだお
508デフォルトの名無しさん:2012/02/16(木) 00:52:36.85
CUDAがEmbedded以上にウンコな件
削りすぎだろ
509デフォルトの名無しさん:2012/02/16(木) 01:44:59.19
C++から削ったわけじゃなくてCからの拡張だからセーフ
510デフォルトの名無しさん:2012/02/16(木) 06:08:43.92
http://forums.appleinsider.com/showthread.php?t=139011
CUDAがllvmになってC++11も動く?
本当?
511デフォルトの名無しさん:2012/02/16(木) 06:43:09.23
clang –x=CUDA
なんてできるのか。驚き
http://stackoverflow.com/questions/9117109/how-to-compile-cuda-to-llvm-ir
512デフォルトの名無しさん:2012/02/16(木) 08:45:46.85
最近のLLVMにはPTXバックエンドがあって、このPTXを
CUDAドライバに渡すとデバイスで動くバイナリに変換される
C++11が動くのかどうかは知らんが、ランタイムや構文
(構文を直接組み込まずとも、対応する機能があれば良い)を解決すれば動くかもしれん
ただ、何も修正しなくてもPTXにコンパイルすればGPUで並列化、ってことは流石にないだろう
513デフォルトの名無しさん:2012/02/16(木) 18:25:51.13
CUDAに限らずGPU computingは、
CPUがメインで動くのが前提の計算モデルです。(ほんのごく一部の変態は除く)
並列化出来るところだけGPUに計算させる。
CUDAでは並列化を阻害するようなコードは書きにくいようにC/C++を制限している。
514デフォルトの名無しさん:2012/02/16(木) 20:30:58.19
clang++ -emit-llvm でllvmコードはかせて
CUDAに流し込んだらだめなの?
515デフォルトの名無しさん:2012/02/16(木) 21:31:04.86
開発環境に流しこんでどうするんですか?
516デフォルトの名無しさん:2012/02/16(木) 22:25:47.18
何の前触れもなくいきなりCUDAの話をし始めたこの人は一体何者なのだろう
517デフォルトの名無しさん:2012/02/16(木) 22:26:10.49
BOINC狂だろきっと
518デフォルトの名無しさん:2012/02/17(金) 06:20:23.39
CUDAスレに移動します。CUDAでC++11使えるなら使いたかった
519デフォルトの名無しさん:2012/02/18(土) 00:35:54.72
>>516
Embbeded C++へのネガキャンがnvidiaを売るためのステマだったから
520デフォルトの名無しさん:2012/02/18(土) 00:48:14.11
それは斜めすぎるだろ
ステマ言いたいだけちゃうんかと
521デフォルトの名無しさん:2012/02/22(水) 01:12:29.67
というか、ステルスマーケティングと言え
522デフォルトの名無しさん:2012/02/22(水) 01:15:17.67
いちいち横文字にせんでもサクラでいいだろ
523デフォルトの名無しさん:2012/02/22(水) 09:23:29.51
だいたい並行プログラミングを自動でやろうという性根が卑しいんだお
524デフォルトの名無しさん:2012/02/22(水) 19:25:57.34
それでも、C++11のconcurrencyなら、何とかしてくれる!
525デフォルトの名無しさん:2012/02/22(水) 19:41:04.79
C言語初心者ですが質問させてください。
conceptさんはいつ載るんですか?
526デフォルトの名無しさん:2012/02/22(水) 19:52:16.23
コンセプトさんはお星様になったのさ
527デフォルトの名無しさん:2012/02/24(金) 22:47:23.57
外からアルティミシアが入って来れないようにしてんだよ言わせんな
528デフォルトの名無しさん:2012/02/26(日) 17:11:20.16
右辺値参照うけとるコンストラクタと代入って自動生成されますか?
529デフォルトの名無しさん:2012/02/26(日) 17:18:12.82
されない
530デフォルトの名無しさん:2012/02/26(日) 17:41:53.40
アザっす
531デフォルトの名無しさん:2012/02/26(日) 18:35:20.01
コピーコンストラクターとコピー代入演算子も、
ユーザー定義のムーブコンストラクターとムーブ代入演算子、
コピーコンストラクターの場合はユーザー定義のコピー代入演算子、
コピー代入演算子の場合はユーザー定義のコピーコンストラクターが存在する場合、
暗黙に宣言はされるけど、その挙動はobsoleteだからな。
気を付けろよ。
将来廃止されるかもしれないぞ。
532デフォルトの名無しさん:2012/02/26(日) 23:07:17.37
>>531
日本語版で書いてくれ
533デフォルトの名無しさん:2012/02/27(月) 01:02:00.15
C++ で書いてくれ
534デフォルトの名無しさん:2012/02/28(火) 01:13:44.37
むしろperlで書いてくれ
535デフォルトの名無しさん:2012/03/01(木) 00:46:07.52
VC++11がVC++10(2010)とは一体何だったのかってぐらい規格合致度上げてきている件
536デフォルトの名無しさん:2012/03/01(木) 00:53:43.37
beta 出たみたいだけどどうなの?
537デフォルトの名無しさん:2012/03/01(木) 02:31:36.31
可変引数テンプレートいそげよ!
538デフォルトの名無しさん:2012/03/01(木) 07:40:02.46
この惨憺たる状態から向上してんの?
ttp://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
539デフォルトの名無しさん:2012/03/01(木) 07:41:33.56
GCCやClangも機能一覧のNoが減ってきたね
並行性はどちらもまだNoが多いけど
540デフォルトの名無しさん:2012/03/01(木) 07:56:56.44
iccはlambdaは早かったけどその後が全然だな
gcc/icc/vcで通るコードを書かないといけないからiccに足を引っ張られてる
541デフォルトの名無しさん:2012/03/01(木) 10:32:15.05
コンパイラの開発が落ち着くまで03でいいじゃん
542デフォルトの名無しさん:2012/03/01(木) 11:50:07.85
543デフォルトの名無しさん:2012/03/01(木) 12:21:44.79
遂にM$が本気を出してきたのか…
544デフォルトの名無しさん:2012/03/01(木) 12:28:42.10
今までもいろいろな分野で戦いがあったが
最後に立っているのはいつだってM$だった
これからもそうなるだろう
そうWindowsPhoneもね
545デフォルトの名無しさん:2012/03/01(木) 13:02:28.42
>>542
Variadic Templatesないじゃん。
単なるプリプロセッサーメタプログラミングじゃん。
546デフォルトの名無しさん:2012/03/01(木) 13:39:02.94
MINGWがどこまで実装できたかの表はありませんか?
547デフォルトの名無しさん:2012/03/01(木) 13:44:30.96
表はなくても裏がある
548デフォルトの名無しさん:2012/03/01(木) 13:47:03.99
>>546
禿Webに書いてあるGCCの状況と
MinGWの現バージョンから導ける
549デフォルトの名無しさん:2012/03/01(木) 13:52:54.25
ハゲwebってなんですか?
550デフォルトの名無しさん:2012/03/01(木) 13:59:37.90
アデランスだよ
551デフォルトの名無しさん:2012/03/01(木) 14:05:33.17
アートネイチャーでは手に負えなかったか
552デフォルトの名無しさん:2012/03/01(木) 14:07:38.52
面白いと思って言ってるの?
553デフォルトの名無しさん:2012/03/01(木) 14:08:18.55
笑わそうと思って書いてると思ってんの?
554デフォルトの名無しさん:2012/03/01(木) 14:18:15.32
なんで質問を質問で返すの?
555デフォルトの名無しさん:2012/03/01(木) 14:20:54.40
質問で返しちゃいけないなんてルールあるんですか?
556デフォルトの名無しさん:2012/03/01(木) 14:27:41.61
それに答えるには余白が足りない
557デフォルトの名無しさん:2012/03/01(木) 14:33:03.07
ここはお前の日記帳じゃねえんだコミットログにでも書いとけ、な
558デフォルトの名無しさん:2012/03/01(木) 14:35:33.88
そっくりそのまま返したるわぼけ
559デフォルトの名無しさん:2012/03/01(木) 15:27:25.54

 }
560デフォルトの名無しさん:2012/03/01(木) 16:42:17.38
忘れないように橋に書き留めといた。
561デフォルトの名無しさん:2012/03/01(木) 20:02:38.86


562デフォルトの名無しさん:2012/03/02(金) 00:07:23.09
最近じゃARMCCが大事なんだぜ

あのコンパイラはロクなもんじゃないが
563デフォルトの名無しさん:2012/03/02(金) 05:47:37.33
ガベージコレクタをC++に実装するか公式で議論が行われてるのはマジか?
mallocかnewが自作できれば、いらないような気もするのだが。
564デフォルトの名無しさん:2012/03/02(金) 06:08:18.67
機構的には単なるスマポのシンタックスシュガーじゃね?
コンパイラによる最適化の余地が増える分だけ得って気はしなくもない
565デフォルトの名無しさん:2012/03/02(金) 07:31:35.40
FAQを見る限りでは、C++11にはポインタが指す領域がGC用語で言う「到達可能(reachable、簡単に言えばオブジェクトが「生きている」という意味)」である事を明示的に宣言したり
ある領域にポインタがない事を宣言したりする機能が入ってるな

到達可能性の宣言はFAQに必要性が書かれてるから読めばわかる
二つ目はガベージコレクタには数値とポインタの区別がつかないから起こる
実際には到達可能でないオブジェクトを到達可能だと誤検出する(つまりリークする)事を防ぐための機能

俺の知る限り、C++のポインタは勝手にアドレスを変えたりできないから
C++のGC ABIではnon-movingなGCだけが実装できるはず
566デフォルトの名無しさん:2012/03/02(金) 08:20:09.29
相互参照に対応出来るのかな?

スタックや非マネージドな構造体のメンバに置いたら原理的に
アドホックな対応しか出来なくなるから
C++/CLIのような感じになるのかな

と思ったけど
http://www32.ocn.ne.jp/~ons/text/CPP0xFAQ.html.ja#gc-abi
アドホックっぽい気がす
567デフォルトの名無しさん:2012/03/02(金) 14:40:58.40
今回の規格ではライブラリ上でGCを実装できるように
最低限のことを決めたんですよ。メモリモデルとか。
568デフォルトの名無しさん:2012/03/02(金) 14:54:27.79
メモリモデルについては決めたは決めたが正直これどーすんだよ的な気が
明示的な修飾したものだけマネージドにする割り切りがないとまたグダグダになりそう
569デフォルトの名無しさん:2012/03/02(金) 15:28:38.63
strict GCのターゲットはC++でランタイムライブラリ書くような場合です。JVMとか。
C++のnative objectを対象にするのは相当先です。そっちは今のところコンサバのみ。
570デフォルトの名無しさん:2012/03/02(金) 17:11:30.31
またゼロオーバーヘッドがないがしろにされる悪寒
571デフォルトの名無しさん:2012/03/02(金) 18:08:43.90
別に将来GC必須になるって話じゃないよ

>>569
(un)declare_no_pointersはexact GCを実現するための機能じゃない?
もちろん、何もせずにexact GCになるわけじゃないから
現実的にはconservative GCにせざるをえないけど
572デフォルトの名無しさん:2012/03/02(金) 23:28:23.44
次はもっとこの関数型のパラダイムをふんだんに盛り込んで欲しいな
573デフォルトの名無しさん:2012/03/02(金) 23:39:10.33
http://www.open-std.org/jtc1/sc22/wg21/
News 2012-03-02: The deadline for the next mailing is 2012-09-21
News 2012-03-02: The 2012-02 post-Kona mailing is available
News 2012-03-02: The C++ Standard Library Issues List (Revision 78) is available
News 2012-03-02: The C++ Standard Core Language Issues List (Revision 79) is available
574デフォルトの名無しさん:2012/03/03(土) 09:57:33.79
メモリーモデル決めたのは、言語仕様内でプログラム作っても、並列処理のメモリー制約が不定になるからじゃないの?
575デフォルトの名無しさん:2012/03/03(土) 16:10:12.22
GCも込みだよ。papersに出てるし、ハゲもコメントしてる。
576デフォルトの名無しさん:2012/03/03(土) 20:32:19.81
未だにテンプレートの定義ってヘッダに書かなきゃいけない処理系が
ほとんどなの?
577デフォルトの名無しさん:2012/03/03(土) 20:34:08.51
むしろexportは廃止された

でも1翻訳単位内でのみ使うなら
別にヘッダで書く必要性はないで
578デフォルトの名無しさん:2012/03/03(土) 20:38:25.21
あ、廃止されたんだ。
じゃあC++11でも依然として、複数の翻訳単位で使用するには
ヘッダに定義書かなきゃいけないのか。
なんでそうなったんだろ。コンパイラに実装するのが難しかったのかな?
579デフォルトの名無しさん:2012/03/03(土) 20:57:14.15
複数の翻訳単位で使う場合もコピペすれば(ry

exportはオブジェクトファイル側に手を入れないと実現不可能だよね
580はちみつ餃子 ◆8X2XSCHEME :2012/03/03(土) 21:17:31.75
マクロの高機能版だと思えば自然な制約。
581デフォルトの名無しさん:2012/03/03(土) 22:40:36.07
コンパイル時に展開しないといけないから。
意図してこうなった。実行時オーバーヘッドを許容しない設計だから。
582デフォルトの名無しさん:2012/03/03(土) 22:51:43.15
LTOとかやってるんだから同じ要領でexportもできるはずなんだけどな
583デフォルトの名無しさん:2012/03/03(土) 22:55:11.30
実装者が出来ることだけやればいいのが最適化。
584デフォルトの名無しさん:2012/03/04(日) 16:15:06.01
extern templateもなぁ
585デフォルトの名無しさん:2012/03/05(月) 03:03:01.74
通常関数宣言にも可変引数使えれば良かったのにな。
586デフォルトの名無しさん:2012/03/05(月) 10:52:22.84
ん?
587デフォルトの名無しさん:2012/03/05(月) 18:00:32.38
使えるだろ
printfって関数をご存じない?
588デフォルトの名無しさん:2012/03/05(月) 18:05:42.17
文字列に変数を展開するだけじゃ自由度少ないだろ。
589デフォルトの名無しさん:2012/03/05(月) 18:07:39.94
何いってんのこいつ?
590デフォルトの名無しさん:2012/03/05(月) 18:13:12.38
ご存じないならstdarg.hでぐぐれ
591デフォルトの名無しさん:2012/03/05(月) 18:31:08.68
独立参照利用すれば、可変引数みたいなのは表現できない?
592デフォルトの名無しさん:2012/03/05(月) 18:40:23.40
一瞬、何のスレだったかとスレタイ見直してしまった
たまたまアホばかりいるだけか、あーびっくりした
593デフォルトの名無しさん:2012/03/05(月) 19:02:36.82
きめぇ構文使おうぜ
それっぽく見えるだろ

struct bb{
  bb & bb::operator , (int i){std::cout<<i; return *this;}
  bb & bb::operator , (const std::string& s){std::cout<<s; return *this;}

  bb & bb::operator () (int i){std::cout<<i; return *this;}
  bb & bb::operator () (const std::string& s){std::cout<<s; return *this;}
};
bb aa(){ return bb(); }
void f(){
  aa(), "aa", 0;
  aa()("aa")(0);
}
594デフォルトの名無しさん:2012/03/05(月) 19:08:32.78
おぞましいな
595デフォルトの名無しさん:2012/03/05(月) 21:15:08.62
無駄にカンマ演算子多用する輩は逝ってよし
596デフォルトの名無しさん:2012/03/05(月) 21:59:11.39
タイプセーフな可変長引数が使えたらいいねって話かと思ってたら>>588でビビった
597デフォルトの名無しさん:2012/03/06(火) 02:53:36.28
Cの可変引数でいいなら、ポインタの型は全部void*でいいな。
598デフォルトの名無しさん:2012/03/06(火) 11:39:41.36
可変で静的型安全にやりたければ、引数可変部は同じ型じゃないと仕方ないな。
599デフォルトの名無しさん:2012/03/06(火) 13:46:19.56
現状だとiostreamやboost::formatみたいに
演算子をチェーンさせるのが現実的なのでは
600デフォルトの名無しさん:2012/03/06(火) 14:02:34.58
オペレーターで連結するのは見た目がキモいのに加えてオーバーヘッドもあるしなぁ

601はちみつ餃子 ◆8X2XSCHEME :2012/03/06(火) 14:24:24.19
オーバーロードできる演算子の種類が限られてるから、演算子の既存の意味と全く違う意味で使うことになるわけじゃん?
boost::format が % を使うのは iostream と組み合わせるときの演算子の優先順位を考慮したんだろうというのはわかるけど、
泥臭い方法だという感覚は否めないわな。
iostream の << はもうあんまり違和感ないから単なる慣れなんかな?
602デフォルトの名無しさん:2012/03/06(火) 15:57:04.28
>>600
srdargに比べてどこがオーバーヘッド大きいですか?
603デフォルトの名無しさん:2012/03/06(火) 16:03:20.05
>>602
それと比較してるのは今このスレで君だけだから帰っていいよ
604デフォルトの名無しさん:2012/03/06(火) 16:11:06.07
>>585のバカ話はとっくに終わってます。
605デフォルトの名無しさん:2012/03/06(火) 16:18:15.19
ということにしたいのですね。:)
606デフォルトの名無しさん:2012/03/06(火) 17:54:11.42
よく分かってないんだけど
initializer_list使ってそれっぽくできないかな?
607デフォルトの名無しさん:2012/03/06(火) 18:56:00.43
確かにinitializer_listが一番近そう
http://ideone.com/5P9Pa

もうちょっと構文糖衣して欲しい気もするけど
void f(const char* s, std::initializer_list<T> ls){
void f(const char* s, T... ls){

f("aaa", {10, 20, 30});
f("aaa", 10, 20, 30);
608デフォルトの名無しさん:2012/03/06(火) 22:11:24.65
>>600
パフォーマンスに関しては、処理系にもよるけどインライン展開で消滅するから寧ろパフォーマンスは上がるじゃん。
まぁiostreamは遅いけど、あれはバッファの連携のせいだし。

話は変わるけど、Futureの例外送信機能ってどうやって実装されるんだ?
Worker側で一旦例外捕まえて、Worker作成側が、例外受け取るまで
一旦何処かにコピーしなきゃならないだろ。専用の例外しか投げれないとかか?
609デフォルトの名無しさん:2012/03/06(火) 23:23:32.73
>>608 exception_ptr というものがあってな。
610デフォルトの名無しさん:2012/03/06(火) 23:29:25.16
>>593
勉強になります
611デフォルトの名無しさん:2012/03/07(水) 00:12:46.25
>>609
ありがとう。調べた。なんかランタイム情報取り出してる所が
typeinfo見たいで気持ち悪いな。素直にthread_exceptionとかでも定義して
その子クラスだけ返せるようにしたほうが良かったな。
どうせWorker中で他の例外に変換できなかった例外は
Workerの呼び出し元でも無視されるんだし。
612デフォルトの名無しさん:2012/03/07(水) 01:25:24.06
>>611
それ何がうれしいの?

スレッドまたがせるためだけに原因と関係ない型を継承させる(カテゴリを作る)とか、
ありえないと思うんだけど。
613デフォルトの名無しさん:2012/03/07(水) 01:47:43.79
>>612
スレッドの中で原因は完結させればいいじゃん。
最終的な答えを別の例外に委譲するだけ。

あと、スレッドを停止させた以上、スレッドは役割を
達成できなかったって例外カテゴリーに書き換えるから
どのみち同じだと思う。
例えば範囲外エラーを例外で捕まえたくなったら、
結局out_range_errorじゃなくてOnOutRangeThreadStopErrorみたいな
例外に書き換えるわけだし。
614デフォルトの名無しさん:2012/03/07(水) 01:50:59.53
>>613
いや、だからそのカテゴリわけすると何がうれしいの?わけないといけないものなの?

別スレッドで実行するか元スレッドで実行するかなんて実装の詳細の一部になりうるんだから、
そんなのしたくないんだけど。
615デフォルトの名無しさん:2012/03/07(水) 01:52:03.03
ほかのスレッドの例外と自分の例外の区別つかない方がずっとまずい。
そしてC++は言語には最低限の機能だけ付けて、ライブラリで実装する主義。
616デフォルトの名無しさん:2012/03/07(水) 01:59:10.04
>>614
カテゴリっつうかスレッドのコンテキスト情報を添える事になるからねぇ
どういう状況かで例外処理を切り分けなきゃいけないじゃん
特にI/Oとか失敗したら、アドレスとか一部情報を書き換えて
再試行するって事もあって、再試行に必要なコンテキスト情報は送ってもらいたいよね
617デフォルトの名無しさん:2012/03/07(水) 02:01:13.41
アドレスってのは送信先アドレスの事ね
別にI/O全般を例にしたからファイル名でもいいけど
618デフォルトの名無しさん:2012/03/07(水) 02:30:58.64
>>616
その例で必要なのはI/Oエラーかどうかであって
thread_exceptionなんて分類は役に立たんだろ?
619デフォルトの名無しさん:2012/03/07(水) 20:09:13.71
>>618
スレッド間受け渡しの実装のために継承しちゃいかんのか?
分類のため以外で継承しちゃいかんのか?
620デフォルトの名無しさん:2012/03/07(水) 20:53:57.29
thread_exceptionを新設するのが素直な解決法にも思えないし
「Worker中で他の例外に変換できなかった例外はWorkerの呼び出し元でも無視される」というのが常に成り立つ確信もないんだが
こういう設計になってる言語があって、その言語を学べば分かったりするんだろうか?
621デフォルトの名無しさん:2012/03/07(水) 21:20:12.05
Javaのconcurrencyで見たことあるな
622デフォルトの名無しさん:2012/03/07(水) 22:14:02.82
スレッドでWorkerとか言い出す頭固い奴は嫌いだ
623デフォルトの名無しさん:2012/03/07(水) 22:26:07.08
>>619
分類以外にその継承の目的があるならそれを挙げろ。
繰り返し聞かれてるのに何も挙げられてないじゃないか。
無意味な継承を強制することが受け入れられないのは当然。
624デフォルトの名無しさん:2012/03/07(水) 22:48:07.87
>>623
TLSに一旦例外オブジェクトの実体をコピーし、
呼び出しもとスレッドの例外情報取得用領域にコピーするため。
この時、TLSに領域を確保するため例外オブジェクトの実体のサイズが
必要になったるんで、そのサイズ取得を定義する。
あと、例外送信元のスレッドIDやらスレッド関数の情報を積ませる。
625デフォルトの名無しさん:2012/03/07(水) 23:39:54.60
>>624
それって今の仕組みの上にアプリケーションが必要に応じて組めばいいことじゃないの?
それともほんとに標準がそこまでやるべきだと思ってるの?だとしたらなぜ?
626デフォルトの名無しさん:2012/03/07(水) 23:52:01.30
>>625
std::iostreamやらstd::string、std::vector、std::exception。
どれもユーザーが自前で実装しようと思えば出来るじゃん。

そんな事はどうでもいいんだけど、type_infoみたいに
ランタイム情報にべったりってのが嫌なの。
処理系に問題がある場合、自前のライブラリで
一部差し替えて互換性をとるとかしづらくなる。
627デフォルトの名無しさん:2012/03/08(木) 00:30:35.19
実装できるかどうかなんて誰も聞いてないだろ。
「ランタイム情報」も何を指してるのかわかんないし。
コンパイラ実装依存の情報ってことなら継承もダメだよなぁ。
628デフォルトの名無しさん:2012/03/08(木) 00:41:45.75
>>627
ランタイムってのは言葉端折ったけど、
ランタイムライブラリのことね。実行ファイルの中に
埋め込んだメタ情報やアセンブリレベルで
組み込まれた情報に依存してる訳じゃん。
継承とか目で見りゃ解るC++の構文上の互換性とは別の話よ。
629デフォルトの名無しさん:2012/03/08(木) 00:59:56.34
ランタイム関係のトラブルについて具体的な例を書いておこう。
今回の例外とは関係無い話だけど、例外機構ってのはランタイム
ライブラリにべったり依存してる。昔流行ったBCC5.5なんてコンパイラじゃ
例外処理が正しく動作しなかった。言語構文上だけで解決できれば
自前でそれをカバーするコードを書けばよかったがランタイムライブラリの
中に絡み混んでるせいでマトモに手の出しようがなかった。

例外に限らずこういう事がVCやらGCCでもあった時期があったんで、
出来る限り、ランタイムライブラリに依存しない方向で言語機能を
実現してほしいなぁと思うんだよ。あと組み込み屋も大変だろうしね。
630デフォルトの名無しさん:2012/03/08(木) 01:02:39.61
左様であるか
631デフォルトの名無しさん:2012/03/08(木) 01:07:37.30
お粗末さまです。
632デフォルトの名無しさん:2012/03/08(木) 01:25:33.14
正直どうでもいいな。話が噛み合わんわけだ。
633デフォルトの名無しさん:2012/03/08(木) 02:03:40.78
>>629
ほんとにどうでもいい
634デフォルトの名無しさん:2012/03/08(木) 07:17:48.95
vtableのアドレスを自前で列挙して比較すればいいよ
635デフォルトの名無しさん:2012/03/08(木) 10:55:29.38
利便性のため標準的なスレッド補足情報を持つ
thread_exception的なものがあるのは良いけど
それしか返せないようにする必要は無いと思う
636デフォルトの名無しさん:2012/03/08(木) 12:26:50.51
あほらし
637デフォルトの名無しさん:2012/03/08(木) 12:34:08.63
>>630 >>631 >>632 >>633 >>636
具体的なことが書けないゴミはレスしない方がいいよ^^
638デフォルトの名無しさん:2012/03/08(木) 13:53:52.09
糞処理系乙
639デフォルトの名無しさん:2012/03/08(木) 19:57:58.45
そうだそうだ今時VCなんて時代遅れな糞処理系
つかってるヤツは情弱にも程がある。
640デフォルトの名無しさん:2012/03/08(木) 20:31:29.36
A と B の値から C を設定・取得する場合に

std::map<std::pair<A, B>, C>
std::map<std::map<A, B>, C>

どっちでやるのがエレガントですか
641デフォルトの名無しさん:2012/03/08(木) 20:33:30.22
このスレで聞くな
642デフォルトの名無しさん:2012/03/08(木) 20:41:53.46
よく考えたら std::map<A, std::map<B,C>> こうだね
boost::assign的なチート級の技も踏まえたらこのスレに辿り着いてしまったのよ
堅いこと言わずに教えてくり
643デフォルトの名無しさん:2012/03/08(木) 20:55:20.90
>>640
下はあり得ない
上か>>642だろうけど
ぶっちゃけどう比較するかじゃね
644デフォルトの名無しさん:2012/03/08(木) 21:04:11.68
pairのほうはメモリ効率悪いからmapのmapかな
検索効率は偏りによるけどあんまかわらんだろう
645デフォルトの名無しさん:2012/03/08(木) 21:42:38.78
>>644
|A|>>|B|だとmapの数が増えることのほうが問題になりそう。
pairよりもmapの方がメモリ効率が悪いから。
646デフォルトの名無しさん:2012/03/08(木) 22:00:18.58
>>639
VCが何に使われているか実例を1つも知らないメタ情弱さん、ご機嫌麗しゅう
647デフォルトの名無しさん:2012/03/08(木) 22:05:17.36
ランダムアクセスが前提ならmapのmapのほうが効率良くないか?
648デフォルトの名無しさん:2012/03/08(木) 22:11:25.85
何の効率か言わないと。
649デフォルトの名無しさん:2012/03/08(木) 22:12:31.43
正直、今時のCPUだったらどっち使っても大差ないでしょ
感覚的にはmap["key"][item]とかでアクセスできるからmapがいいんじゃないかなw
650デフォルトの名無しさん:2012/03/08(木) 22:17:16.55
using std::make_pair;
A a; B b; C c;
_map[make_pair(a, b)] = c;
_map[a][b] = c;

こんな感じかな
後は気分の問題だと思うよw
651デフォルトの名無しさん:2012/03/08(木) 22:37:50.43
mapのmapは列挙は面倒だな
652デフォルトの名無しさん:2012/03/08(木) 23:57:32.90
みんなありがと
使い回す事を考えると後々mapのほうがやりやすそうだと思えたので
map の map を使うことにします
653デフォルトの名無しさん:2012/03/09(金) 00:13:36.49
boostに多次元mapなかったっけ。勘違いか。
654デフォルトの名無しさん:2012/03/09(金) 00:15:29.30
地図?
655デフォルトの名無しさん:2012/03/09(金) 00:33:27.92
google mapを使えば楽だよ
656デフォルトの名無しさん:2012/03/09(金) 00:50:48.85
google earthじゃなきゃ嫌だね
657デフォルトの名無しさん:2012/03/09(金) 00:54:03.36
異次元のマップにアクセスするにはどうすればいいですか
ドラえもんみたいに色々な世界を旅したいです><
658デフォルトの名無しさん:2012/03/09(金) 00:55:03.11
次のC++の企画は開発されていますか?
659デフォルトの名無しさん:2012/03/09(金) 01:01:51.77
C++1y
660デフォルトの名無しさん:2012/03/09(金) 01:05:36.53
>>657
未定義動作のコード書いて運がよければ行けるよ
661デフォルトの名無しさん:2012/03/09(金) 01:08:05.66
>>660
それってコンピューターが悲鳴上げてるだけじゃないですか
私 が 異 次 元 に 行 き た い ん で す !!
662デフォルトの名無しさん:2012/03/09(金) 01:08:40.62
>>661
お前も行けるって
頑張れ
663デフォルトの名無しさん:2012/03/09(金) 01:13:02.76
>>662
だからどうやって行くんですか!
以前だってlsコマンドの代わりにslと打ち間違えた時にせっかくお迎えが来たっていうのに
あろうことか私を置いて行ってしまったんですよ!
もういい加減お手上げしたい気分ですね!!
664デフォルトの名無しさん:2012/03/09(金) 01:22:43.76
教室で涼宮ハルヒの憂鬱(初版、流行る前からもってた)を読んでたら
「なぁ、それハルヒじゃね?」と後ろの席のやつにいわれた。
ちょっと怖い煙草とかすってるやつだったから
「うん、ハルヒ。それの一巻」って説明したら
「○○って長門に似てるよな」とクラスの女子のことを指さした。
大人しくていつも読書している小柄で可愛いこだった。
たしかにそっくりだったし、長門にも彼女にも好意を抱いていたので最高の笑顔で「うん」と賛同したところ
おもむろに携帯で○○さんのハメ撮りを見せてくれました。

誰かハルヒのいる世界に連れて行ってください
665デフォルトの名無しさん:2012/03/09(金) 01:26:41.34
まずはその話、本当かどうか確認する所からだ
666デフォルトの名無しさん:2012/03/09(金) 01:33:02.36
生身の女はかならず男を作るから期待はしないことだ。マンガやアニメじゃないんだよ。
667デフォルトの名無しさん:2012/03/09(金) 01:37:10.93
いきなりスレの流れが物故割れた
668デフォルトの名無しさん:2012/03/09(金) 01:58:32.12
>>666
その認識も行き過ぎだと思うぞ
669デフォルトの名無しさん:2012/03/09(金) 02:10:19.53
いい年して男と付き合ったことも無い可愛い女の子なんて実在しないだろ実際のところ
見た事無いぞ
670デフォルトの名無しさん:2012/03/09(金) 02:20:50.04
実在すればそれはそれで気味が悪い
671デフォルトの名無しさん:2012/03/09(金) 02:39:00.31
そりゃ死ぬまで純潔を守っても仕方ないよw
教室での話だったら学生時代だろ
そのくらいの時期ならチャンスもあろうに
672デフォルトの名無しさん:2012/03/09(金) 06:01:30.78
VIPでやれ
673デフォルトの名無しさん:2012/03/09(金) 06:03:03.54
ここはMIPスレですが何か?
674デフォルトの名無しさん:2012/03/09(金) 06:13:13.01
マングリ返しで何かがでまんぐりんぐwwwwwwwっwwwうぇw
675デフォルトの名無しさん:2012/03/09(金) 20:15:38.15
>>646
それがどうした?
676デフォルトの名無しさん:2012/03/09(金) 20:36:54.97

}
677デフォルトの名無しさん:2012/03/09(金) 20:46:01.55
それは、希望さ。
678デフォルトの名無しさん:2012/03/09(金) 20:51:21.76
const Class< Base(int), Base(std::string) >
         &constructor = ClassType< Delived(int), Delived(std::string) >();

std::shared_ptr<Base>
         base1( constructor.New( 10 ) ),
         base2( constructor.New( "10" ) );

可変長テンプレートがあれば、こんなのがマクロ使わずとも
簡単に作れるんだろ、はよう実装してほしいわ。
なんであんなに対応が遅いんだ?
679デフォルトの名無しさん:2012/03/09(金) 20:52:15.16
同時に絶望でもある
680デフォルトの名無しさん:2012/03/09(金) 20:54:15.22

/*
681デフォルトの名無しさん:2012/03/09(金) 21:14:47.98
*/
682デフォルトの名無しさん:2012/03/09(金) 21:23:49.45
begin
683デフォルトの名無しさん:2012/03/09(金) 21:25:00.50
end
684デフォルトの名無しさん:2012/03/09(金) 21:29:54.03
imort java.io.Fire
685デフォルトの名無しさん:2012/03/09(金) 21:53:15.51
imort hosii...
686デフォルトの名無しさん:2012/03/09(金) 21:56:14.68
using ga::aru::jan;
687デフォルトの名無しさん:2012/03/09(金) 21:57:35.16
int main = 0;
688デフォルトの名無しさん:2012/03/09(金) 22:08:01.23
関数型言語 C++
689デフォルトの名無しさん:2012/03/09(金) 23:46:48.00
インポートなんてインポテンツなもんはいらない
妹が欲しいって言ってるだけだっての!!
と、ミサカはミサカは>>685の気持ちを代弁してみたり
690デフォルトの名無しさん:2012/03/09(金) 23:48:13.61
main :: IO()
main = return()
691デフォルトの名無しさん:2012/03/10(土) 00:15:27.58
>>689
いらんつうかもっと高機能なusingが既にあるだろ。
692デフォルトの名無しさん:2012/03/10(土) 00:18:41.91
むしろ俺の妹をもらってくれ、いらん
693デフォルトの名無しさん:2012/03/10(土) 00:20:29.27
692の妹「な、なりたくてあんたの妹になってやったわけじゃないんだからねっ」
694デフォルトの名無しさん:2012/03/10(土) 00:42:24.10
C++を理解する能力よりも妹がいる能力が欲しい
695デフォルトの名無しさん:2012/03/10(土) 02:17:13.05
C++なんかどうでもいい。
俺は君が欲しいんだ!
696デフォルトの名無しさん:2012/03/10(土) 02:25:59.97
冷静になれよ
オマエと同じ顔の女が増えるんだぜ?
堪えられるのか?
697デフォルトの名無しさん:2012/03/10(土) 02:32:26.13
最近はテンプレートより、ソース吐き出すスクリプトでいいんじゃないかという気になってきた
698デフォルトの名無しさん:2012/03/10(土) 03:51:52.89
配列をゴチャゴチャ記述するのが面倒なんで
スクリプトどころか表計算のTSV出力をincludeしてるわ
699デフォルトの名無しさん:2012/03/10(土) 06:54:07.64
初期化に必要な情報で値も固定されてるならそれでもいいんじゃない
700デフォルトの名無しさん:2012/03/10(土) 07:02:44.37
>>698
細かいけどCSV(Cはカンマ)な。TSVのTはタブだからincludeしてもエラーになるだけだ
701デフォルトの名無しさん:2012/03/10(土) 09:53:56.22
そうやって読み込んだCSVのデータを、テンプレートでソートする…流石に内容が分かっていてもソートは無理か
702デフォルトの名無しさん:2012/03/10(土) 17:46:43.97
>>697
それだとデバッガがな。
703デフォルトの名無しさん:2012/03/10(土) 20:48:25.05
>>697
C++ with ScriptかCへのTranslatorだった時代を思い出すな
704デフォルトの名無しさん:2012/03/10(土) 20:51:29.22
>>703
CFRONTだっけ?SS1+だと重くて悲しかったがかなり世話になった
705デフォルトの名無しさん:2012/03/12(月) 21:52:24.62
cfront には超がつくほど世話になった
706デフォルトの名無しさん:2012/03/13(火) 08:19:19.49
なんかノネナールの臭いがするよここ
707デフォルトの名無しさん:2012/03/13(火) 11:37:59.68
違います!熟成したカレーの臭いです!
708デフォルトの名無しさん:2012/03/14(水) 17:40:57.92
ふむ。

>C++11の次はC++17となりそう
ttp://d.hatena.ne.jp/faith_and_brave/20120307/1331103474
709デフォルトの名無しさん:2012/03/14(水) 17:57:02.55
確か0xは最初C++08になる予定だったから
次はC++20ですね
710デフォルトの名無しさん:2012/03/14(水) 20:47:25.49
C++2038
711デフォルトの名無しさん:2012/03/14(水) 23:11:11.02
>>708
5年間でC++11をマスターしないといけないの(´;ω;`)
712デフォルトの名無しさん:2012/03/14(水) 23:37:05.56
ある言語でプログラムをするのにその言語の全ての機能を理解しマスターする必要はないだろ
713デフォルトの名無しさん:2012/03/14(水) 23:39:24.62
全単語覚えたら、英語話せます?
714デフォルトの名無しさん:2012/03/14(水) 23:50:09.44
>>708
03みたいなヤツか。C++11の処理系が完全になるのは2021年ぐらいか?
715デフォルトの名無しさん:2012/03/15(木) 00:27:20.56
>>714
そしたら、C++17が遅れて、さらに処理系が完全になるのは何年か考えると、
もうC++はこれ以上覚える必要が無さそうだ(´・ω・`)
716デフォルトの名無しさん:2012/03/15(木) 00:31:11.39
ライブラリへの変更と言語仕様への変更は、
確かに分けて作業した方がいいと思う。
717デフォルトの名無しさん:2012/03/15(木) 22:12:43.25
C++xxにすればいいのに
学習しないね
718デフォルトの名無しさん:2012/03/15(木) 22:20:12.18
(:xx:)
719デフォルトの名無しさん:2012/03/15(木) 23:37:54.75
マイナーは仕方ないが
メジャーではばっさり切り捨てもやれ

メタボ、しかも発癌してるのは切除しろ

特に例外。禿さまご乱心を黒歴史に早くしろ。
noexcept は廃止。二重否定はダメ。
throw でちゃんと作り直せ。
あくまでメジャーを標榜するのなら。
地味ながら普通の new もな。

特殊化のクソもいつまでgdgdやってやがる、
そういうところこそ禿、がんばれよ。
720デフォルトの名無しさん:2012/03/15(木) 23:51:50.88
こんだけ年寄りなら癌でも進行が遅くて簡単には死なんだろうよ
721デフォルトの名無しさん:2012/03/16(金) 04:30:41.90
http://msdn.microsoft.com/en-us/library/hh567368%28v=vs.110%29.aspx
何がどうpartialなのかちゃんと書けよオウ
722デフォルトの名無しさん:2012/03/16(金) 08:07:46.82
二重否定がダメっていうのは、
英語(他の言語はしらない)の文法学者がただ気に入らなかったから、というだけなんだぜ。

ダメっていう雰囲気が蔓延する前は普通に使われていたんだから
noexcept を嫌う理由にはならない。

まあ throw(false), throw(true) ではなぜダメだったのかわからないけどさ
723デフォルトの名無しさん:2012/03/16(金) 19:29:04.47
throw(Foo)のときにFooが型か値かで意味が変わっちゃうからだろ多分
どうでもいいのに
724デフォルトの名無しさん:2012/03/16(金) 19:32:27.96
って書いてて今わかったこれだ
throw(Foo())

Fooが型の場合、引数なしでFooを返す関数の型を例外指定してるのか
デフォルトコンストラクトしたFooの右辺値をboolとして評価するのか区別が付かないから
725デフォルトの名無しさん:2012/03/16(金) 19:52:41.76
あー constexpr と競合するってことね
726デフォルトの名無しさん:2012/03/16(金) 22:22:08.40
まあtrue/falseでするとなるとthrowとは別のキーワードが欲しいわな
throwは型を取るものだから、使い回したくはない
かといってexpectとか普通に何かで使われる事あるだろうし
nothrowもstd::nothrowと被るしで
まず使われてないだろうというnoexceptになったのかねえ

throw<true/false> というのもキモいよなあ・・・
727デフォルトの名無しさん:2012/03/16(金) 22:32:36.38
#includeはいつ廃止されますか
728デフォルトの名無しさん:2012/03/17(土) 00:16:32.52
>>726
そういう時こそ[[ ]]を
729デフォルトの名無しさん:2012/03/17(土) 04:46:54.98
>>727
廃止は当分無理だろうけど、
次回の規格改定には、かなりの確率でモジュールが入る。
730デフォルトの名無しさん:2012/03/17(土) 08:53:32.99
またexportと同じ道を辿ることは無いのか
731デフォルトの名無しさん:2012/03/17(土) 11:35:32.29
#includeなくなったらコンパイル時間短くなる?
732デフォルトの名無しさん:2012/03/17(土) 11:46:18.27
理論的にはD言語くらいには速くなる
733デフォルトの名無しさん:2012/03/17(土) 11:56:34.88
ないない
そんな簡単ならプリコンパイルドヘッダでもそれなりに速いはず
Dをなめてはいけない
734デフォルトの名無しさん:2012/03/17(土) 11:58:41.83
C++っぽいけどC++じゃない言語を作ったらどうなの
C++からのトランスレータが作りやすい仕様にして
735デフォルトの名無しさん:2012/03/17(土) 12:10:29.01
C++からのトランスレータって、結局フルのC++コンパイラを作るのと労力変わんないんだが
おまけに大抵のヘッダではマクロも込みでAPIだから、完全に活用するにはターゲット言語が細かい文法含めてC++完全上位互換である必要がある=C++の新バージョンと変わらない
要するにC++は局所解にはまりこんでる
736デフォルトの名無しさん:2012/03/17(土) 12:16:19.58
ついでに完全性を求めないなら、わざわざ新言語を作らなくても既存言語へのトランスレータは結構あるぜ
737デフォルトの名無しさん:2012/03/17(土) 12:24:21.18
>>734
C++の機能を保ったまま文法を変更するって論文がどこかに転がってたと思うが、
まあ、やはりどうもC++の文法に慣れた身には見慣れない文法になってたな。

>>735
今のC++の思想は、既存の汚い方法(プリプロセッサー)は互換性のために残しつつも、
より優れた方法(constexpr)を導入して、
自発的な移行を促すってのだが。

うまくいくかねぇ。
なんだかんだいっても、字句単位での置換は強力だからなぁ。
738デフォルトの名無しさん:2012/03/17(土) 12:34:08.33
>>737
思想とか関係ないよ
C++のヘッダからプリブロセッサがなくなっても、Cのヘッダを全くincludeしないとか無理でしょ
739デフォルトの名無しさん:2012/03/17(土) 16:02:19.09
C++を見限りたい気持ちでいっぱいだが次の言語が見つからない
740デフォルトの名無しさん:2012/03/17(土) 16:15:40.11
ようこそD言語へ
741デフォルトの名無しさん:2012/03/17(土) 16:16:55.23
やはりマクロが癌だよなあ
742デフォルトの名無しさん:2012/03/17(土) 16:24:08.49
D言語は10年くらい仕様を固定できたら選択肢に入ってくる
743デフォルトの名無しさん:2012/03/17(土) 16:26:41.04
マクロが癌は言いすぎ。右辺値参照とか、constexprとかの方が
「もういいかげんにせえや!この禿のパリサイ人共が」という気になるw
744デフォルトの名無しさん:2012/03/17(土) 16:32:45.60
右辺値参照とかさっぱり理解できんけど
ただでさえ速いSTLが何もしなくてももっと速くなるなら有難い
745デフォルトの名無しさん:2012/03/17(土) 16:48:44.63
インテリセンスの性能が悪いのも
リファクタリングし辛いのも
全部マクロのせいや!
746デフォルトの名無しさん:2012/03/17(土) 17:06:11.95
トランスレータはデバッガ作るのが辛すぎる。
747デフォルトの名無しさん:2012/03/17(土) 17:09:11.20
D言語作ってる人って、失敗作ばっか作ってる人でしょ
748デフォルトの名無しさん:2012/03/17(土) 17:14:43.22
トランスレータはあくまで過去資源を利用するためのもので
749デフォルトの名無しさん:2012/03/17(土) 17:24:03.08
rvalue referenceは当然の機能だろ。
というか今までの、constなlvalue referenceでprvalueを束縛できることのほうが変だっただろ。
まあ、この挙動は今更変えようがないがな。

まあ、別に理解できんユーザーが理解する必要はない。
コピーやムーブの実装はライブラリ作者が考えることだ。
>>744のいうように、STLがなにもしなくても速くなる。
C++11では、STLのクラスを普通に関数の戻り値として返しても、
何のパフォーマンス上の問題もない。

std::vector<int> f() ;

int main()
{
  std::vector<int> v = f() ; // ムーブされる。ユーザーが詳細を理解する必要はない
}
750デフォルトの名無しさん:2012/03/17(土) 17:30:13.28
何のパフォーマンス上の問題もない、は言いすぎだな。
ムーブ後の一時オブジェクトのデストラクタだって走るし、
ムーブコンストラクタだってただでさえ肥大化傾向の実行ファイルのコードサイズを更に膨らませる。

GCのある言語や v = f() ; を f(&v); として最適化できるタイプの言語ならこういうのは全撤去できるかんね。
751デフォルトの名無しさん:2012/03/17(土) 17:48:13.43
かなり斜めだな。
752デフォルトの名無しさん:2012/03/17(土) 17:59:28.29
>>749

うん、そうだ。

ま、せいぜい頑張ってくれ。



俺はつき合う気になれんがw
753デフォルトの名無しさん:2012/03/17(土) 19:25:08.08
入れ物を引数で渡したり戻り値をauto_ptr<std::vector<int>>とかに
する必要がなくなっただけで十分ありがたいです
754デフォルトの名無しさん:2012/03/17(土) 19:26:16.53
NVROも実装してなかったコンパイラがC++11をサポートできるのか
755デフォルトの名無しさん:2012/03/17(土) 19:43:06.65
D言語はGCが余計だったんじゃないかと思ってる
756デフォルトの名無しさん:2012/03/17(土) 20:27:22.86
>>750
つってもムーブ後のオブジェクトなんだから、
一切最適化されなかったとしても、関数呼び出しとか、
すでにムーブされた後であるかどうかを判定する条件分岐の実行とかそれぐらいだろ。

std::vectorだったら、確保した動的ストレージへのアドレスを格納している
ポインター型のメンバーが、nullptrであるかどうかの条件分岐ぐらいだろ。

コードの肥大化っていったって、
ムーブコンストラクターを書くのと、
ムーブ処理をその場にハードコードで実装するのは、
結局同じじゃないか。
757デフォルトの名無しさん:2012/03/17(土) 20:35:42.42
>>756
発想がC++に縛られてるなあ。
例えばf()がv領域をallocaしてそのままvとして使うなら、そもそもムーブという概念自体要らない。
そういう言語もあるんだよ。
758デフォルトの名無しさん:2012/03/17(土) 22:21:34.90
moveとか右辺値最適化とかの新機能についていけてないのだけど、
なんとなく>>750のように変換されるのかと思ってた。違うの?
759デフォルトの名無しさん:2012/03/17(土) 22:56:00.14
違うよ
760デフォルトの名無しさん:2012/03/17(土) 22:57:42.75
「最適化でコピーは消えてくれるよね……?」と心配しながら
ベクトルを返さなくてはいけなかったのが
「どうせムーブだし最適化されなくてもいいや^^」と安心して
ベクトルを返せるようになったってのはいいことだよ。
761デフォルトの名無しさん:2012/03/17(土) 23:15:30.59
ムーブも一応ムーブのコストがあるからなあ
戻り値最適化が期待出来る部分ではムーブは劣る
762デフォルトの名無しさん:2012/03/17(土) 23:27:54.38
コピーが最適化されて消えるところではムーブも消えるよ。

コピーなら消せる、ということがわかっている箇所で、
ムーブコンストラクタが定義されているときだけ最適化抑制するって
どんなアホコンパイラたよ
763デフォルトの名無しさん:2012/03/17(土) 23:41:23.56
>>758
ユーザー定義する方針なんで、
変換してくれるってのは根本的に発想が違います。
764デフォルトの名無しさん:2012/03/17(土) 23:43:12.27
>>754
出来れば嬉しい最適化と
必須の仕様の違いがありますから。
765デフォルトの名無しさん:2012/03/18(日) 00:12:38.75
>>762
そういう意味じゃなくてだな・・・
戻り値最適化使った方がいいケースで
ムーブがあるからムーブでいいやとするケースの話で
766デフォルトの名無しさん:2012/03/18(日) 00:15:44.12
どういうケースかよくわかんないからC++でお願いします
767デフォルトの名無しさん:2012/03/18(日) 00:49:15.82
ものすごく適当な例

std::vector<int> a = hoge();
foo(a);
a = foobar();
bar(a);
768デフォルトの名無しさん:2012/03/18(日) 01:03:33.14
vectorって代入される時にもともと持ってるデータを解放してるよな
ムーブでいらなくなったデータが一時変数のデストラクト時に解放されるのと比べて
本当に戻り値最適化のほうが性能的に有利になるのか?

ていうか、そもそも戻り値最適化って初期化する時だけしか有効にならないような
769デフォルトの名無しさん:2012/03/18(日) 01:06:05.10
考えるほどムーブのほうが都合がいいという結論になる
770デフォルトの名無しさん:2012/03/18(日) 01:08:36.76
2つ目のは戻り値最適化じゃなくムーブになる、という例だよ
swapの分だけコストはかかるはず

まあこの例だとこの程度どうでもいいんだけどね
771デフォルトの名無しさん:2012/03/18(日) 01:46:57.56
>>735
現時点でアセンブリに変換できてるんだから、
完全上位である必要ないだろ
772デフォルトの名無しさん:2012/03/18(日) 13:51:34.67
auto_ptrが理解出来てmoveが理解出来ない人は頭おかしい
773デフォルトの名無しさん:2012/03/18(日) 14:09:37.16
auto_ptrはもはや理解する価値がない。
774デフォルトの名無しさん:2012/03/18(日) 14:17:45.12
>>767
a = foobar();はC++03ではコピーになるからmoveより高コストになるな
それにa = hoge();でも
std::vector<int> hoge(){
  std::vector<int> r;
  ...
  return r;
}
のように書いた時点で戻り値最適化は効かないから
関数の実装にかなり制限が掛かると思うが
775デフォルトの名無しさん:2012/03/18(日) 14:27:36.50
いや、効くだろ
776デフォルトの名無しさん:2012/03/18(日) 14:27:56.48
>>774
NRVO搭載してるCompiler。具体的には、cl.exeなら最適化されるべ。
777デフォルトの名無しさん:2012/03/18(日) 14:30:05.59
>>773
auto_ptrはunique_ptr+moveに置き換わるんだから当たり前だろw
C++11からC++に入る奴の話じゃねぇよ
778デフォルトの名無しさん:2012/03/18(日) 14:33:35.35
流れぶった切るけど、noexcept()って、template<bool mode>てなテンプレート宣言したクラスで
noexcept( mode )って事ができるの?できないなら、throw()で十ぶんじゃね?なんの意味があんの?
779デフォルトの名無しさん:2012/03/18(日) 14:35:17.43
できるだろ。
780デフォルトの名無しさん:2012/03/18(日) 14:35:45.15
>>778
できるんじゃない? そういう用途だろう、当然
781デフォルトの名無しさん:2012/03/18(日) 14:41:56.52
boost::shared_ptr、std::auto_ptr、std::shared_ptr、
相互変換はどうすんだろうな。過去の資産を再利用するなら
古いポインター使いつづけるしか無いんだろうな。
782デフォルトの名無しさん:2012/03/18(日) 14:45:18.13
まあそうなるな
783デフォルトの名無しさん:2012/03/18(日) 14:47:40.64
はぁ?
784デフォルトの名無しさん:2012/03/18(日) 14:52:32.20
相互変換とか
785デフォルトの名無しさん:2012/03/18(日) 14:56:36.23
参照カウンタどうすんだよ
786デフォルトの名無しさん:2012/03/18(日) 20:19:38.37
boostとstdのshared_ptrに互換性がないのが困る
787デフォルトの名無しさん:2012/03/18(日) 20:21:12.07
別にboost::shared_ptr使い続けりゃいい
あるいはstd::shared_ptrに置換するか
788デフォルトの名無しさん:2012/03/18(日) 20:53:38.67
C++11になって、事実上の廃止ってauto_ptrの他にどんなのがあるの?
789デフォルトの名無しさん:2012/03/18(日) 21:06:51.34
unary_function類とbind1st類
790デフォルトの名無しさん:2012/03/18(日) 23:10:38.39
あんまりお近づきになりたくない機能だと思っていたのでなによりです
791デフォルトの名無しさん:2012/03/19(月) 04:34:17.38
bind廃止なのか…
792デフォルトの名無しさん:2012/03/19(月) 04:43:21.59
bindが追加されたからいらなくなったんでしょ
793デフォルトの名無しさん:2012/03/19(月) 07:23:11.87
boostのやつが導入されたんだっけ
別にラムダでいい気もするけど
794デフォルトの名無しさん:2012/03/20(火) 17:48:44.11
テンプレ引数付きtypedefってクラス内のtypedefでも使えたりするんけ?
いままでクラス内クラスについてはテンプレに出来なかったよな
795デフォルトの名無しさん:2012/03/20(火) 18:13:04.34
あーもうこんな複雑な言語、個人で使うならともかく、それなりのプロジェクトで使うとなると・・・。
これ、もう、オタクの玩具でしょ。
796デフォルトの名無しさん:2012/03/20(火) 18:20:28.61
エイリアステンプレートはクラス内でも使える。
ただ、本当にメンバーテンプレートなエイリアステンプレートを使いたいのか?
苦労するだけだぞ。

struct X
{ template < typename T > using A = T ; } ;

template < typename T >
void f()
{
  typename T:: template A<int> i ;
}

int main()
{
f<X>() ;
}
797デフォルトの名無しさん:2012/03/20(火) 18:20:31.35
そもそも、システム開発用の言語がこんなに複雑な必要性って、在るのかねぇ。
798デフォルトの名無しさん:2012/03/20(火) 18:22:47.48
システム開発用の言語だからこそ
高速化の為なら何でも取り入れるべき
799デフォルトの名無しさん:2012/03/20(火) 18:28:17.17
システム開発的には安定性の方が重要だよ。
だから、Cでシコシコやってるのが丁度よい。
800デフォルトの名無しさん:2012/03/20(火) 18:39:36.68
>>796
template< typename T > using Vector = Geometory::Vector<T, 2>;
ベクトルの次元は絞るが、型は何でもいい場合。一種のカリー化したいとき。
801デフォルトの名無しさん:2012/03/20(火) 18:48:19.55
C11の_Genericみたいな糞機能はC++に輸入しないで欲しいよな
まあこれに限らずC11普及するのかよって話もあるけど
802デフォルトの名無しさん:2012/03/20(火) 19:04:29.71
ABIを壊さずにオーバーロードを実現するための
_Genericは今更C++には無用だろ
803デフォルトの名無しさん:2012/03/20(火) 19:30:39.42
C99すら・・・
804デフォルトの名無しさん:2012/03/20(火) 20:54:57.83
>>799
安定性と「Cでシコシコ」の関連が不明です。
805デフォルトの名無しさん:2012/03/20(火) 21:00:03.01
Cなら10年前どころか20年前のコード見ても古いと感じないが
C++の10年前のコードは腐臭を放ってる
806デフォルトの名無しさん:2012/03/20(火) 21:01:20.58
それ、個人の慣れの問題じゃないの?
807デフォルトの名無しさん:2012/03/20(火) 21:03:04.20
Cってだけで時代を感じるな
808デフォルトの名無しさん:2012/03/20(火) 21:40:34.26
C++は仕様が固まってから日が浅いからね
809デフォルトの名無しさん:2012/03/20(火) 22:40:14.22
>>808
まだ固まってない
810デフォルトの名無しさん:2012/03/20(火) 23:12:55.33
使い方判らない機能は必要のない機能だから使わない方がいいよ。

いずれ、あー、こんな機能あれば安全なのになぁって必要になるときが来るけどね。
それまでは使わなくてよろしい。
811デフォルトの名無しさん:2012/03/21(水) 09:00:55.10
>>810
基本はひととおり知っとく必要がある。

そうやって必要な知識を遠まわしにして、
ものすごい面倒で複雑なロジックにする
アホがいっぱいいるんだ。
812デフォルトの名無しさん:2012/03/22(木) 00:24:26.71
積極的に使わなくてもいいが、知らなきゃ他人のライブラリは使えなくなるからな
813デフォルトの名無しさん:2012/03/22(木) 01:21:11.57
規格そのものとは関係ないが、翻訳単位が関数単位に出来ないかねぇ。
一つの関数なおす度にファイル一本コンパイルしなおすっつうのもウザい。
814デフォルトの名無しさん:2012/03/22(木) 08:23:57.47
1ファイル1関数にすればいいのでは
815デフォルトの名無しさん:2012/03/22(木) 09:50:16.86
てめえで1つのファイルに書いておきながらうざいとか言っちゃう人って
816デフォルトの名無しさん:2012/03/22(木) 20:25:44.96
そもそも構造違うけどSmalltalkなら関数(Method)単位で処理してくれるんだけどね
817はちみつ餃子 ◆8X2XSCHEME :2012/03/22(木) 20:28:39.00
Common Lisp もな
818デフォルトの名無しさん:2012/03/22(木) 22:30:18.91
(object.*function);
関数のポインタを逆参照したときの値って
未だ未定義なんだよな。もうクロージャにでもすりゃいいのに。
819デフォルトの名無しさん:2012/03/22(木) 23:03:03.61
関数とメソッドの違いに注意な
820デフォルトの名無しさん:2012/03/22(木) 23:12:19.98
メッセージを送るセレクタにより起動されるのがメソッド
ディスパッチで呼び出されるのがメンバー関数
821デフォルトの名無しさん:2012/03/22(木) 23:16:29.95
最近はメソッドをまともに実装した言語も少ないな
822デフォルトの名無しさん:2012/03/22(木) 23:32:30.62
int (__closure function)(int) = object.Function;
int (__closure function)(int) = object.*Function;

Borlandのコンパイラじゃこんな感じにクロージャに出来たんだけどな
C++本家にゃ取り込まれず今じゃ.net環境でdelegateとして活躍しとるとは
なんか皮肉だのう
823デフォルトの名無しさん:2012/03/22(木) 23:40:32.27
>>822
だってそれDelphi互換用のためだけの機能だったし。
__closureって名前も紛らわしすぎる。ラムダが入った今となっては特に。
824デフォルトの名無しさん:2012/03/22(木) 23:48:43.06
Delphi互換かどうかはどうでもいいし、別に__closureって予約語もいらん。
ただ、std::function<int(int)> function = object.Function;って書けるなら
ラムダ書かずに済んでありがたい。そもそも、関数がオブジェクトだってのは
Smalltalkの様で自然だ。
825デフォルトの名無しさん:2012/03/22(木) 23:52:30.80
C#なみにラムダの記述量が減ってくれるとありがたいのだが
826はちみつ餃子 ◆8X2XSCHEME :2012/03/22(木) 23:53:10.27
>>819
だよな。
メンバ関数のことをメソッドって言うな!! って思うよな。
827デフォルトの名無しさん:2012/03/22(木) 23:56:46.31
それでもまだBlocksさんに比べれば……
828デフォルトの名無しさん:2012/03/22(木) 23:59:48.18
>>824
変に規格に入って、VC++のABIがBorland(ってか現Embarcadero)のそれと違ってしまったら
肝心のC++Builderが困るじゃないか。
829デフォルトの名無しさん:2012/03/23(金) 00:08:13.52
>>824
型が弱すぎ
830デフォルトの名無しさん:2012/03/23(金) 00:18:01.36
>>829
なんだそれ?
831デフォルトの名無しさん:2012/03/23(金) 08:58:04.19
>>828
ABIなんて今までも互換性無かったのに今更
832デフォルトの名無しさん:2012/03/23(金) 09:12:14.81
クロージャっていまだに良くわからん
833デフォルトの名無しさん:2012/03/23(金) 09:13:08.84
>>831
折角64ビットで統一されたんだから
834デフォルトの名無しさん:2012/03/23(金) 12:43:50.05
Delphiってオブジェクト毎に関数ポインタを生成するために
動的コード生成やってなかったっけ
835デフォルトの名無しさん:2012/03/23(金) 17:10:43.70
>>834
やってない。単なる関数ポインタとthisの組。Dのdelegateなんかも同じだね。
836デフォルトの名無しさん:2012/03/23(金) 17:23:43.28
>>824
> std::function<int(int)> function = object.Function;

virtualだと単なるポインタじゃ済まないな。
関数内でthis使ってる場合も同様。
staticなメンバー関数以外、型安全にならないんじゃないの?
837デフォルトの名無しさん:2012/03/23(金) 17:26:47.91
>>836
object.Functionの時点でVMT参照して解決してしまえばいいんでそれは問題ない。
C++のメンバ関数ポインタと違って、後でthisだけ(orメンバだけ)取り替えたりはしないんだから。
838デフォルトの名無しさん:2012/03/23(金) 19:33:27.87
>>836
要するにstd::bindの構文糖にしろって事だけどわかってる?

auto function = object.Function;
auto function = std::bind( &Type::Function, &object. std::_1 );

それとも、もしかしてstd::functionの構造知らないの?
839デフォルトの名無しさん:2012/03/25(日) 12:07:17.57
最近のC++のディスられようがウザい。
DなんたらとかHasなんたらなんてどうでもいい。
840デフォルトの名無しさん:2012/03/25(日) 13:16:00.33
普通にC++について語ったらDisってるようになってしまう

C++がうんこすぎるから
841デフォルトの名無しさん:2012/03/25(日) 13:31:57.59
実用言語と実験言語を比べられてもな
842デフォルトの名無しさん:2012/03/25(日) 15:36:27.00
そうそう、C++は実験言語なんだからdisってもしょうがない。
その成果は確実に実用言語に受け継がれているよ。
843デフォルトの名無しさん:2012/03/25(日) 15:46:29.13
Dこそが真の実用言語だよなー
844デフォルトの名無しさん:2012/03/25(日) 16:22:54.00
>>842
その実用言語って何
845デフォルトの名無しさん:2012/03/25(日) 16:39:47.12
融通が利かないことを実用って言うのはちと無理があるわな
ネイティブ吐けてシステム記述できてCの資産が流用できる言語が他にないから
仕方なくC++使ってるってのが実際
いくら流行の機能入れても元が腐ってるからまともな言語設計が出来るはずもない
中の人に呪術染みた技巧コードを量産するテンプレートオナニストが集まりすぎた

Dが実用ってのはもっと無理だ
書きやすくていいんだけど今んとこ遊びにしか使えないよ
846デフォルトの名無しさん:2012/03/25(日) 18:39:35.33
>Cの資産が流用できる言語が他にない

これは大きいね。Cは仕様がコンパクトでコンパイラを簡単に作れるから
「高級言語としてCだけはある」みたいな環境がぼろぼろ存在するからね。
Cの資産は膨大だ。
847デフォルトの名無しさん:2012/03/25(日) 18:55:18.22
FFI知らんの?
848デフォルトの名無しさん:2012/03/25(日) 19:54:59.63
欧陽菲菲ネ
849デフォルトの名無しさん:2012/03/26(月) 03:16:11.58
もっとマシなものがあるなら流行っているはず
850デフォルトの名無しさん:2012/03/26(月) 03:38:53.28
>Cの資産が流用できる言語が他にない

Objective-Cがあるだろ
851デフォルトの名無しさん:2012/03/26(月) 03:54:06.49
はぁ?
852デフォルトの名無しさん:2012/03/26(月) 04:20:52.18
Objective-Cは11より変態だろ…
853デフォルトの名無しさん:2012/03/26(月) 04:47:53.01
ObjCが変態なのは否定しないけど、なんで変態なのかというと追加された文法がCから見てキモいからだろう。
(機能的には、OOP部分と組み込み型が別体系ってのは珍しくない。JavaやDもそうだし)
C++もenum classやunified function syntaxでCとは別物を被せる方向に舵を切ったじゃないか。ObjCのことは言えないと思うぜ。

あと曲がりなりにも実際に大規模に使われてる言語に対して「はぁ?」とか反応しちゃう視野の狭さが、
もっとマシなものが出てこない一番の原因と思うね。
854デフォルトの名無しさん:2012/03/26(月) 05:38:10.01
例え嫌々だろうが必要な時に使えて目的に適うならそれでいい。それがC++。
855デフォルトの名無しさん:2012/03/26(月) 06:36:45.23
C++は落ち目
856デフォルトの名無しさん:2012/03/26(月) 06:40:37.27
じゃあ上り調子のC#でも使うか
857デフォルトの名無しさん:2012/03/26(月) 07:21:17.05
ObjCはCの理念と反するからな
実行コストがかかりすぎる
858デフォルトの名無しさん:2012/03/26(月) 07:47:11.20
けっきょくC++しか選択肢がない
859デフォルトの名無しさん:2012/03/26(月) 07:55:12.81
そう思ってるのはC++使いだけ
C使いはC++も実行コストかかり過ぎだって思ってるよ
860デフォルトの名無しさん:2012/03/26(月) 07:57:07.41
けっきょくC/C++しか選択肢がない
861デフォルトの名無しさん:2012/03/26(月) 07:57:08.63
あぁ、「思ってる」な。知ってるぜ。
862デフォルトの名無しさん:2012/03/26(月) 07:58:01.60
そう思ってるのはC使いだけ
アセンブラ使いはCも実行コストかかり過ぎだって思ってるよ
863デフォルトの名無しさん:2012/03/26(月) 07:59:52.11
でもC++は落ち目で、Cはそうじゃないけどね
864デフォルトの名無しさん:2012/03/26(月) 08:01:02.85
CもC++使いもあと数年すればDに駆逐される運命だと言うのに哀れよのぅ
865デフォルトの名無しさん:2012/03/26(月) 08:01:31.65
>>849
良いものは自然と普及するという考え方はやめた方がいい
866デフォルトの名無しさん:2012/03/26(月) 08:05:05.06
Dってそんなにいいか?
867デフォルトの名無しさん:2012/03/26(月) 08:09:40.92
Dは誰にも見向きされずに消えていく…
868デフォルトの名無しさん:2012/03/26(月) 08:21:54.93
D覚えるくらいならC++と他の高級言語を使い分けるほうがいいからな
869デフォルトの名無しさん:2012/03/26(月) 09:11:22.75
C++覚えるぐらいならCと適当なスクリプト言語でいいって層の方が多いと思うぜ
870デフォルトの名無しさん:2012/03/26(月) 09:36:59.37
Dは配列でLinqできるのが面白かったけど、発展途上の時はメインには押し難い。GCはプラス要素だと思うんだけど。
871デフォルトの名無しさん:2012/03/26(月) 11:05:16.29
Objective-Cの実行コストってCに比べてどんくらい落ちるもんなの?
Effective C++の序文によるとC++は5%以内ってハゲが決めてるそうだけど
Objective-Cにもそういう約束事があるのかしら?
872デフォルトの名無しさん:2012/03/26(月) 11:26:27.63
>>871
Objective-Cのメソッド呼び出しはインタプリタ言語並の遅さ
873デフォルトの名無しさん:2012/03/26(月) 12:46:09.18
Objective-CはC++でラップしてしまえば
後はC++で作れる
874デフォルトの名無しさん:2012/03/26(月) 14:39:25.43
な、俺の予想したとおりになったろ
875デフォルトの名無しさん:2012/03/26(月) 20:01:51.25
ああ、すごいごい。

で、どんな予想したの?
876デフォルトの名無しさん:2012/03/26(月) 20:37:31.14
>>859
そういやCよりC++の方が遅いとはよく聞いたが、
あれの根拠はなんなんだ?実行イメージのロード時間?
C++のライブラリ使わない限りCと速度が変わることはないはずだが。
あと、C++のライブラリ使わず単に言語機能だけでコードを組むと
大概Cより速くなるんだがな。仮想関数とか分岐が固定されてると
インライン展開されて構造体に突っ込んだ関数のコールバックより速い。
877デフォルトの名無しさん:2012/03/26(月) 20:39:38.88
>>872
どんな言語でもメッセージ送信と同等の機能を組めば同じような速度だろうけどな。
878デフォルトの名無しさん:2012/03/26(月) 20:43:00.53
>>876
C++にはrestrictが無い(コンパイラの独自拡張を除く)
879デフォルトの名無しさん:2012/03/26(月) 20:48:57.84
>>878
なにC++11ならあるだろ。じゃないとインターフェース互換なくなる。
880デフォルトの名無しさん:2012/03/26(月) 20:59:19.93
Cとインターフェースレベルでの互換性なくしたら標準ライブラリとか阿鼻叫喚になるわな。
何が楽しくて同じ関数をC用とC++用二つもつくらにゃならんのだ。
881デフォルトの名無しさん:2012/03/26(月) 21:03:59.88
>可変長配列 (VLA) は含まれない (天のお恵みに感謝!)
http://www32.ocn.ne.jp/~ons/text/CPP0xFAQ.html.ja#C99

何がお恵みに感謝だよ。シネバいいのに。
882デフォルトの名無しさん:2012/03/26(月) 21:46:47.36
C++11にrestrictがあるというソースくれ
883デフォルトの名無しさん:2012/03/26(月) 22:15:49.72
ねえよ
884デフォルトの名無しさん:2012/03/26(月) 22:27:35.98
>>882
restrictがあるというと正確ではないかもしれんがC++ 11 FDIS §17.2のあたり
885デフォルトの名無しさん:2012/03/26(月) 23:07:03.45
>>871
んなこたぁない
886デフォルトの名無しさん:2012/03/27(火) 06:56:53.40
>>884
C++にはrestrictが無いって書いてあると読めますね
887デフォルトの名無しさん:2012/03/27(火) 06:59:42.26
より正確には、CのライブラリにrestrictがあってもC++はそれを無視すると書いてある

> The descriptions of many library functions rely on the C standard library 
> for the signatures and semantics of those functions.
> In all such cases, any use of the restrict qualifier shall be omitted.
888デフォルトの名無しさん:2012/03/27(火) 07:19:37.77
無視しろっていう意味ではなくて
restrict を消したヘッダを別に用意するか
マクロで消すかしろってことだと思うな、その箇所。
889デフォルトの名無しさん:2012/03/27(火) 07:22:31.14
そうなんか。処理系が頑張るんじゃなくて(ある意味人力で)
restrictの記述を落とすのか...
確かにそう読めるな
890デフォルトの名無しさん:2012/03/27(火) 07:26:35.37
素直に無視すりゃいいのになんでそんな面倒な事になったんだ?
891デフォルトの名無しさん:2012/03/27(火) 08:28:56.21
17.2 は
「C標準ライブラリは一部変更を加えて、C++でも提供する」

細かい変更箇所はあとで言うけど
restrict についてはいちいち述べているときりがないから
「restrict は一律消去で」ヨロ

という意味

restrict 以外にも変更箇所はあるのに、これだけ特別扱いで
言語レベルで無視というのは非合理かと
892デフォルトの名無しさん:2012/03/28(水) 16:14:01.14
C++からCのライブラリを使うという観点では、
restrictはライブラリ書く人が、
利用者に対して利用上の注意を求めるものだから、
無視しても実装が警告の機会を逃すくらいしかデメリットがない。
大域変数の修飾でも最適化の機会を逃すだけ。
893デフォルトの名無しさん:2012/03/28(水) 16:21:01.47
亀レスだが、
Objective-Cのメソッドディスパッチは
hash table引く。
メソッド名文字列からメソッドIDを生成して、
オブジェクトにsend出来る。
だから低レベルな小さいクラスライブラリ提供が無理。
そういう部分での設計はCでも行う必要があり、
OOな設計スキームを使う場合、
二種類のOO実装射影が必要になる。
894デフォルトの名無しさん:2012/03/28(水) 17:48:44.24
>>891
> restrict 以外にも変更箇所はあるのに、これだけ特別扱いで

C文法でC++11としてill-formedになるのってrestrict絡みだけだと思ってた
_Boolやら_Genericsやらはアンダーバー大文字始まりだから予約シンボルでどうにでもなるとして
他に何かあるの?
895デフォルトの名無しさん:2012/03/28(水) 20:00:54.27
まとめるとObjective-Cはリンゴ臭いからきもい
896はちみつ餃子 ◆8X2XSCHEME :2012/03/28(水) 20:11:50.27
>>894
コンパウンドリテラルは C++11 に入らないことになってたような。
897デフォルトの名無しさん:2012/03/28(水) 20:30:51.82
配列の添字指定の初期化とか
構造体のメンバ指定の初期化とか
そういうのも入らない
898デフォルトの名無しさん:2012/03/28(水) 20:44:41.25
>配列の添字指定の初期化
それはgcc拡張ではないかい?
http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
899デフォルトの名無しさん:2012/03/28(水) 20:46:14.14
悪い
俺が間違い
900デフォルトの名無しさん:2012/03/28(水) 20:55:36.47
>>896
901デフォルトの名無しさん:2012/03/28(水) 20:56:08.76
>>895


>>900はミス
902はちみつ餃子 ◆8X2XSCHEME :2012/03/28(水) 20:56:14.47
>>899 お前誰だよ。
ID 無しだとわかりにくいから解説しとくと >>898 の方が間違いで >>897 が正しい。
903デフォルトの名無しさん:2012/03/28(水) 20:58:33.39
俺だよ俺
904デフォルトの名無しさん:2012/03/28(水) 21:01:41.28
いや、オレオレ。
905デフォルトの名無しさん:2012/03/28(水) 21:02:22.83
俺だっつてんだろ
906デフォルトの名無しさん:2012/03/28(水) 21:07:55.05
え、俺わかんね???

>>897は文章どおり11の仕様には入っていないと言っている
>>898はGCC拡張だから11の仕様には入っていないと言っている

どっちも11には入らないって言ってるんじゃなく?

おまいらが何言ってるのか教えろください
907デフォルトの名無しさん:2012/03/28(水) 21:16:18.28
>>897はC99には入ってるけどC++11の仕様には入っていないと言っている
>>898はGCC拡張だからC99の仕様には入っていないと言っている(誤り)
908デフォルトの名無しさん:2012/03/28(水) 21:19:30.83
よくわかる解説ありがとう
909デフォルトの名無しさん:2012/03/28(水) 21:55:23.61
>>893
そもそもそういう用途を想定してないからな。
あくまでもモジュール理論の体現を目指したもので、
大規模コーディングを主戦場に想定してるから。
配列の形で記述された引数の [ ] の中に const とか入れる文法もC++11に入らない
動的にサイズを指定できる配列も入らない

入らない仕様はかなりあるのできりないな
そういや複素数型ってどうなってるんだっけ?
Cとの互換性だけが取り柄の言語なのに...
C++にはCの仕様を取り込むか否か
選択する権利など無いのに勘違いしちゃってるな
むしろ何でrestrictを仕様に入れないんだろう
ベクトル化とかの最適を考えると困るはずなのに
C89/C++03以前のように、プラグマで対応するっていう事?
まあ現実には「昔の」Cと実用レベルで互換が取れてれば構わんのだけどね
最新のCなんて最新のC++以上に使われるか怪しいわけだし
構造体のメンバ指定の初期化は結構見る気がするなあ。
ヘッダファイルに現れないなら関係ないか。
restrictなんて使った方が性能的に有利な以上
コンパイラが対応してるなら使わない理由がないんだが

もはやgccもclangもC99がデフォルトだし
restrict の追加でボトルネックが解消されることなんて稀だろ。
コンパイル時にチェックの掛からない制約を追加するわけで、リスクもある。

要らないとは言わないが、「使わない理由がない」はさすがに言いすぎ。
restrict無いって事は、memcpyなんかは、C言語版C++版2つ実装が必要になるのか。
今までの様にstd::memcpyから::memcpy呼ぶと未定義動作する可能性が有るんだもんな。
>>919
memcpy (他いくつかのC標準関数)は元から restrict 相当の要求があるから、同じ実装で問題ないよ。
不自由Windowsでは
いつになったらclang使えるようになりますか?
リンゴがwindowsでiPhoneアプリを作成できるようになったら
今更noalias再びのrestrict入れるなんて
Cの標準化委員会は馬鹿だなあと思う。
924営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 12:27:18.91
restrict(というよりC99に入った仕様の多く)は
FortranをCで置き換えることを意識してる

もとよりC++やC++プログラマなんて眼中に無い
底辺数値計算屋のために…
現実にはFORTRANでさえOOPになって、
C++の方が数値計算ライブラリに使われているのに。
>FortranをCで置き換えることを意識してる

初耳ですー/(^o^)\
Fortranでは実現できる自動SIMD化が
別名の問題でCでは困難なケースが見られる
高効率を求めてCを使うユーザー層から不満があるんでしょ
呼び出し規約合わせれば簡単に呼び出せるんだから速度が必要なところはfortran使えば良いのに
そうだな、呼び出し規約を合わせれば簡単にCもFortranも呼び出せるから
C++なんて歪なキメラ言語を使う必要は無いな
Cは相変わらずハッカーに好かれてるのにC++は嫌われてるね

ttp://attractivechaos.github.com/HN-prog-lang-poll.png
class も namespace も template も例外も欲しいんだよ
いい加減にスレ違いのCの人はよそでやってくれないかな?

ここらへんとか
cとc++どっちがいいの?
http://toro.2ch.net/test/read.cgi/tech/1245506307/
ここはどうしてC++11がゴミになっちゃったか
議論するスレですよ
>>933の頭の中には俺の知ってるのと別の"C++11"があるのか
面白いな
WindowsでC/C++がオワコンになって
CにはLinuxとOS Xが残ったけど
C++は完全に終わっちゃったね
LinuxでもC使っているのはカーネルみたいな枯れた分野だけ
いまどきCだけってのは珍しいな
Cと適当なスクリプト言語を組み合わせて使うのが多い

C++はその「適当なスクリプト言語」枠から脱落しただけ
Cが使われるのは昔からあるソフトだけ
じゃあ今は何が主流なんだ?
ネイティブ吐けないJAVAやC#とか言うなよ
Chrome -> c++
Firefox -> c++
Opera -> c++
KDE -> c++
evernote -> c++
LLVM -> c++
LibreOffice -> c++
Maya -> c++
Photoshop -> c++
圧倒的じゃないか
MSとかgoogleとかappleみたいな
世界で滅茶苦茶儲けている企業は
だいたいC++使っている
C++勉強しよう
std::thread で作ったスレッドが終了してるかどうかって
どうやって確認したらいいんでしょう?

boost::thread だと timed_join() に 0 msecとか指定して確認してたんですが、
std::thread だと timed_join() がないので。。

自分の環境(Win+VC11)では
join() はスレッドが死んでると system_error 送出するけど
死んでたら例外、の挙動が規格で決まってるわけではなさそう?なので、イマイチ

native_handle() は実装依存かつ、MSDNに記載なしなので、
マジ実装依存でイマイチ

と悩んでいます。get_id() が返す値もシステムの
Thread IDと同一という保証はないと思うのでシステムAPIには渡したくないです。
(今の実相だとシステムのThread IDを返すようですが)
joinable
>>937
どうでもいいが、C++使っててスクリプトをアプリケーション制御言語以外の意味で使う人って珍しいな。
大体スクリプトとしてPerlを使う、Pythonを使うって言い回しが多いと思うけど。
1990年代から2000年初頭にかけて、まだC++が素晴らしい言語だと
人々を騙せていた頃に作られたソフトウェアが生き残ってるから
C++はまだまだ使われるよ
COBOLと同じような意味で
2000年初頭にJavaやC#で作られたソフトが
C++に書き換えられているの知らんのか
950営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 12:34:40.31
あほか。
パフォーマンスが要求される第一線のアプリではC++以外に選択肢がないから
使われているんだよ。
せめて、お前には無関係な言語だということぐらい理解できるようになろうな。
C使えよ
>>952
C一強だな。Javaはもうそろそろ終わるかんじか。
あと全般的に下降傾向だな。
JavaScript, Objective-C, C# は上昇傾向、プラットホームべったり依存が好まれるご時世なのか?
>>950
速度求めて無いヤツがこのスレに居ると思ってんのか?
速度必要ないならシェルスクリプトやらPythonやらで済ますわ
>>954
その中にプラットフォーム依存の言語なんて無いだろ
Objective-CはCが動くすべての環境で使えるぞ
なんせgccとclangがサポートしてるからな
iOS以外でObjective-C使うメリットなんてないし
iOSでもObjective-Cは最小限にしてC/C++で書くだろ
がはは、うちのC開発はcxxだ。
他の多くの言語みたいにヘッダとソースコードを分けずに済むような仕組みにしてくれよ
>>957
NeXT時代からライブラリもってりゃObjective-Cの方がラクだ。
プログラムの中で速度が必要な所なんて1/3も無いからな。
基本的にインタプリターで書いて時折Cを使うってのはなかなか楽。
APIに依存しない部分はどんなOSでも使えるし。
961944:2012/03/31(土) 13:28:49.24
>>945
それも期待したんだけど、明示的に join() するまで
joinable() == true なんだよね。MSVCがおかしい?
http://ideone.com/a62dR

----VC11b の結果
1
main::<lambda_fd7c0d38621812681769875849cb477a>::operator ()
1
0
----

で、join() するとスレッドがブロックしちゃうから
純粋な検査だけしたいのだけど。。。
>>961
何がしたいの?結果を受け取りたいだけとか
待ち合わせしたいならfuture使えばいいだろうけど
963944:2012/03/31(土) 13:55:48.55
>>962
複数の常に生きているべきスレッドがあって、
それらに対してwatchdog的なことをしたい。

boostでやってたことを、C++11ウェーイってstdに置き換えてたらここで詰まった。

futureは使ったことないけど wait_for() かなんかでできそうな気がしてきた。
ありがとう、すこし調べてみる
人口が多い順にJava、C、C++、C#。
この中でもっともコンパクトなのがC、最も巨大なのがC++。
Javaも含めていずれもC系列なんだから全部やっとけ^^
C++専門であってもJavaのコードを読まなくちゃいけない時とかあるんだし。
電話機かエンタープライズ向けでしか見ないJavaの人口が一番多いって?
寝言は寝て言え
人口一位は、batスクリプト、VBA、javascriptが競い合ってるのが実状
>>942
AdobeもC++の偉い人呼んで社内セミナーやってる。
一部セミナー資料は公開されてる。
それからアプリ開発のために作ったライブラリの一部を公開してる。
Adobeは標準化委員会のメンバーだしな
C++標準化委員の法人メンバーは少なくともこれだけ居る
・Adobe
・Apple
・Boost
・Bloomberg
・EDG
・Google
・HP
・IBM
・Intel
・Microsoft
・Red Hat
・Sun

個人的にはなぜ金融屋(Bloomberg)が居るのか不思議で仕方ない
Adobeと一緒。トレーディングシステムをC++で開発してる。
http://www.bloomberg.com/careers/opportunities/job/show/31124/trading-systems-c-c++-senior-software-developer.html
しかしいつ見ても、そうそうたるメンバーだよ。
Sun ...
他人にはJava薦めておいて
ちゃっかりC++使っているのがSun
今後はOracleが参入する理由か
なんかウザいな
クソみたいなDBライブラリねじ込むのかなぁ
クエリ送りやすくするためのサポートは免れんだろうな
>>970-971
そりゃJavaVMやJDKの実装にJava使うわけにはいかないんだし・・・
統合言語クエリ良いじゃないですか
リフレクションがないのは仕方ないとして
アノテーションプロセッサ(コンパイル時書き換え)できてほしいや。
XMLとかRDBのマッパーとかに必要。
あとtemplate<class T extends Hello>

つ C++/CLI
>>977
> あとtemplate<class T extends Hello>

conceptの規格読んだ?
マッパーって寒そうな印象なんで、
どうしてかなぁと考えた。
マッパだからか。
exportあたり使ってLINQみたいなの作れないかな
そんなものは埋め込みSQLでも使ってやれ
配列をGCで回収してくれれば関数から配列返すだけで、エセLinqできるんだけどね〜。
pgr
linqは配列を返してるんじゃなくてジェネレータオブジェクトを返してるんじゃないのか
エセでっせ。
まー、中身が何かは外側からは割りとドウでもいいかな。用途が合ってれば・・・。
これ以上C++をキモくしてどうする...
>>983
スマポじゃいかんのか
>>988
ダメなことはないけど、操作がちょっと増えるなー。小さいことだけどね。
990989:2012/04/01(日) 22:37:42.87
得意げに書き込んでてあれだけど、Dの配列と勘違いしていた。

大変申し訳ない。平にご容赦を。
メチャクチャ恥ずかしい。
動的型とかGC入れてLinqやるならC#でいいでしょう。
コインパイル時に静的にしてこそC/C++ですから。
>>991
auto q = collection.Where( [](int x)->bool{ x > 10; } ).Select( [](int x)->bool{ x * x; } );
↑これが↓こうかけるだけでしょ。
auto q = from x in collection where x > 10 select x * x;

単なる構文糖じゃん。evalやリフレクション必要ないし全然動的じゃない。
.net版埋め込みSQL風構文じゃないのかこれ。
var q = collection.Where(x => x > 10).Select(x => x * x);

C++のラムダ式はタイプ量が多すぎて旨味が少ないわ
何とかしてくれ

そもそもC++にはWhereもSelectもないから話にならん
どうでもいい。
>>993
auto q = collection.Where(_1 > 10).Select(_1 * _1);
より短く書くことも出来る。
あとWhere、Selectってただの関数だろ。
自前で作るか、COM経由で使えばいいだろ。