C++11/C++1y 15
■ このスレッドは過去ログ倉庫に格納されています
0001営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:18:20.76http://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/
0002営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:20:23.26http://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/
0003営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:22:08.920004営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 18:21:44.82C++1yって次の規格のことか
0005営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 20:22:05.590006デフォルトの名無しさん
2012/04/11(水) 21:29:19.49ハッシュ計算アルゴリズムの規定はないからコンパイラが変われば結果は変わるだろうな
0007デフォルトの名無しさん
2012/04/12(木) 08:21:47.73すみません言葉足らずでした。
はじめてプログラムが実行される時、内部で未初期化の値が使用されて
プログラムを起動する度(≠実行する度)に前回と違ったハッシュ値になりうるかどうかです。
以前、boost::hash_combineで上記の様な再現性の無い結果にはまったことがあったのでstd::hashでもそうなのかなと思いまして。
0008デフォルトの名無しさん
2012/04/12(木) 09:06:05.42ハッシュ値の使用目的から常識的に考えて、そりゃバグだろ。
0009デフォルトの名無しさん
2012/04/12(木) 09:16:48.20セキュリティの観点から、
プロセス起動ごとに、ハッシュ値を変える仕組みを採用していることがあるんだ。
ソルトのようなものだと思ってもらいたい。
0010デフォルトの名無しさん
2012/04/12(木) 09:29:00.370011デフォルトの名無しさん
2012/04/12(木) 09:45:59.60そういうことになるかな。
0012デフォルトの名無しさん
2012/04/12(木) 14:29:51.48単一のローカルなプログラムが、その一度の実行中に限り、
コンテナーの実装で使用するために十分なハッシュ値の提供。
ハッシュ値を比較することで文字列などのビット列の一致を調べるとか、
他のプログラムと通信してハッシュ値のやり取りとか、
暗号関連に十分な強度のあるハッシュではない。
CRCとかSHAみたいなハッシュ値を期待してはいけない。
次の規格改訂では、ユーザー型をstd::hashに簡単に対応させるためのライブラリが追加される予定。
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3333.html
0013デフォルトの名無しさん
2012/04/13(金) 20:37:58.320014デフォルトの名無しさん
2012/04/14(土) 00:42:36.830015デフォルトの名無しさん
2012/04/14(土) 00:52:46.900016デフォルトの名無しさん
2012/04/14(土) 01:01:05.61<functional>なんかに入れんな
0017デフォルトの名無しさん
2012/04/14(土) 12:38:04.26でかいファイル同士の比較やロープ規模の文字列比較等
でかいデータの比較には重宝する
0018デフォルトの名無しさん
2012/04/14(土) 20:16:10.49istream& operator>>(istream& is, tuple<Ts...>& t) {
//カンマ区切りのデータをタプルの各要素に読み込む。
//is >> get<i>(t) ができると仮定。
}
この実装をboostつかわずにしたいのですが、どうすればいいでしょうか?
まずは空白区切りでもいいです。
0019デフォルトの名無しさん
2012/04/14(土) 21:58:27.37struct 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;
}
0020541
2012/04/14(土) 23:41:06.10ありがとうございます。
同じ方針で考えていましたが、
関数の部分特殊化ができないので挫折していました。
オブジェクトにすればよいのですね!
0021デフォルトの名無しさん
2012/04/15(日) 04:02:05.06まだ使えるコンパイラないだろ
0022デフォルトの名無しさん
2012/04/15(日) 04:45:48.28{
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>使ったほうが楽だぞ
0023デフォルトの名無しさん
2012/04/15(日) 06:23:07.31Clang
0024デフォルトの名無しさん
2012/04/15(日) 11:25:58.06めぼしい機能で実装されてないのは inheriting constructor くらい。
attributes さんはめぼしくないし
0025デフォルトの名無しさん
2012/04/15(日) 13:41:55.740026デフォルトの名無しさん
2012/04/15(日) 14:02:11.430027デフォルトの名無しさん
2012/04/22(日) 05:11:31.960028デフォルトの名無しさん
2012/04/22(日) 09:46:10.660029デフォルトの名無しさん
2012/04/22(日) 12:23:41.540030デフォルトの名無しさん
2012/04/23(月) 23:10:17.29人柱乙
0031デフォルトの名無しさん
2012/04/23(月) 23:33:31.080032デフォルトの名無しさん
2012/04/23(月) 23:41:24.490033デフォルトの名無しさん
2012/04/23(月) 23:42:38.32正しいと思わないが否定もしたくない
どんなに理にかなった選択でも本人の原動力なくして成就し得ないからな
とりあえず C++11 にラブラブなら、コンパイラや規格そのものの中の人をやってはいかがかな
GCC なんて手段に過ぎない、スクラッチででもやってやるって勢いで
0034デフォルトの名無しさん
2012/04/23(月) 23:43:50.220035デフォルトの名無しさん
2012/04/24(火) 01:01:11.09Windowsでも手軽に使えるようにして
MSVCやVS IDEなんか吹っ飛ばしてしまおうぜ
0036デフォルトの名無しさん
2012/04/24(火) 02:03:17.67Clangみたいな正統派でぶっ飛ばすのは無理ではないかと
0037デフォルトの名無しさん
2012/04/24(火) 02:11:06.640038デフォルトの名無しさん
2012/04/24(火) 02:16:23.160039デフォルトの名無しさん
2012/04/24(火) 06:58:52.840040デフォルトの名無しさん
2012/04/24(火) 07:13:34.730041デフォルトの名無しさん
2012/04/24(火) 08:19:48.24この差はすんごく大きいと思うよ
0042デフォルトの名無しさん
2012/04/24(火) 08:24:19.340043デフォルトの名無しさん
2012/04/24(火) 09:00:43.73未だにC言語ベースのAPIが基本な状況を鑑みるに
c++のコードを呼び出すようなギミックがボトルネックなのかも
COMもイマイチな感じだし
0044デフォルトの名無しさん
2012/04/24(火) 17:32:22.470045デフォルトの名無しさん
2012/04/24(火) 21:50:45.77Qtやら他のツールでも同等なのが有るがな
0046デフォルトの名無しさん
2012/04/25(水) 02:37:55.860047デフォルトの名無しさん
2012/04/25(水) 20:54:23.98std::rbegin(container_type&)とstd::rend(container_type&)が無いのは
片手落ちだよな
0048デフォルトの名無しさん
2012/04/25(水) 21:15:27.26std::cbegin/std::cendもないとか、accumute_nとかtransform_nとかinner_product_nとかがないとか、
std::u16printfとかがない(というか書式指定子さえない)とか、
何本手があっても落ちきれねぇな。
0049デフォルトの名無しさん
2012/04/25(水) 21:30:13.450050デフォルトの名無しさん
2012/04/25(水) 21:36:59.010051デフォルトの名無しさん
2012/04/25(水) 21:53:17.91セグメントに設置した外部変数じゃないと意味ないから
外部変数をオブジェクトにするならPODじゃないといけないし、
コンテナは使えない
0052デフォルトの名無しさん
2012/04/25(水) 22:07:52.340053デフォルトの名無しさん
2012/04/25(水) 22:14:34.62PODじゃないオブジェクトをPOD代わりに使うと危険だからな
0054デフォルトの名無しさん
2012/04/25(水) 22:26:24.03消えてなくなったわけでもないんだ
0055デフォルトの名無しさん
2012/04/25(水) 22:27:41.77trivial/non-trivial だな
0056デフォルトの名無しさん
2012/04/26(木) 00:18:58.250057デフォルトの名無しさん
2012/04/26(木) 00:46:31.450058デフォルトの名無しさん
2012/04/26(木) 10:08:51.40マルチスレッドで共有しているオブジェクトとか…
0059デフォルトの名無しさん
2012/04/26(木) 13:28:11.26マルチスレッドとvolatileは全く無関係。
0060デフォルトの名無しさん
2012/04/26(木) 13:59:58.86シグナルハンドラと共有しているオブジェクトとか…
0061デフォルトの名無しさん
2012/04/26(木) 14:09:22.281つのスレッドが読み書きして他スレッドが読むだけのアトミック変数は?
0062デフォルトの名無しさん
2012/04/26(木) 14:23:19.96シグナルハンドラと共有できるのは volatile sig_atomic_t 型。
任意のコンテナ型を共有することはできない。
>>61
アトミック変数って std::atomic のことか?
だったら、volatileとか関係なしにスレッドセーフだよ。
0063デフォルトの名無しさん
2012/04/26(木) 15:34:27.88std::array<volatile sig_atomic_t, 5>とかやったときに、
volatile sig_atomic_t *なイテレータが欲しいじゃないか。
と思ったが、引数の型を修飾してる時点で::iteratorがそうなるのか?
0064デフォルトの名無しさん
2012/04/26(木) 17:43:47.40うん
0065デフォルトの名無しさん
2012/04/26(木) 18:40:19.490066デフォルトの名無しさん
2012/04/26(木) 18:53:03.37――― プログラム技術@C++11スレ
0067デフォルトの名無しさん
2012/04/26(木) 20:39:41.14何スレ前かで、極めて特殊な条件じゃないと
無意味だと散々論破されてたろ。
過去ログ読め。それからスレッドでvolatile使う話はもうするな。
クソレスで無駄にスレが伸びる。
0068デフォルトの名無しさん
2012/04/26(木) 21:16:15.190069デフォルトの名無しさん
2012/04/26(木) 21:32:58.870070デフォルトの名無しさん
2012/04/26(木) 22:40:02.48その辺でメモリモデルの理解に混乱が生じるのかも
0071デフォルトの名無しさん
2012/04/26(木) 23:19:08.650072デフォルトの名無しさん
2012/04/26(木) 23:58:11.6173あたりからvolatileの話
0073デフォルトの名無しさん
2012/04/27(金) 00:20:39.61でもVCのスレッド用独自拡張で使えるからって混乱したり
なぜかatomicやrestrictの話が混ざってきて戦争になったり
メンバ関数のvolatile修飾を知らない初心者に乗っ取られたり
本の虫がvolatileなんか現代には必要ない遺物とかアホな事言い出して引っかき回したり
C++0xスレの歴史はvolatileとの戦いの歴史と言っても過言でない
0074デフォルトの名無しさん
2012/04/27(金) 01:45:02.36気がついたら何の話だったかわからなくなっていた
0075デフォルトの名無しさん
2012/04/27(金) 12:17:52.77ただしvolatileはマルチスレッドの資源共有を想定して作られたものではないので
マルチスレッドの資源共有にはメモリバリアや同期機構が必要
こんなイメージで合ってます?
0076デフォルトの名無しさん
2012/04/27(金) 15:18:49.06メモリバリアはメモリアクセスの順序性に関するもの
0077デフォルトの名無しさん
2012/04/27(金) 20:24:49.14あってるよ
てか、毎回思うがC++03の仕様すら把握してないヤツが
なんでこのスレ来るかねぇ。
0078デフォルトの名無しさん
2012/04/27(金) 21:51:06.981.10 マルチスレッド
のたった 7 ページに volatile のすべてが書かれている。
百遍読むといい。そこにかかれていないことは全部都市伝説か独自拡張。
(1.10 で直接的に volatile に言及されているのは 第24段落だけだけど
volatile 変数の読み込みが side effect として間接的にたくさん言及されてる)
0079デフォルトの名無しさん
2012/04/28(土) 15:18:27.98> (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" とか書いてるくらいだからなあ。
0080デフォルトの名無しさん
2012/04/28(土) 15:20:54.110081デフォルトの名無しさん
2012/04/28(土) 16:00:19.680082デフォルトの名無しさん
2012/04/28(土) 16:07:57.02http://www.jpcert.or.jp/sc-rules/c-pos03-c.html
0083デフォルトの名無しさん
2012/04/30(月) 23:04:56.57[何か] add(T x, U y) {return x+y;}
で、戻す型の名前をdecltype(x+y)以外で、
(できればTとUのみを使って)書きたいのですが、どうするんでしたっけ?
「decl何とか」ってのが他にもあった気がする。
0084デフォルトの名無しさん
2012/04/30(月) 23:08:01.82decltype(declval<T>()+declval<U>())
ですね!
0085デフォルトの名無しさん
2012/05/01(火) 15:02:17.85テンプレートの引数に渡せるようになったのな。便利ぃ。
0086デフォルトの名無しさん
2012/05/02(水) 05:38:16.07std::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の差みたいなのって標準ライブラリで気をつけたほうがいいことってありますか?)
0087デフォルトの名無しさん
2012/05/02(水) 05:53:11.98template <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]};
}
これでいいのかな?
0088デフォルトの名無しさん
2012/05/02(水) 05:59:43.43typedef 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&&)のあとに代入
って展開されていくと思っていい?
0089デフォルトの名無しさん
2012/05/02(水) 06:11:18.62intのstd::arrayなんて右辺値参照を使ってもパフォーマンスは改善しないし。
0090デフォルトの名無しさん
2012/05/02(水) 06:15:07.21理解したいからやってみたんだけど・・・
ところでさっきのは&&省略がはたらかないから
template <class vec>
vec operator+(const vec&&,const vec&&);
とするべきだったか?
0091デフォルトの名無しさん
2012/05/02(水) 06:18:41.450092デフォルトの名無しさん
2012/05/02(水) 07:10:14.36何度も呼び出して一番高速な方法は以下のどれ?
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;
}
それ以外にもあれば教えてくれ。
0093デフォルトの名無しさん
2012/05/02(水) 07:46:45.19違う頭を使って考えよう。
(前者は T = const int& なども勝手に推論してくれるけど
(constがついててもOK / 左辺値参照でもOK)、
後者は const Templ<T>& にマッチしない)
● 右辺値参照と deep/shallow copy はまったく関係がない。
この二つを連想してしまうならば、何か勘違いしている。規格を読み直そう。
● > 他に&&が移動したバージョン作る必要ありますか?
ある。ただし、& と && で動作が変わるものだけでいい。
● > ネストした各要素までちゃんと期待した仕事してくれることは保証されてるんでしょうか?
保証されてる。ただし、「ムーブ」のデフォ動作はコピーすること。
● > コピコンと代入演算子についてはもう実装されてるから、べつにこっちで何かする必要はないですよね?
ある条件下のデフォルトコピーさんは D組に行ってしまった。
その条件下では、デフォルトムーブさんは作られないので注意。
... = default; を明示的に書いておくといい。
0094デフォルトの名無しさん
2012/05/04(金) 09:08:31.85twitterみたいな不自由なサービスを使うのはいいのか?
0095デフォルトの名無しさん
2012/05/04(金) 21:54:20.93いまの時代にストールマンとかがどんな生活してるのか気になる。
ネットとか利権だらけで、生理的に無理だろw
0096デフォルトの名無しさん
2012/05/04(金) 21:55:01.85その判断を人にとやかく言われる筋合いはないのでは。
脱税とか悪いことしてるんじゃないんだから。
0097デフォルトの名無しさん
2012/05/04(金) 22:05:09.42だからこそあれくらい苛烈に主張ないとバランスがとれないんだろ。
0098デフォルトの名無しさん
2012/05/04(金) 23:24:05.45と不自由な2chに書き込んでみる
0099デフォルトの名無しさん
2012/05/04(金) 23:28:02.23>━━━━━━━━━━<
こうすると下の棒の方が一見長く見えます。これが目の錯覚です。
0100デフォルトの名無しさん
2012/05/04(金) 23:58:28.820101はちみつ餃子 ◆8X2XSCHEME
2012/05/05(土) 00:55:08.51■ このスレッドは過去ログ倉庫に格納されています