1read 100read
2012年5月プログラム69: C++11/C++1y 15 (284)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
愛国Ruby (346)
【QBASIC互換!?】FreeBasic【GPL】 (498)
P2P型の完全匿名掲示板はまだ出来ないの?その2 (691)
初心者の俺が初めて覚えるプログラム言語 (459)
結局プログラム作るのってWinとLinuxどっちがいい? (190)
java講座を一緒に受けよう! (661)
C++11/C++1y 15
1 :12/04/03 〜 最終レス :12/05/29 The C++ Standards Committee http://www.open-std.org/jtc1/sc22/wg21/ Wikipedia http://ja.wikipedia.org/wiki/C%2B%2B11 前スレ: C++11/C++0x 15 http://toro.2ch.net/test/read.cgi/tech/1321453654/
2 : C++0x http://pc11.2ch.net/test/read.cgi/tech/1149440647/ C++0x 2 http://pc11.2ch.net/test/read.cgi/tech/1191842951/ C++0x 3 http://pc11.2ch.net/test/read.cgi/tech/1204808027/ C++0x 4 http://pc11.2ch.net/test/read.cgi/tech/1214407525/ C++0x 5 http://pc12.2ch.net/test/read.cgi/tech/1232460649/ C++0x 6 http://pc12.2ch.net/test/read.cgi/tech/1245092251/ C++0x 7 http://pc12.2ch.net/test/read.cgi/tech/1253280377/ C++0x 8 http://pc12.2ch.net/test/read.cgi/tech/1262874195/ C++0x 9 http://pc12.2ch.net/test/read.cgi/tech/1269623636/ C++0x 10 http://hibari.2ch.net/test/read.cgi/tech/1275375522/ C++0x 11 http://hibari.2ch.net/test/read.cgi/tech/1285884294/ C++0x 12 http://hibari.2ch.net/test/read.cgi/tech/1298470844/ C++0x 13 http://hibari.2ch.net/test/read.cgi/tech/1311240361/ C++11/C++0x 14 http://hibari.2ch.net/test/read.cgi/tech/1316760961/ 親戚スレ C1x http://hibari.2ch.net/test/read.cgi/tech/1296642667/
3 : スレ番間違えたけど気にするな
4 : >>1 乙 C++1yって次の規格のことか
5 : std::hash<Type>()(element)ですが、戻り値に再現性はありますか?
6 : >>5 ハッシュ計算アルゴリズムの規定はないからコンパイラが変われば結果は変わるだろうな
7 : >>6 すみません言葉足らずでした。 はじめてプログラムが実行される時、内部で未初期化の値が使用されて プログラムを起動する度(≠実行する度)に前回と違ったハッシュ値になりうるかどうかです。 以前、boost::hash_combineで上記の様な再現性の無い結果にはまったことがあったのでstd::hashでもそうなのかなと思いまして。
8 : >>7 ハッシュ値の使用目的から常識的に考えて、そりゃバグだろ。
9 : >>8 セキュリティの観点から、 プロセス起動ごとに、ハッシュ値を変える仕組みを採用していることがあるんだ。 ソルトのようなものだと思ってもらいたい。
10 : そんな高尚な目的が無くても、アドレス値とか混ぜこんでるとそうなるな。
11 : template <class T> struct hash<T*> の部分特殊化が標準ライブラリに含まれてるんで、 そういうことになるかな。
12 : std::hashの目的としては、 単一のローカルなプログラムが、その一度の実行中に限り、 コンテナーの実装で使用するために十分なハッシュ値の提供。 ハッシュ値を比較することで文字列などのビット列の一致を調べるとか、 他のプログラムと通信してハッシュ値のやり取りとか、 暗号関連に十分な強度のあるハッシュではない。 CRCとかSHAみたいなハッシュ値を期待してはいけない。 次の規格改訂では、ユーザー型をstd::hashに簡単に対応させるためのライブラリが追加される予定。 ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3333.html
13 : 数年後にstd::hashを無節操に使ったプログラムが大問題を起こすんですねわかりました
14 : std::weak_hashみたいな名前にしとけよ
15 : std::ゼッケン
16 : コンテナの実装にしか使えないなら<container_base>とか作って隔離しとけよな <functional>なんかに入れんな
17 : 高速比較の用途ならいくらでもあるだろコンテナに限定する必要はない でかいファイル同士の比較やロープ規模の文字列比較等 でかいデータの比較には重宝する
18 : template <typename... Ts> istream& operator>>(istream& is, tuple<Ts...>& t) { //カンマ区切りのデータをタプルの各要素に読み込む。 //is >> get<i>(t) ができると仮定。 } この実装をboostつかわずにしたいのですが、どうすればいいでしょうか? まずは空白区切りでもいいです。
19 : template <size_t remain> struct helper { template <typename... Ts> static void read(istream& is, tuple<Ts...>& t){ is >> get<sizeof...(Ts) - remain>(t); helper<remain-1>::read(is, t); } }; template <> struct helper<0> { template <typename... Ts> static void read(istream& is, tuple<Ts...>& t){} }; template <typename... Ts> istream& operator>>(istream& is, tuple<Ts...>& t) { helper<sizeof...(Ts)>::read(is, t); return is; }
20 : >>19 ありがとうございます。 同じ方針で考えていましたが、 関数の部分特殊化ができないので挫折していました。 オブジェクトにすればよいのですね!
21 : >>19 まだ使えるコンパイラないだろ
22 : for(;;) { int left; double right; count = std::fscanf( stream, " %d, %f", &left, &right); if( 1 != count ) break; vector.push_back( std::tuple<int, double>( left, right ) ); } 何らかの構造化された文字列なら<cstdio>使ったほうが楽だぞ
23 : >>21 Clang
24 : gcc-4.7 もすでにリリース済みで、 めぼしい機能で実装されてないのは inheriting constructor くらい。 attributes さんはめぼしくないし
25 : atomicは
26 : thread_localは
27 : 日本の糞企業で働きたくない
28 : 同意
29 : C++11を駆使したオープンソースなソフト開発の仕事ないかな
30 : >>29 人柱乙
31 : そんなコンパイラや環境が極端に制限されたオプソはちょっと…
32 : オプソってハイソな感じがするよね。
33 : 個人的に使いたい言語に仕事を合わせようという考えは 正しいと思わないが否定もしたくない どんなに理にかなった選択でも本人の原動力なくして成就し得ないからな とりあえず C++11 にラブラブなら、コンパイラや規格そのものの中の人をやってはいかがかな GCC なんて手段に過ぎない、スクラッチででもやってやるって勢いで
34 : 現実は C++ 規模のをスクラッチでっていうのはそうとう無謀だけどな。
35 : Clangの開発を手伝ってやってくれ Windowsでも手軽に使えるようにして MSVCやVS IDEなんか吹っ飛ばしてしまおうぜ
36 : MSVCはMSVCというC++によく似た何か用のコンパイラですし Clangみたいな正統派でぶっ飛ばすのは無理ではないかと
37 : だとしたらVSに寄生してるインテルコンパイラは何でしょうかw
38 : エリンギ
39 : cl.exeとVisual C++に依存してるヤツ多いんだな
40 : gcc系だとSEHも満足に使えないし、--gc-sectionsすら動かないからなあ。
41 : 環境構築コスト+コード補完機能の有無 この差はすんごく大きいと思うよ
42 : VC(VS)は、MSのサポートが案外というかやはり大きい
43 : システム系のAPIはヘッダの移植+dllの呼び出しで何とかなると思うけど… 未だにC言語ベースのAPIが基本な状況を鑑みるに c++のコードを呼び出すようなギミックがボトルネックなのかも COMもイマイチな感じだし
44 : C++が他言語との呼び出し規約にCの命名規則を使うからじゃないのかにゃー。
45 : >>41 Qtやら他のツールでも同等なのが有るがな
46 : テンプレート対応とかになってくると一気に選択幅が狭まるからねぇ
47 : std::begin(container_type&)とstd::end(container_type&)があるのに std::rbegin(container_type&)とstd::rend(container_type&)が無いのは 片手落ちだよな
48 : container::const_iteratorがあるのにcontainer::volatile_iteratorがないとか、 std::cbegin/std::cendもないとか、accumute_nとかtransform_nとかinner_product_nとかがないとか、 std::u16printfとかがない(というか書式指定子さえない)とか、 何本手があっても落ちきれねぇな。
49 : volatileに関しては、コンテナをvolatileにする意味が無いからしかたない
50 : std::array なら意味があると思う
51 : volatileは、ポインターかアセンブリで特殊な セグメントに設置した外部変数じゃないと意味ないから 外部変数をオブジェクトにするならPODじゃないといけないし、 コンテナは使えない
52 : C++11ではPODって言葉は無くなったんじゃなかったっけ
53 : 緩和されただけで無くなっちゃいない PODじゃないオブジェクトをPOD代わりに使うと危険だからな
54 : 一時期ドラフトで軒並みPODが別の言葉に置き換えられてるの見たけど 消えてなくなったわけでもないんだ
55 : 別の言葉思い出した trivial/non-trivial だな
56 : trivialとPODじゃ全然違うじゃないか
57 : PODとはtrivialかつstandard-layoutであること
58 : >>51 マルチスレッドで共有しているオブジェクトとか…
59 : >>58 マルチスレッドとvolatileは全く無関係。
60 : >>51 シグナルハンドラと共有しているオブジェクトとか…
61 : >>51 >>59 1つのスレッドが読み書きして他スレッドが読むだけのアトミック変数は?
62 : >>60 シグナルハンドラと共有できるのは volatile sig_atomic_t 型。 任意のコンテナ型を共有することはできない。 >>61 アトミック変数って std::atomic のことか? だったら、volatileとか関係なしにスレッドセーフだよ。
63 : >>62 std::array<volatile sig_atomic_t, 5>とかやったときに、 volatile sig_atomic_t *なイテレータが欲しいじゃないか。 と思ったが、引数の型を修飾してる時点で::iteratorがそうなるのか?
64 : >>63 うん
65 : こ
66 : ――― プログラム技術@C++11スレ
67 : >>61 何スレ前かで、極めて特殊な条件じゃないと 無意味だと散々論破されてたろ。 過去ログ読め。それからスレッドでvolatile使う話はもうするな。 クソレスで無駄にスレが伸びる。
68 : volatileで荒れるのこれで何度目だよ
69 : まだ大して荒れてないよ
70 : 他の言語、例えばJavaにもvolatileがあるから、 その辺でメモリモデルの理解に混乱が生じるのかも
71 : JavaのvolatileとC++のvolatileは意味が違うしねえ
72 : http://feezch.info/vt/show-71-22.html 73あたりからvolatileの話
73 : Javaのvolatileのせいでスレッド用の機能だと思ってる奴が的外れなこと言い出したり でもVCのスレッド用独自拡張で使えるからって混乱したり なぜかatomicやrestrictの話が混ざってきて戦争になったり メンバ関数のvolatile修飾を知らない初心者に乗っ取られたり 本の虫がvolatileなんか現代には必要ない遺物とかアホな事言い出して引っかき回したり C++0xスレの歴史はvolatileとの戦いの歴史と言っても過言でない
74 : >>72 気がついたら何の話だったかわからなくなっていた
75 : memory mapped i/oや割り込みなど特殊なハードウェア事情→volatile ただしvolatileはマルチスレッドの資源共有を想定して作られたものではないので マルチスレッドの資源共有にはメモリバリアや同期機構が必要 こんなイメージで合ってます?
76 : volatileはメモリリードの最適化に関するもの メモリバリアはメモリアクセスの順序性に関するもの
77 : >>75 あってるよ てか、毎回思うがC++03の仕様すら把握してないヤツが なんでこのスレ来るかねぇ。
78 : 1.9 プログラムの実行 1.10 マルチスレッド のたった 7 ページに volatile のすべてが書かれている。 百遍読むといい。そこにかかれていないことは全部都市伝説か独自拡張。 (1.10 で直接的に volatile に言及されているのは 第24段落だけだけど volatile 変数の読み込みが side effect として間接的にたくさん言及されてる)
79 : >>78 > (1.10 で直接的に volatile に言及されているのは 第24段落だけだけど > volatile 変数の読み込みが side effect として間接的にたくさん言及されてる) data raceの条件にvolatileが全く関係ない以上、volatileに実質的に関係ある 1.10の記述は第24段落だけだと思うけど。 # つーか1.10の記述は全体的に、side effectsにvolatile readも含まれることを # 忘れてるように見える。13段落のvisible side effectの定義なんて、 # "the value stored by the visible side effect" とか書いてるくらいだからなあ。
80 : いいかげんvolatileとthreadの話をやめないか
81 : やめなくていいけどWikiにでもまとめてテンプレ入りして欲しい
82 : とりあえず、これをテンプレに入れとこうぜ。 http://www.jpcert.or.jp/sc-rules/c-pos03-c.html
83 : template <typename T, typename U> [何か] add(T x, U y) {return x+y;} で、戻す型の名前をdecltype(x+y)以外で、 (できればTとUのみを使って)書きたいのですが、どうするんでしたっけ? 「decl何とか」ってのが他にもあった気がする。
84 : 自分で思い出したのですが、 decltype(declval<T>()+declval<U>()) ですね!
85 : まったく話題にならんけど、ローカルクラスを親クラスにキャストせずとも直接 テンプレートの引数に渡せるようになったのな。便利ぃ。
86 : これ、確認なのですが、 std::array<T,N> operator+(const std::array<T,N>&, const std::array<T,N>&); 以外に、 std::array<T,N>&& operator+(std::array<T,N>&&, const std::array<T,N>&); とか、他に&&が移動したバージョン作る必要ありますか? コピコンと代入演算子についてはもう実装されてるから、べつにこっちで何かする必要はないですよね? あと、arrayついでですが、コピコン・代入演算子って、 array<array<T,N>,M> lhs = rhs; みたいなのがあったときに、ネストした各要素までちゃんと期待した仕事してくれることは保証されてるんでしょうか? (deep copyとshallow copyの差みたいなのって標準ライブラリで気をつけたほうがいいことってありますか?)
87 : cpploverを読んで考えなおした。 template <typename T> std::array<T,2> operator+(const std::array<T,2>&& lhs, const std::array<T,2>&& rhs) { return std::array<T,2>{lhs[0]+rhs[0],lhs[1]+rhs[1]}; } これでいいのかな?
88 : これだけ実装しとけば、 typedef std::array<int,2> vec; vec x={1,2},y={3,4}; vec z=x+y;//op+(const vec&(&&省略), const vec&(&&省略))のあとにコピコン z=x+vec(5,6);//op+(const vec&, const vec&&)のあとに代入 って展開されていくと思っていい?
89 : 右辺値参照を理解していないなら無理して使わなくてもいいよ。 intのstd::arrayなんて右辺値参照を使ってもパフォーマンスは改善しないし。
90 : >>89 理解したいからやってみたんだけど・・・ ところでさっきのは&&省略がはたらかないから template <class vec> vec operator+(const vec&&,const vec&&); とするべきだったか?
91 : あと、rvalueをconstにしても何の意味もないからconst vec&&じゃなく単にvec&&とするべきか?
92 : 戻り値がintのコンテナ(順序気にしない)で上限サイズn(<10)が決まっている場合に、 何度も呼び出して一番高速な方法は以下のどれ? auto f() { forward_list<int> ret; ... return ret; } auto f() { v.clear();//vはどこかでreserve(n)されたvector<int> ... return v; } auto f() { s.clear();//vはどこかで作ったset<int> ... return s; } auto f() { u.clear();//uはどこかで作ったunordered_set<int> ... return u; } それ以外にもあれば教えてくれ。
93 : ● template <class T> f(T&&); と、 template <class T> f(Templ<T>&&); では 違う頭を使って考えよう。 (前者は T = const int& なども勝手に推論してくれるけど (constがついててもOK / 左辺値参照でもOK)、 後者は const Templ<T>& にマッチしない) ● 右辺値参照と deep/shallow copy はまったく関係がない。 この二つを連想してしまうならば、何か勘違いしている。規格を読み直そう。 ● > 他に&&が移動したバージョン作る必要ありますか? ある。ただし、& と && で動作が変わるものだけでいい。 ● > ネストした各要素までちゃんと期待した仕事してくれることは保証されてるんでしょうか? 保証されてる。ただし、「ムーブ」のデフォ動作はコピーすること。 ● > コピコンと代入演算子についてはもう実装されてるから、べつにこっちで何かする必要はないですよね? ある条件下のデフォルトコピーさんは D組に行ってしまった。 その条件下では、デフォルトムーブさんは作られないので注意。 ... = default; を明示的に書いておくといい。
94 : 不自由なソフト使うのは駄目なのに twitterみたいな不自由なサービスを使うのはいいのか?
95 : >>94 いまの時代にストールマンとかがどんな生活してるのか気になる。 ネットとか利権だらけで、生理的に無理だろw
96 : 個々人で判断すればよい。 その判断を人にとやかく言われる筋合いはないのでは。 脱税とか悪いことしてるんじゃないんだから。
97 : >>95 だからこそあれくらい苛烈に主張ないとバランスがとれないんだろ。
98 : 不自由なソフトウェアも不自由なサービスも使うべきではない と不自由な2chに書き込んでみる
99 : <━━━━━━━━> >━━━━━━━━━━< こうすると下の棒の方が一見長く見えます。これが目の錯覚です。
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
Embarcadero RAD Studio/Delphi/C++Builder その2 (173)
MFC、Win32++を超えるライブラリを作るスレ (902)
VB.NET質問スレ(Part38) (879)
★初心者にVisual C++を教えるスレ★ Part38 (304)
くだすれPython(超初心者用) その13 (590)
【激突】関数型言語 VS オブジェクト指向言語2 (997)
--log9.info------------------
プロはソフトとの対戦をさける卑怯者 第21局 (122)
甲斐智美女王・女流王位応援スレッド (551)
<新四段> 永瀬拓矢さん 応援スレッド (881)
中原十六世名人に今後やって頂きたい事 (696)
【あんみつ姫】 井道千尋 応援スレ Part6 (735)
女流棋士総合スレッド 第二十七局 (222)
【脚】上田初美 3 (104)
趣味で24のR急上昇者をチェックするスレ2 (946)
昼食・夕食・おやつ総合スレ 昼食はしご30軒目 (916)
第22回世界コンピュータ将棋選手権 Part6 (354)
ソフト開発者はタダでプロ棋士の指導を請う卑怯者 (211)
棋士のおもしろ画像を集めるスレPart2 (478)
史上最高の将棋棋士 (208)
【ボンクラ作者】ソフト>プロ【言いたい放題】 (949)
大山康晴(セコいことばっかして勝ちを拾う雑魚) (198)
森内の知名度と同じぐらいのものを挙げるスレ2 (461)
--log55.com------------------
【芸能】ジャニーズのふぉ〜ゆ〜「売れないうちに30すぎて…」M1出
【芸能】ベッキー第1子妊娠 1月に巨人片岡コーチと結婚
【BBC】女性の大相撲参加を目指して 日本人女性力士の願い
【プロ野球】松坂西武復帰へ
【オリックス】川栄李奈が第1子出産
【野球】元阪神の遠山奬志氏 浪速高監督に就任“松井キラー”解説者を経て異例の転身 392試合 16勝22敗5S 4.38
「スペインの奴らが僕の実力を見誤ってオファーを出さなかった」」本田圭佑 「33番」を選んだ理由も明かす!
【ラグビー】松島幸太朗、7人制ラグビーで五輪挑戦を初表明 福岡らと“スーパーカートリオ”再結成も