1read 100read
2012年5月プログラム69: C++11/C++1y 15 (284) TOP カテ一覧 スレ一覧 2ch元 削除依頼
愛国Ruby (346)
Visual Studio 2010 Part19 (122)
雑談スレ 4 (370)
マルチスレッドプログラミング相談室 その8 (978)
パーサーとか構文解析とかその他もろもろ (110)
【SICP】計算機プログラムの構造と解釈 Part3 (345)

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元 削除依頼
初心者の俺が初めて覚えるプログラム言語 (459)
C++相談室 part95 (482)
PHPを使って2ちゃんねるにHello Worldを書き込む (172)
Java 高速GUI SWT 3 (641)
PHPを使って2ちゃんねるにHello Worldを書き込む (172)
文字コード総合スレ part7 (645)
--log9.info------------------
☆☆☆ 市川由衣 Part38 ☆☆☆ (628)
こんな新垣結衣は嫌だ!part4 (876)
谷村美月その19 (332)
川口春奈 Part7 (143)
【金麦】 檀れい 9 【待賢門院】 (578)
【元ジェンヌ】白羽ゆり♪【天才お姫さま】-2 (168)
吉瀬美智子 part8 (531)
宮崎あおいのいい所をあげよう (475)
【当麻と】戸田恵梨香Part90【純子だよ】 (671)
演技派 福田麻由子 Part65 (955)
西原亜希3 (427)
【瞳が語る】西田尚美 Part3 (200)
肘井美佳 (405)
【今日の】朝倉あき☆10冊目【日誌当番】 (700)
満島ひかり Part.36 (1001)
○ 田中美里 partいくつか○ (103)
--log55.com------------------
HAPPY 1
音楽だいすきクラブ
54-71-3
GEEKSTREEKS
【TMSR】玉城 孝【tamaguro】
GOOD ON THE REEL
Jake stone garage4
UNDER THE COUNTER part5