C++11/C++1y 15
レス数が1000を超えています。これ以上書き込みはできません。
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.510102デフォルトの名無しさん
2012/05/05(土) 01:20:06.740103デフォルトの名無しさん
2012/05/05(土) 04:21:58.550104デフォルトの名無しさん
2012/05/05(土) 04:36:57.910105デフォルトの名無しさん
2012/05/05(土) 07:53:42.71それを他人に主張する必要があるのか
それが分からないやつはダメだ
0106デフォルトの名無しさん
2012/05/05(土) 08:16:25.33それを他人に主張する必要あるの?
0107デフォルトの名無しさん
2012/05/05(土) 13:08:16.89array<int,n> xs={1,2};
cout << &xs[1] << endl;
array<int,n> ys = std::move(xs);
cout << &ys[1] << endl;
を見ると、moveが期待される仕事をしてないんですが、
(新たに領域確保し、xsの値をコピーしているようにみえる)
ys=my_move(xs)
によって、xsはundefし、ysはもともとxsが指していた格納領域を使うような
自前のmy_moveを作ることはできませんか?
0108デフォルトの名無しさん
2012/05/05(土) 13:10:39.620109デフォルトの名無しさん
2012/05/05(土) 13:12:10.21-Wallをつけると
array<int,n> xs={{1,2}};
と初期化リストを書かねばならん、というエラーが出ますが、
これって仕様的にはどうなってるんでしょうか?
0110デフォルトの名無しさん
2012/05/05(土) 13:13:36.11たしかにvectorでまったく同じことをやれば期待通りなんだけど、
sizeof(vector<int,2>)がでかすぎる。
0111デフォルトの名無しさん
2012/05/05(土) 13:14:41.89ミスった。
vector<int> xs = {1,2};
としたときの
sizeof(xs)のことね。
0112デフォルトの名無しさん
2012/05/05(土) 13:54:42.51当然だろ?
ムーブのデフォルト動作はコピー。
array の設計思想からしてコピーするしかない。
0113デフォルトの名無しさん
2012/05/05(土) 13:55:12.95それならシャローコピーのしようがないよね。
std::arrayのソース見てみればすぐわかると思うけど。
0114デフォルトの名無しさん
2012/05/05(土) 14:04:40.73確かに配列の確保の仕方を考えると仕方ない気がしないでもないが、
tuple<int,int>でも全く同じ問題が起こることに失望した。
結局自前でメモリ確保しろってか?
0115デフォルトの名無しさん
2012/05/05(土) 14:09:35.25array や tuple が malloc してたらそれこそ興ざめだろう
0116デフォルトの名無しさん
2012/05/05(土) 14:12:21.70intのムーブはコピー
0117デフォルトの名無しさん
2012/05/05(土) 14:23:12.01array<int,n>&& ys = std::move(xs);
でいいじゃんw
0118デフォルトの名無しさん
2012/05/05(土) 16:17:53.900119デフォルトの名無しさん
2012/05/05(土) 16:37:27.460120デフォルトの名無しさん
2012/05/05(土) 17:41:07.48古いの持ちだして申し訳ないが、
ttp://d.hatena.ne.jp/faith_and_brave/20080304/1204628281
にある次の例、
class person {
int age;
string name;
public:
person(person&& other)
: age(std::move(other.age)), name(std::move(other.name)) {}
};
でも、
person p{50,"hage"};
cout << &p.name << endl;
person q(move(p));
cout << &q.name << endl;
としたときズレてて、仕事してなくない?
0121デフォルトの名無しさん
2012/05/05(土) 17:43:55.77動的確保された文字列へのポインタを比較したいんなら static_cast<void*>(&p.name[0]) だろ。
0122デフォルトの名無しさん
2012/05/05(土) 17:55:34.19サンクス。お見逸れしました。
0123デフォルトの名無しさん
2012/05/05(土) 18:02:22.32int tmp = move(a);
a = move(b);
b = move(tmp);
moveを(どれか)外してコピーが増える?
0124デフォルトの名無しさん
2012/05/05(土) 18:10:46.91に対してmoveとか頑張りどころが皆無なんだけど、何かある?
0125デフォルトの名無しさん
2012/05/05(土) 18:34:41.55>>124 No
0126デフォルトの名無しさん
2012/05/05(土) 18:38:43.490127デフォルトの名無しさん
2012/05/05(土) 18:46:45.91と
constexpr int two() {return 1+1;}
って違いはありますか?
0128デフォルトの名無しさん
2012/05/05(土) 18:55:38.75constexpr関数にはinlineを指定できる。
普通の関数と何ら変わりない。
0129デフォルトの名無しさん
2012/05/05(土) 18:57:50.02この流れだと、その説明がいちばんしっくりくるわ。
ポインタとか動的に確保されるコンテナには有効だと。
0130デフォルトの名無しさん
2012/05/05(土) 19:03:01.82なるほど。
・constexprを指定しないとコンパイル時定数としてtwo()が使えない
・inlineを指定しないとインライン展開したい気持ちが伝わらない
(inline指定したところでインライン展開されるかどうかはコンパイラの最適化とかによる、と聞いたことがある)
ってことでいい?
0131デフォルトの名無しさん
2012/05/05(土) 19:06:04.04あと、そもそもコピーという概念のないリソースもある。
開かれたファイルとかソケットとかスレッドとか。
もちろん、一部の環境ではハンドルの複製なんてこともできるが。
0132デフォルトの名無しさん
2012/05/05(土) 19:16:48.54違わないよ。
7.1.5/2
> ... constexpr functions and constexpr constructors are implicitly inline.
0133デフォルトの名無しさん
2012/05/05(土) 19:18:53.69なんとなくだけど、そういうことになってるんじゃないかと思って質問してみたんだ。
ありがとう。
0134デフォルトの名無しさん
2012/05/05(土) 19:19:51.80constexpr constructor
って初めて聞いたけど、どこで使うんだ?
0135デフォルトの名無しさん
2012/05/05(土) 19:27:24.330136デフォルトの名無しさん
2012/05/05(土) 19:49:56.95のデフォルトって、
X::X(X&&)の定義から派生するもの?
そうだとすると
X(X&&)を定義して終わりでもよい?
0137デフォルトの名無しさん
2012/05/05(土) 19:53:27.720138デフォルトの名無しさん
2012/05/05(土) 19:56:01.930139デフォルトの名無しさん
2012/05/05(土) 19:56:37.05なるほど。
なんか新概念の量がやばいことにいまさら気づきはじめた。
いままでライブラリの部分しか見てなかったけど、仕様書の言語機能の部分も読み込むべきなのか?
自分は単なる1ユーザなんだが、ストラウップの新しい本が出たところで全部カバーできるとはとても思えん・・・。
0140デフォルトの名無しさん
2012/05/05(土) 20:02:00.12this->~X();
new (this) X(std::move(other));
return *this;
でダメなケースってのは無かったりするのかな?
0141デフォルトの名無しさん
2012/05/05(土) 20:02:05.75実は、ちょうどそれっぽいこと(?)をやろうとしていたんだ。
だけど性能の面で、
constexpr array<int,2> f(int&& x, int&& y) { return array<int,2>{x,y}; }
と
constexpr array<int,2> f(const int& x, const int& y) { return array<int,2>{x,y}; }
の違いって下の例で見える?
int main()
{
const int x=1,y=2;
array<int,2> xs = f(x+y,x*y);
array<int,2> ys = g(x+y,x*y);
}
0142デフォルトの名無しさん
2012/05/05(土) 20:02:50.460143デフォルトの名無しさん
2012/05/05(土) 20:04:47.09例もクソも、その2つのオーバーロードで性能面の差が出る理由が無い。
0144デフォルトの名無しさん
2012/05/05(土) 20:07:17.73あくまでコンパイル時に使うかどうか、なのか。
0145デフォルトの名無しさん
2012/05/05(土) 20:10:55.36コンパイル時にはないなぁ・・・(笑)
0146デフォルトの名無しさん
2012/05/05(土) 20:20:34.800147デフォルトの名無しさん
2012/05/05(土) 20:27:35.27(コンパイラが悲鳴あげそうだけど)コンパイル時FFTとか、いいね!
けどそこまでやるには、やっぱtuple上でfor文とか、
せめてmap-reduce程度の操作ができないと辛いよな。
(色々やろうと考えたことはあるけど諦めた)
0148デフォルトの名無しさん
2012/05/05(土) 21:31:04.81using namespace std;
struct X {
const int x;
X(const int& x): x(x) {}
X(const X&) = delete;
X& operator=(const X&) = delete;
X(X&& rhs): x(move(rhs.x)) {
cout << "called X(X&&)" << endl;
}
X& operator=(X&& rhs) {
cout << "called operator=(X&&)" << endl;
return *this = X(move(rhs));
}
};
int main()
{
X a = X(2);
cout << a.x << endl;
}
・・・誰が呼ばれたの?・・・
0149デフォルトの名無しさん
2012/05/05(土) 21:32:43.69コンストラクタだろ
0150デフォルトの名無しさん
2012/05/05(土) 21:49:43.37これは代入じゃなくて初期化だ。
0151デフォルトの名無しさん
2012/05/05(土) 21:53:02.43C++相談スレか、初心者向けのスレに行けよ
C++03の仕様すら知らないのに背伸びするな
0152デフォルトの名無しさん
2012/05/07(月) 03:48:07.06コンパイル時DFTなら既にあるぞ
http://d.hatena.ne.jp/boleros/touch/20120430/1335794930
0153デフォルトの名無しさん
2012/05/11(金) 20:23:40.94最適化で消える
0154デフォルトの名無しさん
2012/05/12(土) 01:53:51.87いやいや
X(const int&)
が呼ばれたということで質問者本人は納得したぞ。
恥さらしなので、しばらく初心者スレに行ってました(笑
0155デフォルトの名無しさん
2012/05/12(土) 02:52:36.50その後の話が聞きたかったんじゃないのか
0156デフォルトの名無しさん
2012/05/13(日) 01:43:49.350157デフォルトの名無しさん
2012/05/20(日) 10:16:03.52template <int i> struct int2type {}
って、どこだっけ?
0xで標準のどこかに入ったと思ってたけど勘違いか?
メタプロのあたり見ても出てこない・・・
0158デフォルトの名無しさん
2012/05/20(日) 10:37:59.58お騒がせ〜。
0159デフォルトの名無しさん
2012/05/20(日) 12:17:02.83ここは C++11/C++1y スレなので C++03 は関係ないし
右辺値参照を使っているレスに頓珍漢なこと言ってんじゃねえ
おまえこそ cfront 1.0 や ARM C++ の知識はあるのか
0160デフォルトの名無しさん
2012/05/20(日) 13:06:41.48は?一つ前の規格ぐらい把握してから来いっつうのは当たり前だろ。
なんでC++お勉強スレでも無いのにそんな一つ前の規格調べれば
わかる内容を、手とり足取り教えなきゃならん。
ここは、新規格部分の内容や影響を話し合う隔離スレだろうが。
>おまえこそ cfront 1.0 や ARM C++ の知識はあるのか
前規格と関係ないだろ理論的に考えられんのか?
そんな思考じゃデバッグも苦手だろプログラマーやめっちまえ
0161デフォルトの名無しさん
2012/05/20(日) 13:13:16.30何でC++相談室と分離されてるかよく考えろよ
0162デフォルトの名無しさん
2012/05/20(日) 13:25:36.65「1つ」前ってのはおまえが勝手に言っていることで
俺は承認していないぞ
前提の置き方が主観的なやつこそプログラマなんか務まってねえだろどーせ
0163デフォルトの名無しさん
2012/05/20(日) 13:39:43.76えっと、あほな質問した本人ですが、
>>148
の
X a = X(2);
は、
X a(2);
に化ける、つまり
X(const int&);
が一回呼ばれて終わり、
ということで納得したんだけど。
右辺値参照は関係ないということでよい?
0164デフォルトの名無しさん
2012/05/20(日) 13:48:06.32C++11の新機能(stringで何かあったっけ?)使ってtokenizerかんたんに(短く)実装できたりしないかな。
・・・しないか。
あと、正規表現はGCCにまだ載ってないけど、載ったところでAPIがややこしすぎるから
簡単な用途で使わない気がする。乱数もそう。短くかけないから使うとしてもrandom_deviceだけ・・・。
0165デフォルトの名無しさん
2012/05/20(日) 13:50:20.180166デフォルトの名無しさん
2012/05/20(日) 14:06:06.21C++03の話でスレを埋めて何の意味が有るんだ?
0167デフォルトの名無しさん
2012/05/20(日) 14:08:41.7103の範疇ですむ話をされてもノイズなんだよ。
解らないだろうなぁ。
0168デフォルトの名無しさん
2012/05/20(日) 14:21:28.28お前が知ってるかはどうでも良くて常識で
考えて空気を読めよって話じゃね?
0169デフォルトの名無しさん
2012/05/20(日) 14:55:47.79文法上は化けないが、最適化によりムーブが省略される事が規格上許されてるので
最適化でムーブが省略されている
とりあえず無関係な代入演算子を削除した上で、
コピーもムーブも = delete してみ
コンパイルできなくなるから
0170デフォルトの名無しさん
2012/05/20(日) 17:24:00.82ムーブが関係あるかどうか聞いているのに何バカ言ってんだよ
おまえこそ「ムーブが出てくる C++03」の隔離スレ作ってこもったまま二度と出てくるなドアホ
0171デフォルトの名無しさん
2012/05/20(日) 17:48:40.830172デフォルトの名無しさん
2012/05/20(日) 20:17:25.73そもそも疑問にも思わんな
0173デフォルトの名無しさん
2012/05/20(日) 20:37:26.410174デフォルトの名無しさん
2012/05/20(日) 21:51:45.09いや質問者が「このスレくんな」って言われた瞬間、思い出したくらいだから、まともな対応だったと思うよ。
もうやめようぜ、せっかくのスレが埋まってしまうから。
0175デフォルトの名無しさん
2012/05/21(月) 00:25:24.06ここでは関係なくね
0176デフォルトの名無しさん
2012/05/23(水) 21:27:03.45WikipediaでC++11の項目をみると
Further high-level threading facilities such as thread pools have been remanded to a future C++ technical report.
とある。これに関してご存知の方いたら、どんな議論が現在なされているのか教えてもらえませんか。
ちなみに欲しい機能は本当に単純で、
int main() {
const int N = 100000;
static int a[N];
static int m
#pragma omp parallel for private(m)
for (int i=0; i<N; ++i) {
m=i;
a[i]=m;
}
}
程度のもの。threadの数とかは決め打ちでいいです。
0177デフォルトの名無しさん
2012/05/23(水) 21:39:13.60確かRVO以前の問題で
X object( 10 );と、X object = X( 10 );は
どちらかが構文糖だったはず。
どのコンパイラでもコピコンとか
別のコンストラクターは介入しない
ようになってたと思う。
0178デフォルトの名無しさん
2012/05/23(水) 21:43:02.71・ループの中身を別の関数で書いて
・thread数だけのプールにその関数をぶっこんで
・main内でthreadをjoinする
と書くことはできるだろうけど、
これだけのためにコードをわかりにくくする必要がないと思っていて、
この作業を抽象化したものがWikipediaで言われているthread poolだろう、
そして、それはOpenMPなみに直感的なものになるだろうと思うんだけど。
簡単にそういう高レベルな内容を実装できると思うならアイディアください。
0179デフォルトの名無しさん
2012/05/23(水) 21:49:04.65というのがあるみたいですね。
0180デフォルトの名無しさん
2012/05/23(水) 22:02:19.43canであってmustじゃない
C++ 12.8
when a temporary class object that has not been bound to a reference (12.2)
would be copied to a class object with the same cv-unqualified type,
the copy operation can be omitted by constructing the temporary object directly into the target of the omitted copy
0181デフォルトの名無しさん
2012/05/23(水) 23:10:52.48後者はテンポラリ+コピーとして解釈する必要がある。
それが直接初期化になるのは最適化として許されていること。
そのため後者ではコピーコンストラクタが private だったりすると
エラーにしなければならない。
というわけで構文糖ではないね。
0182デフォルトの名無しさん
2012/05/23(水) 23:12:54.74この本のターゲットに上級者は含まれるんだろうか・・・。
0183デフォルトの名無しさん
2012/05/23(水) 23:54:07.50よくわからんけどこれじゃだめ?
http://codepad.org/FwKwrASd
0184デフォルトの名無しさん
2012/05/24(木) 00:57:18.09すぐ見られる仕様書が手元にないしどこに乗ってたか忘れてたが、
一時オブジェクトについての仕様じゃなくコンストラクターに
ついての仕様で書いてあったと思う
コンストラクター以外の関数が同じオブジェクトを返す場合とは
別問題だったはず
0185デフォルトの名無しさん
2012/05/24(木) 01:06:40.7012.6.1 Explicit initialization
1. (略) [Example:
:
complex c = complex(1,2); // construct complex(1,2)
// using complex(double,double)
// copy/move it into c
:
-- end example]
0186デフォルトの名無しさん
2012/05/24(木) 05:32:05.48これはすごい。ほとんどfor_eachじゃないですか!
イテレータの部分を分離すればもっと綺麗になりそうだし。
これはSTLに組み込んでほしいですね。
勉強になります。
0187デフォルトの名無しさん
2012/05/24(木) 05:34:32.89Intel TBBは知ってる?
0188デフォルトの名無しさん
2012/05/24(木) 16:38:32.58お、知らなかった。
OpenMPとの力関係とか性能比較とか探してみようかな。
ところでスレッドプールと言いましたが、今日Javaの本で調べてみたら
OpenMPのforに対応するものはbarrierパターンと呼ぶようです。
並列for_eachだと終わった時にスレッドが破棄されてしまうのに対し、
mainのなかで再利用し続ける感じになるそう。
スレッドの生成と破棄にどの程度コストかかるのかよく分かりませんが。
0189デフォルトの名無しさん
2012/05/24(木) 16:45:00.060190デフォルトの名無しさん
2012/05/24(木) 16:52:02.55本も出てるんですね。
若干スレチになってしまいましたが、ありがとうございます。
0191デフォルトの名無しさん
2012/05/24(木) 17:26:56.49という項目があって、それに対する回答は
「もしOpenMPがそのまま動くのであればそっちを使ってください。ぶっちゃけ作った人は同じです。TBBのメリットはアルゴリズムやデータのレベルで並列化するところにある」
ってことを言っていました。STLパラダイムにのっかったプログラムを並列化するならTBBってことのようですね。
C++1yに搭載されることを期待したい。
てか、APIはすごい良い感じだからstdにそのまま入れても遜色ないと思うが。
0192デフォルトの名無しさん
2012/05/24(木) 17:49:58.76for(auto &x: xs){x=x*x;}
とか書いておくだけで勝手に並列化してくれる時代はいつか来るのだらうか。
0193デフォルトの名無しさん
2012/05/24(木) 22:11:06.35テレビ・冷蔵庫・電子レンジ・電子ピアノ・ミサイル・タンク・人工衛星。
世の中スレッドはともかく「マルチコアなんそれ」って環境は多い。
そういう環境で並列計算ライブラリなんか導入され手も役に立たないし、
PC用ソフトとライブラリを共有しようと思っても、並列計算が使われてたら
パフォーマンスが落ちるんで寧ろ邪魔になる。
0194デフォルトの名無しさん
2012/05/25(金) 00:38:56.42そういう freestanding なのはそもそも現状でも隔離されてるじゃないの
0195デフォルトの名無しさん
2012/05/25(金) 01:31:53.53今でもそれぐらいなら自動並列化が頑張ってくれるでしょ
C系言語の場合は特に、ポインタが混ざり始めたりして依存関係がわけわかんなくなると
最適化に困難が生じてはしまうが……
0196デフォルトの名無しさん
2012/05/25(金) 06:08:45.53大型家電でフリースタンディングは無いべ。
リアルタイムOSとか入ってて、いわばシングルコアの
非力なPC状態
0197デフォルトの名無しさん
2012/05/25(金) 06:44:27.18そういう問題ではないの?
0198デフォルトの名無しさん
2012/05/25(金) 07:29:47.440199デフォルトの名無しさん
2012/05/25(金) 10:33:21.66コンパイラが対応してなければ無視されるようになってるな
0200デフォルトの名無しさん
2012/05/25(金) 18:20:26.25void f(T x){
[&] {
auto y = x;
std::cout << (&x == &y) << std::endl;
}();
}
int main()
{
f(0);
}
gcc-4.7 だと true が表示されるんだけど、
これは正しい動作なのか、バグなのか。
0201デフォルトの名無しさん
2012/05/25(金) 18:21:05.14要するに超環境依存。そんなものを標準ライブラリに入れる価値がない。
0202デフォルトの名無しさん
2012/05/25(金) 18:25:44.21非明示的な型をautoで推論するとconst referenceが最優先されるからバグじゃない。
0203デフォルトの名無しさん
2012/05/25(金) 19:32:42.74マルチスレッド自体は標準に存在すべき。
I/Oの問題は組み込みだろうが、PCだろうが
スレッドが必要になる。
要らないのは、並列計算ライブラリ。
スレッド == 高速化というわけではない
0204デフォルトの名無しさん
2012/05/25(金) 19:38:41.350205デフォルトの名無しさん
2012/05/25(金) 20:30:58.73しかしラムダがなければ false になるんだぜ…
template <class T>
void f(T x){
auto y = x;
std::cout << (&x == &y) << std::endl;
}
難しいもんだな
0206デフォルトの名無しさん
2012/05/25(金) 20:48:16.40だとすると>>202は正しくない。
ラムダがあってreferenceとして推論されるのは「[&]」で参照キャプチャされるからだと思う。
難しいというか、基礎的な知識から導く部類の問題だね。
0207デフォルトの名無しさん
2012/05/25(金) 21:10:44.060208デフォルトの名無しさん
2012/05/25(金) 21:11:47.640209208
2012/05/25(金) 21:33:00.95http://ideone.com/2rP8E
http://ideone.com/0R81y
0210デフォルトの名無しさん
2012/05/25(金) 21:39:04.547.1.6.4
6. auto の型推論は、関数テンプレートの呼び出しで、テンプレート引数に使われるものと同じ。
(auto を template <class U> の U で置き換えて、推論する)
template <class U>
void g(U z){ z = 2; }
template <class T>
void f(T x){
[&] {
std::cout << x << std::endl;
auto y = x; // auto が int& に推論されるなら
y = 1;
std::cout << x << std::endl;
g(x); // U も int& に推論されるはず
std::cout << x << std::endl; // x は変更されたか?
}();
}
int main(){ f(0); }
結果:
0
1 // auto は int& になった
1 // U は int になった
0211デフォルトの名無しさん
2012/05/25(金) 21:44:27.430212デフォルトの名無しさん
2012/05/25(金) 21:59:14.13実装あるいは思考の道具であるべきプログラミング言語が
それ自体複雑すぎて理解困難とかもうね
0213デフォルトの名無しさん
2012/05/25(金) 22:29:27.730214デフォルトの名無しさん
2012/05/26(土) 00:13:32.811秒おくれてに到達したとこで、なにがかわるのか?
1mはなれた位置に到達したとこで、なにがかわるのか?
0215デフォルトの名無しさん
2012/05/26(土) 00:25:45.44とは言え、ミサイルなんてPS2流用してる程度の性能だけど
0216デフォルトの名無しさん
2012/05/26(土) 01:06:30.45ラムダの中の x というのは f の引数の x ではなく、
ラムダにキャプチャされた x を指す
参照でキャプチャしてるから x は当然 T への参照になる
0217デフォルトの名無しさん
2012/05/26(土) 01:13:50.407.1.6.4 読んだ?
0218デフォルトの名無しさん
2012/05/26(土) 01:23:23.340219デフォルトの名無しさん
2012/05/26(土) 03:44:28.390220デフォルトの名無しさん
2012/05/26(土) 16:13:38.110221デフォルトの名無しさん
2012/05/26(土) 16:58:40.01と書けるのに
for_each(xs.begin(),xs.end(),[](auto& x){...})
とは書けない。
これなんで?
0222デフォルトの名無しさん
2012/05/26(土) 17:07:28.930223デフォルトの名無しさん
2012/05/26(土) 17:27:33.58ラムダだって template <class T> operator()(T a) っつーメンバ関数を持つオブジェクトってことにすればいい
>>219,220
5. Expressions
5. If an expression initially has the type "reference to T" (8.3.2, 8.5.3),
the type is adjusted to T prior to any further analysis.
7.1.6.4 auto specifier
6. (省略)
14.8.2.1 Deducing template arguments from a function call
4. In general, the deduction process attempts to find template argument values
that will make the deduced A identical to A
というわけなので、最初に T& が T 型へ修正される以上、
auto x = y; の x が参照になることはありえない。
0224デフォルトの名無しさん
2012/05/26(土) 19:38:32.990225デフォルトの名無しさん
2012/05/26(土) 19:44:49.04そんな事したらstd::functionに突っ込めなくなるがな
0226デフォルトの名無しさん
2012/05/26(土) 20:38:45.93auto f = [](const T& x){return x*x;};
名付けて「テンプレートラムダ」
template using ... と似ててよくね?
ここまでやって本当の関数型言語と呼べるだよ(笑)。
0227デフォルトの名無しさん
2012/05/26(土) 20:40:50.24テキトーな思いつきなのでautoは決定不能w
0228デフォルトの名無しさん
2012/05/26(土) 20:40:51.78(C++で関数型と呼べるのは部分特殊化による演算ぐらい)
0229デフォルトの名無しさん
2012/05/26(土) 20:42:03.92template <typename T> auto f = [](const T& x){return x*x;} + 1;
って書いたら結果どうなるんだよ
0230デフォルトの名無しさん
2012/05/26(土) 20:43:41.12誰か助けて〜
0231デフォルトの名無しさん
2012/05/26(土) 20:53:36.99operator+が定義されてないって怒られるんじゃないでしょうか。
autoに問題があるようには見えない。
0232デフォルトの名無しさん
2012/05/26(土) 20:57:49.95int (functions)(void)[] = { function1, funciton2 };
(functions + 0)();
(functions + 1)();
ポインターならこういう演算ができる事しってる?
関数オブジェクトは、ローカル変数に依存しなければ
関数ポインターになるので演算自体はできる。
0233デフォルトの名無しさん
2012/05/26(土) 21:07:16.63そもそもラムダが生成された時点でラムダの実体を作り、
Memberのアドレスを決定せにゃならん。
ましてや、autoに代入する以上実体は必須。
なのでどうあがいても無理。
0234デフォルトの名無しさん
2012/05/26(土) 21:11:14.68うぇっ初見。
関数ポインタなんか消えてしまえばいいのにw
0235デフォルトの名無しさん
2012/05/26(土) 21:21:13.35拒否反応起こすヤツが居るんだ
どんだけC++11スレのレベル下がってんだよ
0236デフォルトの名無しさん
2012/05/26(土) 21:26:16.61じゃないのか
0237デフォルトの名無しさん
2012/05/26(土) 21:27:37.64*も付けてなかったしな。ゴメン間違えた。
0238デフォルトの名無しさん
2012/05/26(土) 21:28:56.44int (*functions[])(void) = { function1, funciton2 };
だわ
これ配列型だから演算出来て当然だよ
関数ポインタは演算出来ない
0239デフォルトの名無しさん
2012/05/26(土) 21:33:12.85せやろか?
0240デフォルトの名無しさん
2012/05/26(土) 21:34:38.700241デフォルトの名無しさん
2012/05/26(土) 21:37:00.60それC89じゃないですかー
0242デフォルトの名無しさん
2012/05/26(土) 21:39:04.07仮想関数テーブルは構造体なんで微妙に違うけどな。
struct struct_A_table
{
int (*FunctionA)();
int (*FunctionB)(int);
int (*FunctionC)(int);
};
struct A
{
static const struct_A_table vtable;
};
0243デフォルトの名無しさん
2012/05/26(土) 21:39:18.650244デフォルトの名無しさん
2012/05/26(土) 21:39:28.74どれでも同じだろうが
0245デフォルトの名無しさん
2012/05/26(土) 21:39:34.01gcc拡張だろ
0246デフォルトの名無しさん
2012/05/26(土) 21:40:37.65おれMicrosoftのコンパイラー持ってないから
MSのアレでやってみてくれ
0247デフォルトの名無しさん
2012/05/26(土) 21:44:52.95clangでも行ける
0248デフォルトの名無しさん
2012/05/26(土) 21:46:50.500249デフォルトの名無しさん
2012/05/26(土) 21:47:36.360250デフォルトの名無しさん
2012/05/26(土) 21:48:27.660251デフォルトの名無しさん
2012/05/26(土) 21:55:52.440252デフォルトの名無しさん
2012/05/26(土) 21:58:58.87-pedantic-errors をつけないと拡張機能が有効のまま
0253デフォルトの名無しさん
2012/05/26(土) 22:26:18.36の後でこの流れw
クッソワロタ
結論:使わないが吉。
0254デフォルトの名無しさん
2012/05/26(土) 22:45:01.201. A function is not an object,
5.7 Additive operators
For addition, either (略), or one operand shall be a pointer to a completely-defined object type
and the other shall have integral or unscoped enumeration type.
関数へのポインタの配列(もしくはポインタ)と、
関数へのポインタ自身とを混同しちゃいかん。
そして関数へのポインタは、a pointer to a completely-defined object type
ではない(なぜなら関数はオブジェクトではない)から、加算はできない。
C++11以前の問題だ。
0255デフォルトの名無しさん
2012/05/26(土) 22:46:00.82関数ポインターはともかく、関数ポインターの配列は必須だろ
割り込みベクターとかハードウェアが要求するコールバックに
オブジェクトの配列なんて指定できんからな
0256デフォルトの名無しさん
2012/05/26(土) 22:56:46.02-std= 付けても残る拡張機能って、どんなのがあるの?
0257デフォルトの名無しさん
2012/05/26(土) 23:01:00.19関数ポインタの演算じゃね
0258デフォルトの名無しさん
2012/05/26(土) 23:02:17.370259デフォルトの名無しさん
2012/05/26(土) 23:30:30.87longが64bitのUnix系統はともかく、Windowsは、128bit CPU出たらどうする気だ?
0260デフォルトの名無しさん
2012/05/26(土) 23:35:39.76最小サイズ、レジスタサイズ、最大サイズ以外は全部intxx_tでいいよ
0261デフォルトの名無しさん
2012/05/26(土) 23:41:08.200262デフォルトの名無しさん
2012/05/26(土) 23:59:38.47super long
ultra long
very long
long
int
short
very short
ultra short
super short
extremely short
こうですね
0263デフォルトの名無しさん
2012/05/27(日) 00:16:48.06128bit必要ならint128_tも作られるさ
0264デフォルトの名無しさん
2012/05/27(日) 00:29:10.170265デフォルトの名無しさん
2012/05/27(日) 00:35:52.81intXX_tってGCC拡張じゃなかったっけ?
0266デフォルトの名無しさん
2012/05/27(日) 00:38:46.95メタプロやるときめっちゃ使う。
int64_tだと、桁数カウントしたいときとかもいちいち特殊化で対応しないといけないから。
0267デフォルトの名無しさん
2012/05/27(日) 00:39:46.78そういう話は出なかったのかな?
いまさらだけど・・・。
0268デフォルトの名無しさん
2012/05/27(日) 00:46:25.21つstd::numeric_limits<T>
0269デフォルトの名無しさん
2012/05/27(日) 00:57:58.95それじゃ足りないときもあるんだよ。
0270デフォルトの名無しさん
2012/05/27(日) 01:02:58.051bitとか7bitとか中途半端な場合は自動変数の場合のみコンパイルエラーにすりゃいい
int value:64;
int value:128;
0271デフォルトの名無しさん
2012/05/27(日) 01:45:15.47C99で標準化
C++11でも採用
0272デフォルトの名無しさん
2012/05/27(日) 01:50:30.04ttp://ideone.com/lYklg
0273デフォルトの名無しさん
2012/05/27(日) 01:56:08.75std::int_least<64>::type
std::int_fast<64>::type
std::int_exact<64>::type /* error if not supported */
って書かせてくれてもよかったのに。
0274デフォルトの名無しさん
2012/05/27(日) 02:50:39.420275デフォルトの名無しさん
2012/05/27(日) 03:27:20.570276デフォルトの名無しさん
2012/05/27(日) 07:26:52.95またお前か
0277デフォルトの名無しさん
2012/05/27(日) 21:03:43.490278デフォルトの名無しさん
2012/05/27(日) 22:42:27.930279デフォルトの名無しさん
2012/05/27(日) 23:39:54.330280デフォルトの名無しさん
2012/05/28(月) 00:47:41.210281デフォルトの名無しさん
2012/05/28(月) 00:51:56.94アンダーバーが付いた予約語なんてやだよ
>>280
汎用機だと、16bitが1バイトだったりするから
0282デフォルトの名無しさん
2012/05/28(月) 08:56:00.680283デフォルトの名無しさん
2012/05/28(月) 19:48:19.8524bitフルカラーの色数でもあるし、それなりに使いどころもある
0284デフォルトの名無しさん
2012/05/29(火) 12:13:04.040285デフォルトの名無しさん
2012/05/30(水) 22:50:04.77std::vector<int> v{5,6,4,3,2,6,7,9,3};
某サイトでサンプルに使われてるんだけど・・・。
0286デフォルトの名無しさん
2012/05/30(水) 23:01:17.79C++03と称してサンプルに使ってるならそのサイト晒せ
0287デフォルトの名無しさん
2012/05/30(水) 23:09:16.68ttp://www2.research.att.com/~bs/
0288デフォルトの名無しさん
2012/05/30(水) 23:31:30.80貴様ごときがC++について語ってんじゃねぇ。即刻閉鎖しろ、ってクレーム出しといてね。>>285
0289デフォルトの名無しさん
2012/05/30(水) 23:32:32.02もうC++といえばC++11じゃん? 的に書いてるだけだと思うよ
0290285
2012/05/31(木) 00:55:10.36オメー誰だよw
このサイトのnth_elementの項目。
http://en.cppreference.com/w/cpp/algorithm
たぶん移行中なんだろうから、許してあげて。
0291デフォルトの名無しさん
2012/05/31(木) 01:34:13.82なに上から目線で言ってんだw
工事中のところが多いが11が基本で98/03に関してのほうがおまけのサイトじゃないか
0292デフォルトの名無しさん
2012/05/31(木) 06:12:18.500293デフォルトの名無しさん
2012/05/31(木) 07:17:30.10nth_element自体はC++11じゃなくても使えるからC++11って書いてないだけだと思うよ
0294デフォルトの名無しさん
2012/05/31(木) 07:40:05.990295285
2012/05/31(木) 08:25:47.72言われてみるとそのようだ。自分の早とちりでした。
けど、自前で11使ってると03に戻るのがしんどくて、つい書きそうになる。
0296デフォルトの名無しさん
2012/05/31(木) 09:54:35.97ありがとう
0297デフォルトの名無しさん
2012/05/31(木) 20:19:30.860298デフォルトの名無しさん
2012/05/31(木) 20:26:29.56__propertyなんかは構文糖だから適当にパーサ弄れば済むだろうけど
delphireturnとかレジスタの使い方レベルの互換を取るのはどーすんだ?
0299デフォルトの名無しさん
2012/05/31(木) 20:50:23.82まったく調べないで言ってるけどclang/LLVMに全て丸投げってことなんじゃないの?
0300デフォルトの名無しさん
2012/05/31(木) 23:59:01.79VCL使えないと=Delphiと互換を取らないと=旧C++Builderの拡張構文を残さないと、
C++Builderである意味が無いじゃん。
いくらなんでも流石にパーサに手を入れるなりはすると思うんだが。
全部丸投げなら、Windows用のclangのIDE、っていう新製品になってしまう。
0301デフォルトの名無しさん
2012/06/01(金) 01:19:31.14どうしてこうなった
0302デフォルトの名無しさん
2012/06/01(金) 01:35:25.91MFCやWTL/ATLを改装する必要が出てくるからじゃろ。
で、改装すれば当然今度は互換性の検証が待っている。
というよりも、Visual StudioからC++が消えて
C++/CXオンリーになる時代も近い。
0303デフォルトの名無しさん
2012/06/01(金) 01:38:14.200304デフォルトの名無しさん
2012/06/01(金) 12:40:30.33Win32+COMも同じように使えるなら・・・
0305デフォルトの名無しさん
2012/06/01(金) 13:30:34.21どんだけ化石だよ
今は、VM上でしか動作しない、インタプリタ系のC#やJAVAが主流だろ
0306デフォルトの名無しさん
2012/06/01(金) 13:57:43.650307デフォルトの名無しさん
2012/06/01(金) 19:24:24.85いや、未だCがトップで主流だけど
0308デフォルトの名無しさん
2012/06/01(金) 19:40:32.030309デフォルトの名無しさん
2012/06/01(金) 19:45:11.260310デフォルトの名無しさん
2012/06/01(金) 19:50:24.52まぁ、もっとも実際に使われるかどうかとは別だけど
普及度で言えばCとC++で1, 2になるだろうし
ゲーム屋とかパッケージ屋じゃ相変わらずC++が主流だし
サーバーもFastCGI勢(PHPやらPythonやら)のせいでJavaやC#の普及がいまいち
受注かホビーユーザーばかりが使うからなかなか大きく広まれない
0311デフォルトの名無しさん
2012/06/01(金) 22:43:25.18がわをC#ってのはよくある話
0312デフォルトの名無しさん
2012/06/01(金) 22:45:23.600313デフォルトの名無しさん
2012/06/01(金) 22:47:07.33がわはC#でつくるなんてありえないだろ
あのもっさり、ちんたら感w
0314デフォルトの名無しさん
2012/06/01(金) 22:51:58.48Pythonとかよっぽど生産的だぞ
0315デフォルトの名無しさん
2012/06/01(金) 23:00:32.450316デフォルトの名無しさん
2012/06/01(金) 23:11:27.95ただ、pythonのが手軽かな。
なんか組み込みはluaが増えてるけど。
0317デフォルトの名無しさん
2012/06/01(金) 23:14:31.22どう組み合わせるかはスクリプト。
組み合わせの制御だけなら
もっさりも糞もない。
0318デフォルトの名無しさん
2012/06/02(土) 00:40:47.45組み合わせの制御ってのも良く分からんが、
その、組み合わせの制御とやらはC++では記述しにくいのか?
C++の方がベクトルクラスや行列クラスに演算子のオーバーロードがあるから
よほど記述性は高いと思うが。
0319デフォルトの名無しさん
2012/06/02(土) 01:39:36.79C++の処理呼び出すイベントハンドラの登録削除したり。
ポインタ管理が要らなかったり、with的なモノが使えたり、
抽象化クラスの定義が不要だったり色々捗る
0320デフォルトの名無しさん
2012/06/02(土) 18:18:35.46C#で画面作成という計画はいくつか見てきたが
そのほとんどが大失敗してる。
あるプロジェクトはC#プログラマの能力不足のせいで破綻した。
C++使える人間はコアロジックにまわされるから、画面を作ってるのは
まともな経験のないなんちゃってプログラマになるという構図がまずかった。
0321デフォルトの名無しさん
2012/06/02(土) 18:22:32.16のっけから失敗だよw
大抵、UIはVCL,Qt、MFC、WTLでやる。
WIN32APIのみは、なかなかないな
0322デフォルトの名無しさん
2012/06/02(土) 19:05:54.190323デフォルトの名無しさん
2012/06/02(土) 21:01:39.580324デフォルトの名無しさん
2012/06/02(土) 21:06:16.950325デフォルトの名無しさん
2012/06/03(日) 01:24:15.35外部コマンドの呼び出しをスクリプト化しとくと、多少修正が必要でも
再コンパイルが要らないから便利だ。特にPythonとかbatをスクリプトとして使うと便利。
Pythonは、スクリプトとして使うためのエンジンがboostにあるし、
batならWindowsであれば動く。
0326デフォルトの名無しさん
2012/06/03(日) 02:27:01.05何でC++はstd::stringと数値を比較できるように作ってないんだろ
1 == "10あ"とか数値以外混じってたら、falseでいいし難しくないだろうに
0327デフォルトの名無しさん
2012/06/03(日) 02:34:47.720328デフォルトの名無しさん
2012/06/03(日) 11:32:49.850329デフォルトの名無しさん
2012/06/03(日) 11:34:56.23確かに 10 == "10"は困るが、10 == std::string( "10" )なら
困ることないだろ。遅いかもしれんが、んなもん使う側の問題だし。
0330デフォルトの名無しさん
2012/06/03(日) 12:04:23.680331デフォルトの名無しさん
2012/06/03(日) 12:13:30.890332デフォルトの名無しさん
2012/06/03(日) 12:17:17.540333デフォルトの名無しさん
2012/06/03(日) 12:24:05.37それを言ったらThreadなんてore::threadで良かったろうが
>>331
テンプレートで使えない
0334デフォルトの名無しさん
2012/06/03(日) 12:24:54.800335デフォルトの名無しさん
2012/06/03(日) 12:25:40.86テンプレートで使えん
0336デフォルトの名無しさん
2012/06/03(日) 12:27:04.880337デフォルトの名無しさん
2012/06/03(日) 12:27:58.34それとatoiは事前判定するか、errnoに依存してエラーチェックが必要になる
それぐらいだったら、std::stringstreamの方がマシ。
ただ、どちらもテンプレートでの汎用性はない。
0338デフォルトの名無しさん
2012/06/03(日) 12:31:06.28そんなに有用だと思うんならハゲに直談判するといいよ。
ハゲは必要なものは採用してくれるハゲだから。
0339デフォルトの名無しさん
2012/06/03(日) 12:37:13.03実際自分で演算子定義して使ってたりすんだけどね
SelfType &ChangeLevel( const Type &level )
{
if( !( 0 <= level && level <= 8 ) ) throw InvalidValueError<Type>( key );
this->level = key;
return *this;
}
※浮動少数系の比較演算子にならい、どちらかが数字でないなら
大小に関わらずfalseに倒れる
文字列の変換コストが掛かるが、キャッシュしてるので
2回目以降は速い。
0340デフォルトの名無しさん
2012/06/03(日) 12:39:09.80SelfType &ChangeLevel( const Type &level )
{
if( !( 0 <= level && level <= 8 ) ) throw InvalidValueError<Type>( level );
this->level = level;
return *this;
}
0341デフォルトの名無しさん
2012/06/03(日) 13:08:28.47{
class string: public std::string
{
public:
// 比較演算以外は完全に std::string と互換で相互に変換可
template <class ...Args>
string(Args&& ...args): std::string(std::forward<Args>(args)...){}
// 独自の比較オペレータ
operator bool() const {
if(this->empty()) return false;
if(*this == "false") return false;
try{ return !!std::stoi(*this); } catch(...){}
return true;
}
};
// ore::string 独自の演算子定義
:
}
0342デフォルトの名無しさん
2012/06/03(日) 13:17:17.12突っ込みどころ満載ではあるが、それはともかく標準であることに意義があるんだよ。
自作なら既に出来てる。
0343デフォルトの名無しさん
2012/06/03(日) 13:22:06.470344デフォルトの名無しさん
2012/06/03(日) 13:24:28.15その前にこの方法で何がマズイかここで叩く事はできるだろ?
0345デフォルトの名無しさん
2012/06/03(日) 13:24:44.53比較時に勝手に(しかも文字列が)変換される具体的な詳細なんて
合意がとれるわけない。
誰でも簡単に小労力で自分の好みに比較を実装できるんだから
好き勝手にやればいい
0346デフォルトの名無しさん
2012/06/03(日) 13:25:35.290347デフォルトの名無しさん
2012/06/03(日) 13:27:13.120348デフォルトの名無しさん
2012/06/03(日) 13:32:48.03インタプリター系言語だと何故合意がとれてるの?
2番目の理由だと、<tuple>とか不要じゃね
一行書けば誰でも作れるじゃん
0349デフォルトの名無しさん
2012/06/03(日) 13:36:08.82これはたぶん暗黙の型変換の類の話だな。
暗黙の型変換はCに在ったからC++に引き継がれたが、
暗黙の型変換はC++ではオーバーロードとの酷い競合を引き起こすから、
決して褒められたものではないのはC++erなら常識だよな。
C++は暗黙の型変換とオーバーロードでオーバーロードを選択したから、
これ以上に暗黙の型変換を増やすことはもう無いだろう。
もし、数値型と文字列を直接比較したいのなら、
==オペレータのオーバーロードで解決するのがC++流ってことになる。
0350デフォルトの名無しさん
2012/06/03(日) 13:38:52.880351デフォルトの名無しさん
2012/06/03(日) 13:39:05.440352デフォルトの名無しさん
2012/06/03(日) 13:41:30.64javascript のバージョンによって、ブラウザによって、
0 == "0" の意味は変わってきた(はず)
それはつまりコンセンサスが取りづらいということ。
0353デフォルトの名無しさん
2012/06/03(日) 13:41:45.93std::string( "0" ) == 0 でなんか問題あるの?
0354デフォルトの名無しさん
2012/06/03(日) 13:42:38.38最初にきちんとrationaleでも書いてみては。
0355デフォルトの名無しさん
2012/06/03(日) 13:45:48.920 == "0"がtrue以外の何になるの?
型まで判定するときは 0 === "0" じゃないと
ECMAScriptの規格外でしょ
0356デフォルトの名無しさん
2012/06/03(日) 13:47:29.43一貫してstd::stringと数値の比較って言ってない?
0357デフォルトの名無しさん
2012/06/03(日) 13:47:45.520は数値なのかヌルポなのか分からないもんな。
このように、暗黙の型変換とオーバーロードは非常に相性が悪い。
C++にC由来の暗黙の型変換を残してしまったのは失敗だったね。
0358デフォルトの名無しさん
2012/06/03(日) 13:50:08.09そもそも""はタダのchar配列で、std::stringじゃないでしょ。
0359デフォルトの名無しさん
2012/06/03(日) 13:51:11.72ECMAScript が普及する前の話だよ。
=== が登場したのは 0 == "0" になってほしくない人々への言い訳だよ(多分)
スクリプト、というとき ECMAScript だけを念頭に置いているなら簡単じゃないか。
std::ECMAScript_string が欲しいって提案すれば事足りる
0360デフォルトの名無しさん
2012/06/03(日) 13:53:27.01Effective C++にある通り、自動の型変換は危険でダーティ。C++では使わないに越したことはない。
それをどうしても必要としていて、なおかつ速度もきにしないのだから、C++で組む価値はない。
0361デフォルトの名無しさん
2012/06/03(日) 13:54:28.61ECMAって規格に順次てないから問題になったんでしょ
そりゃC++だって規格に準じてなきゃどんな機能だって同じじゃん
現にC++11だって規格違反のコンパイラーはいっぱいある。
規格に成立させる上で何が問題かが重要でしょ。
0362デフォルトの名無しさん
2012/06/03(日) 13:56:17.68厳密には暗黙の型変換じゃないし、型安全も変わらないんだけど。
型で保証される事は、実行時でも保証される訳じゃん。
0363デフォルトの名無しさん
2012/06/03(日) 13:57:35.90少なくともEffective C++にはそう書いてあるようにしか自分には読めなかったが…(不勉強であることは認める)
0364デフォルトの名無しさん
2012/06/03(日) 13:58:32.410365デフォルトの名無しさん
2012/06/03(日) 13:59:54.11あなたの型安全の定義を教えてもらえるかな?
私としては、実行時に型違反に伴うエラーが起きず
コンパイル時にチェックされることだと思ってるけど。
0366デフォルトの名無しさん
2012/06/03(日) 14:00:40.31それで困ることあるの?
0367デフォルトの名無しさん
2012/06/03(日) 14:06:21.70型安全の定義はそのとおりだが、
10 == "10" という構文を許すためにはどちらかに自動の型変換が必要になる。
自動の型変換(コンストラクタにせよoperatorにせよ)そのものがC++では危険(必ずしも1対1に対応しないケースが往々にして生じる)なので、
この構文を許す機構が型安全でなくなる…というのがEffective C++の主張だったように思う。
0368デフォルトの名無しさん
2012/06/03(日) 14:13:57.83それも、暗黙ではなく、明示的に呼び出す形が推薦される。
変な予約語を追加してまで、わざわざそうした。
(予断だが、型変換オペレータもあるが、危険なので、今は誰も使っていない)
そこまでして暗黙の型変換を徹底的に排除する姿勢が今のC++。
std::string::compareが数値型を取ることは、C++の現状にマッチしていないのだよ。
0369デフォルトの名無しさん
2012/06/03(日) 14:23:07.15operator Type()の話じゃないの?
比較演算子とか他のオーバーロードとは別物だと思う。
>>339-340にも書いたと思うけど、文字と数値を比較して
文字列に数字以外が混じっていればfalse。これは、
doubleのNaNと同じ動作だから問題にはならない筈で
型安全に問題をきたす事は無いと思うよ。
0370デフォルトの名無しさん
2012/06/03(日) 14:44:29.13ああ、なるほど。
bool operator ==( int, string const & );
bool operator ==( string const &, int );
のような類を記述するってこと?それなら問題ない。
しかし、やはり標準には入れられない。
なぜなら、char*やstringの中に記述された数値列をどう扱うかは
人によって直感的でないから。
これはCording Standardsの主張だったはず。
0371デフォルトの名無しさん
2012/06/03(日) 14:45:03.94boostもalgorithmもオーバーロードによる型変換を使ってるけど、オーバーロードも含めダメってのは
どこら辺を参考にすれば乗ってる話?MFCとかMS系はひどすぎるので勘弁して欲しい。
0372デフォルトの名無しさん
2012/06/03(日) 14:53:35.11他にも数値型はある。std::std::complexや独自のものなど。
これらについての扱いをどうするのか考えなければならない。
さらに、compareだけ対応するのはおかしいので、assignやappend、その他にもこれを許す必要がある。
型*対応メソッドで爆発するから型変換をオーバーロードでサポートするのは現実的ではない。
だから型変換は別で行ったほうが良い。しかし、オーバーロードの関係上、型変換は明示的に行う必要がある。
明示的に行うということは、明示的に記述するのだが、
問題は、C++で型変換の記述がいまいち一本化されていないところ。
通常はコンストラクタで代用するが、基本型はクラスを持たないし、加えてC++はオープンクラスではないから、
後から拡張することが出来ない。
型変換はコンストラクタで一本化するとして、
後から拡張できるように、
コンストラクタをクラス外にも定義できるようにしてもらいたいところだね。
0373デフォルトの名無しさん
2012/06/03(日) 15:00:20.51了解。「Cording Standards」はこういう名前の文章があるの?
何かの一部に書いてあるの?
>>372
std::istringstreamが対応してる型だけでいいじゃん。
他は、各自対応すればいい。メンバー関数じゃないから拡張できる。
あと、assingやappendは数値型と互換性がないから意味が無いでしょ
元々、数値型と同じテンプレートが使えるってのがメリットなんだし。
数値型にできない事ができてもしかたない。
0374デフォルトの名無しさん
2012/06/03(日) 15:05:32.81boost::lexical_castが標準に入ればいいんじゃないかと
0375デフォルトの名無しさん
2012/06/03(日) 15:09:11.850376デフォルトの名無しさん
2012/06/03(日) 15:10:38.830377デフォルトの名無しさん
2012/06/03(日) 15:14:40.06>元々、数値型と同じテンプレートが使えるってのがメリットなんだし。
なら、std::stringについて、数値型で行える+や+=などの演算も対応するのか?
しかも str += i; は誰がもう見ても文字列ベースのappendにしか見えないのに、
実際には数値ベースの+=が行われるのか?
文字列と数値を同じように扱いたいなら、まず型を合わせることを考えたほうが良い。
型さえあってれば何の問題も無いのだから。
今回の話であれば、文字列を数値として扱いたいって話だから、
intのコンストラクタに int( std::string & ) が有れば良いはなし。
C++はクラス外でのコンストラクタの拡張を認めてないけどね。
0378デフォルトの名無しさん
2012/06/03(日) 15:14:44.12そもそも、C++のロケールは、マルチバイト考慮してない糞だけど。
0379デフォルトの名無しさん
2012/06/03(日) 15:17:29.39+=に比較演算子程のメリットがあればね。
×数値型の仕様の範囲を逸脱
○数値型の仕様の範囲に満たない
とは考えてる。
0380デフォルトの名無しさん
2012/06/03(日) 15:28:46.82C++標準で、std::string( "0" ) == 1 が認められるなら、
std::string( "0" ) + 1 も認められないと。
比較だけ特別に認めるって変な仕様を標準化委員会が認めるとでも?
std::string( "0" ) + 1
しかしこれは、文字列ベースの結合なのか、数値演算の+なのか、
仮に数値演算の+動作だったとしても、
戻り値は文字列なのか整数型なのか、わけが分からないだろ。
だからまずは型を合わせることを考えるのだ。
型さえあってればその先で問題は出ないのだから。
std::string( "0" ) + std::string( 1 ) //文字列ベースの結合、戻り値std::string。
int( std::string( "0" ) ) + 1 //数値演算の+、戻り値int。
問題は、C++で型変換の方法がいまいち統一されていないところ。
0381デフォルトの名無しさん
2012/06/03(日) 15:32:37.85コンテナに演算子として比較演算子と
代入演算子だけが認められてるんだから、なぁ・・・
0382デフォルトの名無しさん
2012/06/03(日) 15:36:29.10std::string( "0" ) == 1 を認めるってのは、言語全体の根本の、演算の定義の話だぞ。
0383デフォルトの名無しさん
2012/06/03(日) 15:45:49.94あくまで数値ベースでの比較であるっていう暗黙さ加減はどうするよ。
ちゃんと型変換してから比較すれば、そういった曖昧さはなくなるんだよ。
0384デフォルトの名無しさん
2012/06/03(日) 17:31:00.80auto然り、初期化リスト然り、コンストラクター継承然り、
無名関数のメモリー管理然り。iostreamで型に合わせて
暗黙で型変換してた時代から大してその姿勢は変わってないけど。
0385デフォルトの名無しさん
2012/06/03(日) 17:42:39.83string だけ特別扱いするわけにもいかないから
結局任意の型を数値型と比較できないといけなくなって、
それだったらやっぱり明示的に型変換したほうが
一貫性がとれてていいんじゃないの。
0386デフォルトの名無しさん
2012/06/03(日) 17:51:07.56std::string以外も対応させなきゃいけない理由が解かんない
I/O Streamだって後で作った型は自分でなんとかしろって感じだし
あれに合わせりゃいいじゃん
0387デフォルトの名無しさん
2012/06/03(日) 17:51:28.96== じゃなくて関数にするべき
スクリプト言語くらいいい加減ならともかく
0388デフォルトの名無しさん
2012/06/03(日) 17:55:29.15Boostの入出力系統や、アルゴリズム関係はもっと複雑なことする演算子を定義してるね。
0389デフォルトの名無しさん
2012/06/03(日) 17:59:28.810390デフォルトの名無しさん
2012/06/03(日) 18:21:10.29シリアライズ系も同様。
しかし、
std::string( "0" ) == 1
の場合は、文字列で比較するのか数値で比較するのかが不明。
0391デフォルトの名無しさん
2012/06/03(日) 19:41:09.65std::string("10.0") == 10
std::string("1.00000000001") == 1.00000000001f
どれがtrueでどれがfalseになるのかわからん
0392デフォルトの名無しさん
2012/06/03(日) 20:25:13.48std::string側にtraitみたいな感じで定義もたせときゃいいじゃん
iostreamだってtraitとは違うけどできてる訳だし
0393デフォルトの名無しさん
2012/06/03(日) 20:26:20.06数値で比較する意味はあっても文字で比較する意味なくね?
どう足掻いても数値型の上限以上は比較しようが無いんだから。
0394デフォルトの名無しさん
2012/06/03(日) 20:32:44.06大小比較まで考えたら、文字コードでやるのと数値でやるので結果変わるし。
0395デフォルトの名無しさん
2012/06/03(日) 20:58:03.08文字をどう数字として見なすかは、たとえatoiだろうが、
scanfだろうが、iostreamだろうが、どれを使っても同じ問題があるんじゃね。
0396デフォルトの名無しさん
2012/06/03(日) 21:00:45.200397デフォルトの名無しさん
2012/06/03(日) 21:21:30.95どうしようもないのは同じハズですが?違いと言えば、atoiが代入先の変数に
縛られないぐらいでしょう。どのみちatolとか関数名で振り分けるんで大差ないですが。
0398デフォルトの名無しさん
2012/06/03(日) 22:17:08.370399デフォルトの名無しさん
2012/06/03(日) 22:31:49.890400デフォルトの名無しさん
2012/06/03(日) 22:57:51.30std::string("10") + std::string("100") == 10100
どーちだっ?
0401デフォルトの名無しさん
2012/06/03(日) 23:18:40.05+は==より結合力が強い
0402デフォルトの名無しさん
2012/06/03(日) 23:29:52.02何が嬉しいんだよ
0403デフォルトの名無しさん
2012/06/03(日) 23:40:01.57ぜんぜん違う。たとえば、scanfは引数で明示的にフォーマットを指定できる。
16進数のときは「x」などなど。
std::string("FFFF") == 0xFFFF //どうなるんでしょうね
scanfで↑こんな間抜けな問題は発生しない。
0404デフォルトの名無しさん
2012/06/03(日) 23:49:59.19というか、scanfファミリーとstrto*ファミリーぐらいか。
とは言え、通常はtraitとロケールで指定しときゃ十分だよね。
通常16進数か10進数ぐらいしか使わない訳だし。
0405デフォルトの名無しさん
2012/06/04(月) 00:06:48.32std::string("FFFF") == 0xFFFF
と同じ問題を抱えているのはiostreamだけだ。
0406デフォルトの名無しさん
2012/06/04(月) 00:17:02.110407デフォルトの名無しさん
2012/06/04(月) 06:10:40.510408デフォルトの名無しさん
2012/06/04(月) 17:00:34.780409デフォルトの名無しさん
2012/06/04(月) 20:32:56.240410デフォルトの名無しさん
2012/06/04(月) 21:31:27.72遅れたけど、Cording StandardsはC++ Cording Standardsっていう書籍名。
ハーブサッターとかが執筆していて、Effective C++みたいな本。
0411デフォルトの名無しさん
2012/06/04(月) 21:37:26.28std::string("10") + std::string("100") == 10100 // true
0412デフォルトの名無しさん
2012/06/05(火) 00:57:11.300413デフォルトの名無しさん
2012/06/05(火) 20:30:36.38>std::string("10") + std::string("100") == 10100 // true
下はともかく、上がtrueになるって発想がプログラマーとして終っとるわ
文字結合を数値に倒す言語が一つも存在しない事を考えりゃ上はありえん
0414デフォルトの名無しさん
2012/06/05(火) 21:01:02.790415デフォルトの名無しさん
2012/06/05(火) 21:11:38.33違う。「どっちもありえない」んだよ。
+は結合順位が左から右だから 0 + std::string("10") を処理する時点で
文字列と数値のどっちを優先するのか決めておく必要が生じる。
もしこれを文字列として扱うなら
std::string("100") == 110
という単一の式も110側を文字列に変換しないといけない。
文字列を数値に自動変換することを許してしまうと
>>411の上で良いことになってしまう。
0416デフォルトの名無しさん
2012/06/05(火) 21:14:23.07>文字列を数値に自動変換することを許してしまうと
>>>411の上で良いことになってしまう。
の部分はカットね。
0417デフォルトの名無しさん
2012/06/05(火) 21:26:41.13他の言語にならえばいいじゃんそんなの。
無名関数や正規表現まで取り込んだなら
ゼロコストであるかぎり問題ないだろ
0418デフォルトの名無しさん
2012/06/05(火) 21:27:42.52別にC++は至高の言語でも究極の言語でもないんだから。
クソみたいな曖昧さはもうこれ以上結構。
0419デフォルトの名無しさん
2012/06/05(火) 21:29:13.44既に似たような仕組みがあるし
0420デフォルトの名無しさん
2012/06/05(火) 21:29:35.71はるかに偉いおっさんどもが長くかけたんで
いまさらここで「なんで?」とか言っても気持ち悪いだけなんだけどね…
0421デフォルトの名無しさん
2012/06/05(火) 21:31:14.10他の言語にないC++だけが最初に実装した機能だけで十分
0422デフォルトの名無しさん
2012/06/05(火) 21:31:30.390423デフォルトの名無しさん
2012/06/05(火) 21:51:16.87実際そういうのができるものもあって、喧々諤々、結局削ったんだよな。
それでもなお、ベンダーどもが譲らなかったせいでstringクラスはあんな「物知りっく」なクラスにw
0424デフォルトの名無しさん
2012/06/05(火) 21:52:57.89stringの議論は十年以上前に決着がついてる。
単にここの人たちが周回遅れなだけ。
0425デフォルトの名無しさん
2012/06/05(火) 22:04:58.36とりあえず致命的な指摘も無かったので、
boostのIRCで向こうの意見を伺うことにしました。
ご意見ありがとうございました。
0426デフォルトの名無しさん
2012/06/05(火) 22:12:15.01どう見ても貧相だろ
せめてマルチバイト対応ぐらいするべきだ
おかげで皆ベンダー実装ばかり使う
0427デフォルトの名無しさん
2012/06/05(火) 22:13:51.440428デフォルトの名無しさん
2012/06/05(火) 22:19:46.42参照できない。iteratorも文字単位じゃなく型単位でしか参照できない。
仮に型を1文字に合うように作ってもcharやwchar_tじゃないんで
std::ifstreamとかから取り込めない。
0429デフォルトの名無しさん
2012/06/05(火) 22:22:51.40他の言語なら暗黙で文字列がStringに変換されて
直接比較できるように見える。
他の言語なら普通な表現だろ
0430デフォルトの名無しさん
2012/06/05(火) 22:26:36.300431デフォルトの名無しさん
2012/06/05(火) 22:29:52.60そしてそれをプログラマ人口で欧文比例して、
普通といえるかどうかを議論しよう。うん。
0432デフォルトの名無しさん
2012/06/05(火) 22:37:29.58文字列の方が扱う広いのに、文字列のほうを数値に合わせるって時点で暗黙の変換とも言いにくいし。
0433デフォルトの名無しさん
2012/06/05(火) 22:42:09.790434デフォルトの名無しさん
2012/06/05(火) 22:45:37.040435デフォルトの名無しさん
2012/06/05(火) 22:46:58.12最初から同じ土俵にいないっていうか、戦う相手を間違えているというか
0436デフォルトの名無しさん
2012/06/05(火) 22:47:53.550437デフォルトの名無しさん
2012/06/05(火) 22:50:18.52土俵云々関係ないだろうが
だったら正規表現も
無名関数も土俵が違うだろ
0438デフォルトの名無しさん
2012/06/05(火) 23:12:52.080439デフォルトの名無しさん
2012/06/05(火) 23:13:28.490440デフォルトの名無しさん
2012/06/05(火) 23:18:27.89どの言語ならなっとくすんだよw
0441デフォルトの名無しさん
2012/06/05(火) 23:20:09.280442デフォルトの名無しさん
2012/06/05(火) 23:21:44.91そろそろどうでもいいや
0443デフォルトの名無しさん
2012/06/05(火) 23:26:03.50つVB.net
0444デフォルトの名無しさん
2012/06/05(火) 23:28:29.18vbならしょうがない
0445デフォルトの名無しさん
2012/06/08(金) 21:51:21.51"C++11"の読みって"しーぷらぷらいちいち"でよいのか?
0446デフォルトの名無しさん
2012/06/08(金) 22:50:46.540447デフォルトの名無しさん
2012/06/09(土) 01:26:48.210448デフォルトの名無しさん
2012/06/09(土) 07:31:07.990449デフォルトの名無しさん
2012/06/09(土) 10:16:47.510450デフォルトの名無しさん
2012/06/09(土) 15:06:58.12http://shinh.skr.jp/yomikata/#C%2B%2B11
しーぷらすぷらすじゅういちとしーぷらぷらじゅういちがあっとうてきなとうひょうすうでわんつーふぃにっしゅです
0451デフォルトの名無しさん
2012/06/09(土) 23:19:07.28Themeをスウィームと読むかテーマと読むか、
Directをドゥルゥクトと読むかダイレクトと読むかぐらいどうでもいい
0452デフォルトの名無しさん
2012/06/09(土) 23:58:38.22良いんですかね?
0453デフォルトの名無しさん
2012/06/10(日) 00:04:41.820454デフォルトの名無しさん
2012/06/10(日) 01:27:59.42ATAPIならアタピーって読む
0455デフォルトの名無しさん
2012/06/10(日) 05:30:39.50PATA パタ,ピーアタ
ATA アタ
0456デフォルトの名無しさん
2012/06/11(月) 11:57:11.690457デフォルトの名無しさん
2012/06/11(月) 14:20:30.190458デフォルトの名無しさん
2012/06/11(月) 14:25:01.85ニーマルイチイチ
ニセンジュウイチ
0459デフォルトの名無しさん
2012/06/12(火) 12:14:17.470460デフォルトの名無しさん
2012/06/12(火) 13:37:10.680461デフォルトの名無しさん
2012/06/12(火) 21:04:03.640462デフォルトの名無しさん
2012/06/12(火) 21:35:04.73C++00+yの方が自然だろうに
0463デフォルトの名無しさん
2012/06/13(水) 07:30:53.260464デフォルトの名無しさん
2012/06/13(水) 21:11:00.950465デフォルトの名無しさん
2012/06/13(水) 22:22:28.62規格にはなってないんだよな。いつになったら規格書に乗るんだ?
ま、別に規格にならないほうがメモリー分散して
スレッドを生かした実装とかできて便利だと思うが
0466デフォルトの名無しさん
2012/06/13(水) 22:30:54.460467デフォルトの名無しさん
2012/06/13(水) 22:37:27.76C言語の仕様に異常に詳しい皆様、助けに来てください
0468デフォルトの名無しさん
2012/06/13(水) 22:39:32.600469デフォルトの名無しさん
2012/06/13(水) 22:42:44.050470デフォルトの名無しさん
2012/06/13(水) 23:41:15.31文字列を介してfloatを正確に移動するには
同じサイズの整数型を中継するしか無い
fprintf(fp, "%u\n", *(unsigned*)&a);
fscanf(fp, "%u\n", (unsigned*)&a);
註:どの整数型が最適かは環境依存。
C99ならもうちょい移植性の高い書き方もできるけど、
floatのサイズが4バイトである事を仮定しないと面倒になるのは変わらない
参考 : http://seclan.dll.jp/c99d/c99d09.htm
もちろん出力される文字列はfloatとしての値を
容易に想起できるものではないけど、
正確さは保証される
小数値として出力してしまうと常に誤差との戦いになる
正確に移動できる場合もあるけど、できない場合もある
正確さが必要なら、可読性は犠牲にせざるを得ない
0471デフォルトの名無しさん
2012/06/13(水) 23:46:36.34小数を16進数で出力するので精度を上げれば正確に出力できる
0472デフォルトの名無しさん
2012/06/14(木) 01:15:07.44MSのVC2010はprintで%a使えるがscanでは使えないという糞だな
0473デフォルトの名無しさん
2012/06/14(木) 01:27:55.270474デフォルトの名無しさん
2012/06/14(木) 01:47:02.80本当は指数部、仮数部、符号に分解してそれぞれ整数で保存するのが一番だろうけど
標準の範囲で出来たっけ
0475デフォルトの名無しさん
2012/06/14(木) 07:22:07.54別の環境で表現出来ないとか出てくるので、
そうなると100%再現不可能なケースがどうしても出てくるだろうな
0476デフォルトの名無しさん
2012/06/14(木) 08:45:11.02frexp
0477デフォルトの名無しさん
2012/06/14(木) 09:02:56.13人間というのは16進数で表現された浮動小数点数が読める異常な人間ではなく
そのへんにいる中学2年生の女の子を想定してください
いろんな人やいろんなコンピュータに読んでほしいです
なので本当の意味で正確に移動したいわけではなく
%Eで表現できる範囲でよくて(%Eで表現できる範囲が実装依存なのかは分かっていない)
その出力入力で(許される範囲で)値が同じことのテストが書きたいだけなのですが
floatのフォーマットや計算誤差についての説明を受けるなど厳しい対応を受けています
0478デフォルトの名無しさん
2012/06/14(木) 09:12:59.360479デフォルトの名無しさん
2012/06/14(木) 09:13:12.090480デフォルトの名無しさん
2012/06/14(木) 09:57:31.25すみません
ところで別の話題ですが、C++にはstd::scientificやstd::hexfloatがありますが
あれを使うとfloatのやりとりが正確にできるとかそういうことはありますか
0481デフォルトの名無しさん
2012/06/14(木) 10:11:50.470482デフォルトの名無しさん
2012/06/14(木) 22:07:31.59うわっ!俺連続性を前提としてコード書いてた orz
0483デフォルトの名無しさん
2012/06/14(木) 22:09:11.81あ、連続性前提にしても規格的に大丈夫なのね。よかったよかった。
0484デフォルトの名無しさん
2012/06/15(金) 00:48:50.71C++03でもstring のバッファが不連続の実装があるとは思えないけど。
0485デフォルトの名無しさん
2012/06/15(金) 15:47:40.78どこかにWindows32bit版のバイナリーコードないかな。
makeするの結構めんどくさいし。TDM gccも 4.6.1でサポートが停止してるし。
0486デフォルトの名無しさん
2012/06/16(土) 17:56:47.74void func1( int &&i ){}
template< typename t >
void func2( t &&i ){}
int main()
{
int i=0;
func1( i ); //コンパイルエラー
func2( i ); //OK
return 0;
}
いったいコンパイラの中で何が起こってるの?
0487デフォルトの名無しさん
2012/06/16(土) 17:59:59.420488デフォルトの名無しさん
2012/06/16(土) 18:08:27.02どうしてint&になるの?
0489デフォルトの名無しさん
2012/06/16(土) 19:35:31.650490デフォルトの名無しさん
2012/06/16(土) 19:56:34.72次の候補としてt=int&に挑戦するんだよ
int& &&はint&だからこれは上手く行って、t=int&だと最終的に判断する
0491デフォルトの名無しさん
2012/06/16(土) 20:19:11.4714.8.2.1 Deducing template arguments from a function call
●仮引数が rvalue reference で、実引数が lvalue のときは、
実引数の型 int は int そのものではなく int& として仮引数と比較される。
●仮引数が t& もしくは t&& の形のときは、t が実引数の型と比較される。
●仮引数の型は、実引数の型と一致するように決定される。
つまり t = int& になる。(t&& は int& && になる)
8.3.2 References 6段落
●int& && は int& と等しい。
最後に int& は int の lvalue を受け取ることができる。
0492デフォルトの名無しさん
2012/06/16(土) 20:31:14.47しかし、本当にややこしい。
0493492
2012/06/16(土) 20:45:42.80http://slashdot.jp/journal/507551/C%2B%2B%E5%8F%B3%E8%BE%BA%E5%80%A4%E5%8F%82%E7%85%A7%E8%A7%A3%E8%AA%AC
の下のほうに載ってたわ。
完全転送のための拡張だったのな。
0494デフォルトの名無しさん
2012/06/16(土) 20:49:49.65俺達人間が扱ってもミスが多いし時間ばかりかかってしょうがないでしょ
0495デフォルトの名無しさん
2012/06/16(土) 20:51:06.070496デフォルトの名無しさん
2012/06/16(土) 21:05:31.13自動プログラミング
http://toro.2ch.net/test/read.cgi/tech/1339847861/
0497デフォルトの名無しさん
2012/06/16(土) 21:32:57.82std::forward<X>(arg) って書く替わりに、
(X &&)arg って書いても問題ないよね。
0498デフォルトの名無しさん
2012/06/16(土) 23:02:20.36static_cast<X&&>(arg)なら本当に問題ないけどタイプ数は大して変わらないし
forwardの方が意図が出ててよい
0499デフォルトの名無しさん
2012/06/16(土) 23:08:27.06…と思ったが、クロージャあるからどうという手間もないんだよな。
0500デフォルトの名無しさん
2012/06/16(土) 23:41:11.22std::moveとかstd::forwardは理解の助けになるかもね
0501デフォルトの名無しさん
2012/06/17(日) 11:34:53.84メソッドの引数でオブジェクトを受けるとき、
1.値渡しにすべきか、
2.左辺参照渡しにすべきか、
3.左辺参照渡し+右辺値参照渡しのオーバーロードにすべきか、
4.テンプレート+右辺値参照渡しで完全転送すべきか、
使いどころが難しい。
1.だとmoveに対応してない物を渡すときのコストが大きいし、
2.だと右辺参照の情報が消えるし、一時変数を渡せないし、
3.だと組み合わせ爆発するし、
4.だと常にテンプレート関数になるし、仮想関数に出来ない。
constは基本的にボトムアップな伝播だから旨く行ったけど、
右辺値左辺値情報のようなトップダウン伝播を、型で伝えるのは無理があったようだね。
素直に参照のバイト数を増やして、右辺値左辺値判定フラグを持たせたほうが良かっただろうな。
0502デフォルトの名無しさん
2012/06/17(日) 11:45:05.07右辺値参照:壊して良い ←new!
何が難しいのかが分からん
難しいのならとりあえずコピーコンストラクタに使っておけば良い
0503デフォルトの名無しさん
2012/06/17(日) 11:52:00.02IOSが正式発行しているんだから、JISも発行されてるはずだよな。
X3014は相変わらず03のままだから、別の番号を持ってくるんだよな?
JIS規格がないと右辺値参照の本格的パンツレスリング勉強ができない。
0504デフォルトの名無しさん
2012/06/17(日) 11:58:56.21右辺値参照の情報を、関数を超えて持ちまわるのが面倒くさい。
0505デフォルトの名無しさん
2012/06/17(日) 12:12:28.470506デフォルトの名無しさん
2012/06/17(日) 12:22:50.85std::vector< std::pair< std::string, std::string > > v;
template< typename t, typename u >
void push( t &&first, u &&second ){
v.push_back(
std::make_pair(
std::forward<t>( first ),
std::forward<u>( second ) ) );
}
};
int main(){
hoge_t hoge;
std::string str;
hoge.push( std::string(""), str );
}
firstとsecondはstd::stringの参照って分かりきってるのにテンプレートで非明示になるのが嫌だな。
0507デフォルトの名無しさん
2012/06/17(日) 13:20:23.67誤訳脱落糞訳語だらけのJISなんか見ちゃいけません
0508デフォルトの名無しさん
2012/06/17(日) 13:27:40.770509デフォルトの名無しさん
2012/06/17(日) 14:39:15.030510デフォルトの名無しさん
2012/06/17(日) 15:03:56.97これをまともにする方法ってないの
0511デフォルトの名無しさん
2012/06/17(日) 15:51:48.45いいだしっぺの法則。
0512デフォルトの名無しさん
2012/06/18(月) 20:58:36.12templateの場合だけは特別扱いされる
0513デフォルトの名無しさん
2012/06/18(月) 21:12:06.79言っている事がよく解からん
テンプレ関数の引数に左辺値だった値が渡されても右辺値になってしまうんだから、
左辺値の引数を左辺値として扱いたいならstd::forwordの様なキャストが必須だろうに。
0514デフォルトの名無しさん
2012/06/18(月) 21:52:41.25int i;
func( 0 ) → 「X=int」 void func( int &&arg ){ (int &&)arg; }
func( i ) → 「X=int&」 void func( int& &&arg ){ (int& &&)arg; } → void func( int& arg ){ (int&)arg; }
0515デフォルトの名無しさん
2012/06/18(月) 21:53:16.470516デフォルトの名無しさん
2012/06/18(月) 22:00:04.400517デフォルトの名無しさん
2012/06/18(月) 22:05:24.930518デフォルトの名無しさん
2012/06/18(月) 22:42:36.00shared_ptrが標準になったお陰でユーザーが見る代入の需要が益々減ってるように思うが。
(ライブラリ作る側には重要だとは思う)
0519デフォルトの名無しさん
2012/06/18(月) 22:52:36.16コンセプトが先送りされた今となっては目玉機能だからなあ
0520デフォルトの名無しさん
2012/06/19(火) 00:41:26.000521デフォルトの名無しさん
2012/06/19(火) 02:52:06.59テンプレートの可変引数にconstありなしの自動対応もよろしく。
0522デフォルトの名無しさん
2012/06/19(火) 23:27:13.164パターン実装するの?
0523デフォルトの名無しさん
2012/06/19(火) 23:31:44.63そんなには必要ないと思われ
0524デフォルトの名無しさん
2012/06/22(金) 02:52:31.31float.hのFLT_DIG, DBL_DIG, LDBL_DIGではだめかな?
(printfの精度指定でこれらの値を指定する)
0525デフォルトの名無しさん
2012/06/22(金) 11:02:11.43template< typename t > void func( t && ){}
int main(){
int i=0;
int *p=&i, &r=i;
int const *cp=&i, &cr=i;
func( 0 ); //t=int
func( i ); //t=int &
func( p ); //t=int *&
func( r ); //t=int &
func( cp ); //t=const int *&
func( cr ); //t=const int &
return 0;
}
問題は、t=「intの何か」に制限できない点。
間違った型を渡してしまったとき、コンパイルエラーが深いところで出る。
0526デフォルトの名無しさん
2012/06/22(金) 11:03:33.670527デフォルトの名無しさん
2012/06/27(水) 12:27:15.870528デフォルトの名無しさん
2012/06/27(水) 12:37:33.410529デフォルトの名無しさん
2012/06/30(土) 01:22:17.16value := 0;
代入式にコロンつけりゃ推論してくれる
なぜC++もこの方式を導入しなかったんだ。
0530デフォルトの名無しさん
2012/06/30(土) 01:34:42.580531デフォルトの名無しさん
2012/06/30(土) 02:36:18.800532デフォルトの名無しさん
2012/06/30(土) 02:40:51.13大体、右辺式の型を変数の型にする程度なら大昔からあるんだよ。
今更のように実装して、仰々しく「型推論」なんて呼ぶことすら、真面目にUnificationしている言語に失礼だ。
0533デフォルトの名無しさん
2012/06/30(土) 03:42:26.610534デフォルトの名無しさん
2012/06/30(土) 05:46:49.41>>530 顔文字? 小さい「っ」が鼻?
0535デフォルトの名無しさん
2012/06/30(土) 06:01:50.310536デフォルトの名無しさん
2012/06/30(土) 16:46:55.89autoじゃなくて、:=が良かったって話で。
0537デフォルトの名無しさん
2012/06/30(土) 16:53:11.25変数宣言の型名に何て書くの?
型名無しで「変数名 := 値;」を宣言構文にするってこと?
0538デフォルトの名無しさん
2012/06/30(土) 16:54:50.110539デフォルトの名無しさん
2012/06/30(土) 16:58:09.690540デフォルトの名無しさん
2012/06/30(土) 17:20:25.840541デフォルトの名無しさん
2012/06/30(土) 17:22:24.13529にそう書いてあるじゃん
0542デフォルトの名無しさん
2012/06/30(土) 17:29:00.87>なぜC++もこの方式を導入しなかったんだ
型を後置するGoと違ってC++でそれが採用されるわけないな
むしろ何故autoでなく:=が導入される余地があったと思ったのか
0543デフォルトの名無しさん
2012/06/30(土) 18:05:15.74>型を後置するGoと違ってC++でそれが採用されるわけないな
意味がわからん
0544デフォルトの名無しさん
2012/06/30(土) 18:08:43.900545デフォルトの名無しさん
2012/06/30(土) 18:11:00.150546デフォルトの名無しさん
2012/06/30(土) 18:11:23.82var value Type; この宣言の代わりに
var value := 100; でいいわけだからな
0547デフォルトの名無しさん
2012/06/30(土) 18:13:13.480548デフォルトの名無しさん
2012/06/30(土) 18:14:33.620549デフォルトの名無しさん
2012/06/30(土) 18:14:58.864〜5年でTIOBE50に入ってる言語ってなんだよ
むしろそんな言語あったら教えてくれ
0550デフォルトの名無しさん
2012/06/30(土) 18:18:51.39var value = 100; でいいしな
>>547
思い込み激しいって言われたこと無いか?
0551デフォルトの名無しさん
2012/06/30(土) 18:18:59.34言い出しっぺが実践しないとなかなか普及しない
Androidの標準言語にでもすりゃいいんだ
0552デフォルトの名無しさん
2012/06/30(土) 18:22:44.85昔はC++関係は比較的そういう人が少ない傾向にあった。
複数の言語の中で気に入った言語があるのは良いことだが
他を排斥するようになったら終わりだ。
0553デフォルトの名無しさん
2012/06/30(土) 18:25:08.28varやautoと排他的な話じゃないだろ
無駄だけどautoと:=を共存させることだって出来る
:=方がカスケードが効くってだけの違いだ
0554デフォルトの名無しさん
2012/06/30(土) 18:26:11.600555デフォルトの名無しさん
2012/06/30(土) 18:27:16.44単に老害が増えたんだろ
0556デフォルトの名無しさん
2012/06/30(土) 18:37:36.15標準委員会が蹴った提案も全部排斥呼ばわり出来るな
批判を認めない奴の方が終わってるよ
0557デフォルトの名無しさん
2012/06/30(土) 21:01:00.30外人がやってるのは批判だがお前らがいう批判は批難ばっか
0558デフォルトの名無しさん
2012/06/30(土) 22:20:48.310559デフォルトの名無しさん
2012/06/30(土) 22:44:52.150560デフォルトの名無しさん
2012/06/30(土) 23:05:23.280561デフォルトの名無しさん
2012/06/30(土) 23:11:08.940562デフォルトの名無しさん
2012/06/30(土) 23:31:19.04奴らからしてみりゃ宇宙も韓国から始まってんだから
0563デフォルトの名無しさん
2012/06/30(土) 23:49:22.45あれは外人でなく、人外だ。
0564デフォルトの名無しさん
2012/07/01(日) 00:06:12.67しかも批判精神がどうのこうのと云う人から。
0565デフォルトの名無しさん
2012/07/01(日) 01:08:27.70googleのurlが分からないので、yahooじゃダメですか?
0566デフォルトの名無しさん
2012/07/01(日) 01:15:15.23ほれ。
オレが繋いでるグーグル乃あどれすだ
0567デフォルトの名無しさん
2012/07/01(日) 21:53:08.56そんなん、大昔の VB みたいにスペルミスのバグを防ぐために option explicit つけろってなるよ。
var value = 0; の方がずっといい。
0568デフォルトの名無しさん
2012/07/01(日) 23:23:58.78型推論と動的型付言語の違い分かってる?
VBのアレは、動的型付の禁止だぞ
0569デフォルトの名無しさん
2012/07/01(日) 23:38:20.250570デフォルトの名無しさん
2012/07/02(月) 12:49:24.750571デフォルトの名無しさん
2012/07/02(月) 18:12:41.78x:=y:=z:=0; は便利そうだなぁ。
auto x=0, y=0, z=0;
ってのは宣言が前から修飾して代入が後ろから修飾するって言う、
宣言と代入の合わせ業になってて、それゆえに発展性がないんだよな。
宣言と代入を同時に行う文法を新たに増設するとして、
一貫して後ろから修飾するなら、x:=y;=z:=0;だろうし、
前から修飾するなら、0 x y z; だな。
0 x y z; はC++の語感的には有りだけど、
typoして演算子とか書き忘れたら変数宣言になるってのは痛いな。
0572デフォルトの名無しさん
2012/07/03(火) 07:55:05.47俺が何を言ってるのか分からないなら、
option explicit スペルミス
でググってよ。
value := 0;
(略)
if ( hoge ) {
valeu := 1;
}
のバグを見栄えで見つけるのが容易とは言い難いという話なんだけど。
0573デフォルトの名無しさん
2012/07/03(火) 08:02:46.190574デフォルトの名無しさん
2012/07/03(火) 14:15:52.330575デフォルトの名無しさん
2012/07/03(火) 14:39:50.91宣言なんだから
0576デフォルトの名無しさん
2012/07/03(火) 15:09:13.95はあ?
>>572はスペルミスの検出について言ってると思うんだけど。
0577デフォルトの名無しさん
2012/07/03(火) 15:10:26.500578デフォルトの名無しさん
2012/07/03(火) 15:15:01.24for (value=0;value<END;++value){value=0;}
0579デフォルトの名無しさん
2012/07/03(火) 15:34:08.80「:=」は宣言専用で代入には使わないってことじゃない?
俺もvarかautoの方が宣言と分かりやすくて良いと思うけど
0580デフォルトの名無しさん
2012/07/03(火) 15:36:19.720581デフォルトの名無しさん
2012/07/03(火) 15:38:25.30C++は静的に出来るだけ型を決定する事により速度を高めている
goのそれはかなりの頻度で勝手な型推論を許してしまいバグの温床にならないか?
0582デフォルトの名無しさん
2012/07/03(火) 15:43:18.700583デフォルトの名無しさん
2012/07/03(火) 17:02:44.800584デフォルトの名無しさん
2012/07/03(火) 18:55:49.86仮想関数は例外なんだが
0585デフォルトの名無しさん
2012/07/03(火) 20:02:01.05俺がバカなせい?
型推論使う時は明示的なキャストを、自動変換使う時は明示的な型宣言を
強制する方がソースコードは読みやすくなる気がするんだが・・・・・・
0586デフォルトの名無しさん
2012/07/03(火) 23:06:30.82==と=でも間違えそうだね
0587uy ◆pdu1UZmweE
2012/07/04(水) 01:30:05.37おめでとうございます
よく気づいたな
型推論(笑)をやっていったその先に何があるかというと
動的言語と同じ問題が静的言語でも発生するようになるだけだよ
型推論のせいでタイプ数は減っても、
情報が目に見えなくなるから、可読性が落ちるのもそのひとつ
a := "test"
↓
〜数百行〜
↓
b := a ←型推論 bの型なんてわかりゃしねえ
b := bb
c := cc ッ手やるべき場所を
b := cc
c := bb ッ手やってもエラーは起きない
結局これなら中途半端に型推論とかやらないで最初から動的言語使っていたほうがいい
しかしこれから数年間は、変な奴らが型推論型推論あげまくってるから、この中途半端な概念のゴミカス型推論を使いまくった
超超ゴミッカスソースコードが量産されていくんだろうなwwww、そして10〜20年後にソース引き継ぐ奴が涙目になるじゃんやったね
0588uy ◆pdu1UZmweE
2012/07/04(水) 01:32:04.98型推論をかなり制限して、ちゃんと型をかくようなコードに落ち着くと思うよwwwwwwwwwwww
0589デフォルトの名無しさん
2012/07/04(水) 01:35:29.870590デフォルトの名無しさん
2012/07/04(水) 01:36:56.950591デフォルトの名無しさん
2012/07/04(水) 02:20:56.72Haskelみたいな環境だと、その間違うかもしれない部分
b := ...
c := ...
の後にbとcがどのような型に参照されるかまでをプログラムの終わりまで
チェックするんで、そこを間違えただけならコンパイラはエラーを指摘できるよ
0592デフォルトの名無しさん
2012/07/04(水) 02:41:02.910593デフォルトの名無しさん
2012/07/04(水) 03:01:53.25いつでも必要なときに
エディタに型を表示させられるよ
0594デフォルトの名無しさん
2012/07/04(水) 03:25:37.220595デフォルトの名無しさん
2012/07/04(水) 08:03:29.98どうしてC++スレに来るのだろうか?
自分に使いこなせない言語のスレに来て
無知丸出しの書き込みをするのに何の意味があるの?
0596デフォルトの名無しさん
2012/07/04(水) 09:51:40.71じゃなくてコンパイラやIDEが知ってることが重要なんじゃん。
ダックタイプでどうやって推論結果のツールチップ出すの?
0597デフォルトの名無しさん
2012/07/04(水) 12:45:09.90a = 100;
とかくと
int a = 100;
を勝手に補間してくれるエディタがあれば良いんでなかろうか。
0598デフォルトの名無しさん
2012/07/04(水) 20:48:27.04int a=0;
…
{
a=100;
}
0599デフォルトの名無しさん
2012/07/04(水) 20:52:37.94class name< type T >{};
が良かったなぁ。
テンプレート関数の構文も、
void func< type T >(){}
が良かったなぁ。
0600デフォルトの名無しさん
2012/07/04(水) 20:54:24.220601デフォルトの名無しさん
2012/07/04(水) 21:01:40.46戻り値後置記法があって初めて成り立つ文法じゃないか
0602デフォルトの名無しさん
2012/07/04(水) 21:06:58.59これだと
T func< type T >(){}
ができないな
0603デフォルトの名無しさん
2012/07/04(水) 21:39:10.36テンプレートメタなんて変態チックな技に対しても結構高い防壁になったろうし
0604デフォルトの名無しさん
2012/07/04(水) 22:36:09.75既に時遅しなんだろうなあ
0605デフォルトの名無しさん
2012/07/04(水) 22:41:06.04こんな面倒くさいことは機械に任せたほうがいいだろ
0606デフォルトの名無しさん
2012/07/05(木) 00:12:03.600607デフォルトの名無しさん
2012/07/05(木) 01:08:01.08それか、よっぽど暇で友達いない奴くらいなもの
会社に行けば、嫌というほどやらされるw
0608デフォルトの名無しさん
2012/07/05(木) 01:08:32.240609デフォルトの名無しさん
2012/07/05(木) 01:14:05.910610デフォルトの名無しさん
2012/07/05(木) 05:20:56.62お前等がやってるのはプログラミングというよりコピペだぞ
0611デフォルトの名無しさん
2012/07/05(木) 10:32:05.99本当に有意義な生産活動をしようと思ったら、
それぞれの分野についての専門知識が必要だわ。
実際に飯食おうと思ったら、
対象分野の知識 > 数学の知識 > コンピュータの知識
って感じ。
しかし、数学は何するにしても必要だし、基礎体力だから、学生さん的には、
数学 > 専攻分野 > コンピュータ
だろうな。
どちらにしても、コンピュータを学ぶのは後からでも間に合うわ。
0612デフォルトの名無しさん
2012/07/05(木) 10:50:52.68プログラミングを少しでもやってる人なら
底辺こそ一番偉いのを知っているはず
おまえドライバとか書いたことないだろ
0613デフォルトの名無しさん
2012/07/05(木) 17:40:19.48ドライバを書いた人はみな底辺なのだろうか
答えを求めて旅に出ようと思います
0614デフォルトの名無しさん
2012/07/06(金) 00:24:45.64そもそも、代わりがいくらでもいる作業してるから
ドカタ呼ばわりされるわけで
0615デフォルトの名無しさん
2012/07/06(金) 00:33:16.890616デフォルトの名無しさん
2012/07/06(金) 00:58:17.36UIを作る必要がないため、ドライバはもっともとっつきやすい
客先にあれこれいわれることもないし。
UIは本当に面倒
0617デフォルトの名無しさん
2012/07/06(金) 01:03:26.34ユーザーモードドライバーの話してんのか?
0618デフォルトの名無しさん
2012/07/06(金) 01:07:51.09ハードのバグでしたとか
そういう事を聡く見抜ける人じゃないと無理
0619デフォルトの名無しさん
2012/07/06(金) 01:09:57.36頭悪
0620デフォルトの名無しさん
2012/07/06(金) 01:10:47.690621デフォルトの名無しさん
2012/07/06(金) 01:15:49.620622デフォルトの名無しさん
2012/07/06(金) 23:04:18.79もう口が酸っぱくなるほどどんな起業本にも出てくるんで知ってるだろうけど、
業務っていうのは反復普遍でないとだめなわけだ。
これはつまり、従業員全員が代わりの聞くドカタであるのが最良の企業だといってるのとほぼ同じ。
そうじゃない奴は管理職になる。
儲かる仕組み、儲かる思考がルーチンワーク化しているから大企業は儲かり続けるんだ
という話はイノベーションのジレンマにも出てきた話。
しかし同様に、これが会社を滅ぼすというのがかの本のしてきなわけだけど
どーゆーあんだーすたんど?
0623デフォルトの名無しさん
2012/07/06(金) 23:51:03.78ところでそれがC++11と何の関係があるんですか
0624デフォルトの名無しさん
2012/07/09(月) 10:30:32.290625デフォルトの名無しさん
2012/07/12(木) 21:19:31.410626デフォルトの名無しさん
2012/07/12(木) 22:17:40.390627デフォルトの名無しさん
2012/07/12(木) 22:20:09.620628デフォルトの名無しさん
2012/07/18(水) 10:43:34.800629デフォルトの名無しさん
2012/07/18(水) 10:45:55.04void func(const double (&arr)[n]);
に
array<double,100> xs;
を渡す方法ありますか?
単純にfunc(xs.data())してもコンパイル通りません・・・。
0630デフォルトの名無しさん
2012/07/18(水) 11:11:07.050631デフォルトの名無しさん
2012/07/18(水) 21:58:53.770632デフォルトの名無しさん
2012/07/18(水) 22:06:06.730633デフォルトの名無しさん
2012/07/19(木) 00:28:58.900634デフォルトの名無しさん
2012/07/20(金) 10:10:04.28さまざまな意見が寄せられた。
スレ主は、日本の食文化について言及し、日本では食に対するこだわりが深い人が多く、製菓技術や製パンは世界に誇れる水準であり、
ビールも同様に世界で認められているものの一つだと述べた。一方、韓国産のビールはまだまだ改善の余地があり、
新規参入による市場の拡大が望まれると指摘した。
スレッドにはスレ主に対して同意し、日本の食文化について称賛する声が多数並んだ。
・「日本は食文化、特にグルメへのこだわりがすごいと思います。外国の食文化を受け入れ、百年以上の探求を経て、
トップレベルにした。ビールも同じ」
・「率直にいって、日本の食べ物はおいしいものばかり」
・「日本は、国内市場があまりにも大きい。それに比べ、わが国の内需市場はすかすか」
また、韓国内のビールメーカーなどを批判する声もみられた。
・「韓国のビール会社のマインドは最悪」
・「韓国ビールは日本でいえば、ビアテイスト飲料」
・「わが国のビールは日本では発泡酒。ビールと呼ばれること自体、恥ずかしくなる粗雑なもの」
むしろ、北朝鮮のビールの方がおいしいのではといった発言も見られ、韓国人がビールに対して高い関心を寄せている様子がうかがえる。
・「聞いた話だが、北朝鮮のビールの味が韓国産のビールの味よりいいらしい。技術的な問題ではなく、制度や材料が大きな違いをもたらすのでは」
・「わが国のビールがまずい理由は、小規模な醸造所の法的な問題から構造の問題までたくさん。北朝鮮のビールと韓国のビールは、簡単に比較できません」
(編集担当:李信恵・山口幸治)
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0719&f=national_0719_018.shtml
0635デフォルトの名無しさん
2012/07/26(木) 12:32:55.89http://lambda-the-ultimate.org/node/4554
http://commandcenter.blogspot.jp/2012/06/less-is-exponentially-more.html
0636デフォルトの名無しさん
2012/07/26(木) 13:12:51.940637デフォルトの名無しさん
2012/07/26(木) 13:25:20.40JavaやC#が対抗馬じゃないのか?
まさか本気でミドルウェア用言語としてのC++を
オーバーライド出来るとは思ってないだろうに。
0638デフォルトの名無しさん
2012/07/26(木) 13:33:35.26このフィールドで勝負仕掛けてくるやつはアホ。
0639デフォルトの名無しさん
2012/07/26(木) 13:53:33.08奴らの特殊なCコンパイラ使わないとCのライブラリをリンクできない。
そしてC++のコンパイラはない。
だからwebkitとかC++のライブラリをGoにラップしてポートするのは大変。
悪い言語じゃないと思うが、これじゃ普及は厳しいだろう。
0640デフォルトの名無しさん
2012/07/26(木) 20:03:06.83普及に向けて色々動けるんだろうけど・・・
0641デフォルトの名無しさん
2012/07/26(木) 20:09:02.01そこには青銅のチューリングマシンに(中略)。これが「ブラフマーの塔」である。司祭たちはそこで、
昼夜を通してD言語の仕様を破壊的に変更している。そして、全ての仕様変更が終了したとき、
世界は崩壊し終焉を迎える。
と言われているが、自分も「かつての王にして未来の王」たる最終形態D言語には期待してる。
0642デフォルトの名無しさん
2012/07/26(木) 22:12:10.000643デフォルトの名無しさん
2012/07/26(木) 22:25:27.610644デフォルトの名無しさん
2012/07/26(木) 22:57:53.81とは言え実装他にないわけだし
大差なくね?
0645デフォルトの名無しさん
2012/07/26(木) 22:58:16.000646デフォルトの名無しさん
2012/07/26(木) 23:35:20.60意味がわからん
kwsk
0647デフォルトの名無しさん
2012/07/27(金) 09:53:19.400648デフォルトの名無しさん
2012/07/27(金) 20:17:06.06Cとリンクできるコンパイラーしかないんだから、
言語上インターフェースが特殊だろうと関係ないんじゃなかろうか?
厳密にはコンパイラーが一個しか無いわけじゃないけど
同じパッケージで配布されるから実質1ソフトでしょ
0649デフォルトの名無しさん
2012/07/27(金) 20:49:59.77ABIが違うとgccやclangがコンパイルしたライブラリバイナリはリンクできないってことは理解してる?
0650デフォルトの名無しさん
2012/07/27(金) 21:13:44.90マングリングやら呼び出し規約やらが関係あるの?
それは置いといてsyscall.LoadLibraryで動的結合する際は
まず関係無いだろうしデフォでCリンケージとリンクはできるじゃん。
C++とリンクしたければgccgo使えばgccと互換性のあるリンクができちゃう。
コールバックが未対応だったけど、それもできるようになったよね。
なんかそれとは別に難しいのかねぇ?
0651デフォルトの名無しさん
2012/07/27(金) 21:40:37.120652デフォルトの名無しさん
2012/07/27(金) 21:44:06.870653デフォルトの名無しさん
2012/07/27(金) 22:24:37.940654デフォルトの名無しさん
2012/07/27(金) 22:26:52.210655デフォルトの名無しさん
2012/07/28(土) 12:42:52.500656デフォルトの名無しさん
2012/07/28(土) 12:46:59.080657デフォルトの名無しさん
2012/07/28(土) 14:01:14.57仮想コンストラクター作ろうと思ったら↑か↓みたいにClassテンプレート自前で作るしか無いの?
std::function<Base(int)> virtual_constructor( Class<Delived(int)>() );
標準で↑のClassテンプレートみたいなのが欲しいんだけど。
0658デフォルトの名無しさん
2012/07/28(土) 22:15:55.800659デフォルトの名無しさん
2012/07/28(土) 22:21:49.51ttp://stackoverflow.com/questions/8626055/c11-static-assert-within-constexpr-function
0660デフォルトの名無しさん
2012/07/28(土) 22:32:53.34その二つの Answer、両方ともコンパイル不可だよ。
0661デフォルトの名無しさん
2012/07/28(土) 22:40:54.840662デフォルトの名無しさん
2012/07/28(土) 22:43:16.270663デフォルトの名無しさん
2012/07/28(土) 22:56:22.00でも折角 constexpr だからコンパイル時エラーが欲しいのだ。
0664デフォルトの名無しさん
2012/08/02(木) 00:22:52.14auto (v1,v2,v3) = hoge();
みたいに受け取れないかな。要は多値だけど。
initializer_list じゃなくて、returner_list とか。
0665デフォルトの名無しさん
2012/08/02(木) 01:59:49.64できるよ。下のほうのパターンをマクロでラップすればだいたい期待通りになるよ。
ttp://ideone.com/U2YN1
0666デフォルトの名無しさん
2012/08/02(木) 11:53:13.24参照型でくるんで、ナルホド。凄いな。
サンクス
0667デフォルトの名無しさん
2012/08/02(木) 12:11:56.470668デフォルトの名無しさん
2012/08/02(木) 12:43:21.770669デフォルトの名無しさん
2012/08/02(木) 18:19:19.920670デフォルトの名無しさん
2012/08/04(土) 20:02:26.500671デフォルトの名無しさん
2012/08/04(土) 20:37:36.04Pythonとか使ってもエラー処理ぐらいでしかメリットを感じない
0672デフォルトの名無しさん
2012/08/04(土) 22:18:50.87その延長の感覚だろtupleは
0673デフォルトの名無しさん
2012/08/04(土) 22:26:16.000674デフォルトの名無しさん
2012/08/04(土) 22:49:07.75できるよ。
0675デフォルトの名無しさん
2012/08/04(土) 23:23:22.95RGBA(色)とか?
0676デフォルトの名無しさん
2012/08/05(日) 00:08:56.390677デフォルトの名無しさん
2012/08/05(日) 00:14:16.620678デフォルトの名無しさん
2012/08/05(日) 00:40:25.250679デフォルトの名無しさん
2012/08/05(日) 00:58:53.300680デフォルトの名無しさん
2012/08/05(日) 01:06:50.370681デフォルトの名無しさん
2012/08/05(日) 01:07:21.410682デフォルトの名無しさん
2012/08/05(日) 04:31:09.70正規表現のマッチとか
多値なくてもプログラムはかけるが、(Turing完全!)
あれば便利な局面はいくらでもある。
0683デフォルトの名無しさん
2012/08/05(日) 04:32:21.47Pointer/Zero
僕はドキュメントが少ない
0684デフォルトの名無しさん
2012/08/05(日) 04:34:07.29複数の返値も扱える
0685デフォルトの名無しさん
2012/08/05(日) 04:38:30.110686デフォルトの名無しさん
2012/08/05(日) 07:04:33.94という自分ルールを常に守っておくと
継続渡し変換が楽にできる
0687デフォルトの名無しさん
2012/08/05(日) 10:07:28.33equal_rangeって引数2個で十分じゃね
0688デフォルトの名無しさん
2012/08/05(日) 10:08:04.81×戻り値
0689デフォルトの名無しさん
2012/08/05(日) 10:29:28.39まとまった一つの数と見なすものを除けば、
式の評価値が複数になることって、
数学的にも無い概念だから、
あまり複雑に考えないほうが良いよ。
0690デフォルトの名無しさん
2012/08/05(日) 11:10:36.18> 数学的にも無い概念だから、
もうね
0691デフォルトの名無しさん
2012/08/05(日) 11:25:34.81複数解を「組」や「ベクトル」と考えたりはしないよ。
0692デフォルトの名無しさん
2012/08/05(日) 11:32:14.14戻り値は式の評価値。
0693デフォルトの名無しさん
2012/08/05(日) 14:00:02.37tuple 使ってるのだろうか
0694デフォルトの名無しさん
2012/08/05(日) 14:29:56.86std::vectorでよくね。
x.size() == 0; //解なし
x.size() == 1; //解1個
x.size() == 2; //解2個
0695デフォルトの名無しさん
2012/08/05(日) 14:41:07.96噛み合ってない。 >>691 は「数学的にも無い概念」に対するコメント。
個別の事例を C++ のどの表現にマッピングするかはプログラマの自由にすればいい話。
std::vector で表現して不都合がないならそれでいいよ。
定義域のすべてが解、というのもほしいところ。
0697デフォルトの名無しさん
2012/08/05(日) 16:53:03.99void
kansuu(Kai & kai,X &x)
{}
にすれば解がなんでも対応できるぞ
0698デフォルトの名無しさん
2012/08/05(日) 17:55:44.020699デフォルトの名無しさん
2012/08/05(日) 19:32:58.35お前は多価関数も知らんのか、対数とか。
0700デフォルトの名無しさん
2012/08/05(日) 20:23:45.17逆三角とか
0702デフォルトの名無しさん
2012/08/05(日) 21:49:53.33>一つの入力があるときに出力を一つだけ得るものと定義されることが多く、
>この場合には多価関数を「関数」と呼ぶのは不適切となる
>つまり入力値が元の関数の写像によって移されて出力となるときに、
>入力に関する情報の一部が欠落してしまうために、出力から入力を再現できないのである。
>この場合、多価関数は元の関数の部分関数の逆関数 (partial inverse, en) であると言える。
というわけで、数学的にもイリーガルな扱いだから、
プログラミングでスマートに扱える必要ないよ。
sqrtも正しか返さないし。
0703デフォルトの名無しさん
2012/08/05(日) 21:56:13.94高校生で数学とおさらばした部類ですね?
0704デフォルトの名無しさん
2012/08/05(日) 21:59:42.380705デフォルトの名無しさん
2012/08/05(日) 22:03:03.79今現在のC++は、x+1=2;と記述して、xに1が代入されたりしない、
中学レベルの一次方程式すら満足に記述できない状況だってのに。
0706デフォルトの名無しさん
2012/08/05(日) 22:06:15.650707デフォルトの名無しさん
2012/08/05(日) 22:07:44.31さらにそれから、x^2=4;の話になって、そこでようやく
多値やら多価関数の話が出てくるって言うのに。
まだ全然そんな段階に到達してないし、
誰もC++にそんな機能を求めてないし。
0708デフォルトの名無しさん
2012/08/05(日) 22:16:25.12「数学にない概念だから」と語るには数学の知識が相当必要というだけの話。
頭悪いのね。
0709デフォルトの名無しさん
2012/08/06(月) 18:48:19.030710デフォルトの名無しさん
2012/08/07(火) 09:05:42.96宿題やっとけよ〜。
0711デフォルトの名無しさん
2012/08/07(火) 14:47:36.680712デフォルトの名無しさん
2012/08/07(火) 21:42:21.62shared_ptr<ComObj> p(com, [](ComObj * com) { if(com) com->Release(); });
↑こういうのや類似のコードがいくつかあるんですけど、
削除子のコピーで例外がでてしまわないか不安です(削除子のコピーで例外が出るとリークするので)
0713デフォルトの名無しさん
2012/08/07(火) 22:02:09.960714デフォルトの名無しさん
2012/08/07(火) 22:04:41.26そのもののコピー時の話です
0715デフォルトの名無しさん
2012/08/08(水) 00:56:13.010716デフォルトの名無しさん
2012/08/08(水) 07:37:15.99template<class Y, class D> shared_ptr(Y* p, D d);
8. ...The copy constructor and destructor of D shall not throw exceptions.
The expression d(p) shall be well formed, shall have well defined behavior,
and shall not throw exceptions.
なので、例外投げる削除子を shared_ptr に使ってはいけない。
0717デフォルトの名無しさん
2012/08/08(水) 07:56:11.73だからそれをどう判断するのかって712は聞いてるんだろ
0718デフォルトの名無しさん
2012/08/08(水) 07:58:01.89// copy ctor が noexcept でないクラス
struct A{ A(){} A(A const&){} };
int main()
{
A a;
auto lambda1 = [a]{ return; };
auto lambda2 = []{ return; };
// コピーコンストラクタが例外を投げるか
std::printf("%d\n", noexcept(decltype(lambda1)(lambda1)));
std::printf("%d\n", noexcept(decltype(lambda2)(lambda2)));
}
誰も noexcept なんて使わないと思うけど
0719デフォルトの名無しさん
2012/08/08(水) 08:31:48.50削除子の呼び出しが例外を投げるかどうかじゃなくて、 712 が聞いてるのは
削除子のコピーが例外を投げるかどうか、だろ。その規定は関係ないよ。
0720デフォルトの名無しさん
2012/08/08(水) 08:36:12.32ちゃんと読めよ
> The copy constructor and destructor of D shall not throw exceptions
削除子のコピーも例外投げちゃいけないんだよ。
ラムダがどうこう言う前に規格違反してる糞コードの方を修正しろ
0721デフォルトの名無しさん
2012/08/08(水) 08:46:51.100722720
2012/08/08(水) 08:56:22.94ラムダを削除子に使っていいかどうか、
規格適合かどうかを確かめたいって話ね。
noexcept を static_assert するしかないんじゃ
0723デフォルトの名無しさん
2012/08/08(水) 09:13:25.720724デフォルトの名無しさん
2012/08/08(水) 09:21:38.42上記例ではラムダは何もキャプチャしていないのだから、
完全に無名関数扱いなので、単に関数ポインタがコピーされるだけ。
関数ポインタのコピーに例外が発生しうるコンパイラーなどありえない。
0725デフォルトの名無しさん
2012/08/08(水) 09:42:49.000726デフォルトの名無しさん
2012/08/08(水) 10:00:16.54http://ideone.com/tBvrf
じゃないかと思ったけどコンパイルできない(´;ω;`)
0727デフォルトの名無しさん
2012/08/08(水) 10:13:46.45デリータに[=]系を使っちゃ駄目
それにしてもデリータのコピー例外で例外安全に出来なかったのは何故だろう
デストラクタで例外出すなというのはshared_ptrに限らずC++全般だから当然だけど
0728デフォルトの名無しさん
2012/08/08(水) 10:17:31.82>じゃあ宗教上の理由でどうしてもデリータのコピー例外を排除できないときはどうしてはるん?
コピーで例外が出るようなインテリジェンスなオブジェクトは、
キャプチャとか以前に、関数の引数とかでも、
参照やポインタなどの間接的な手法で渡す。
だから、そういった類のキャプチャは参照モードでするのが普通。
もしくは、ポインタやスマートポインタをコピーモードでキャプチャしてもよい。
宗教上そういうことが出来ない人は、ラムダのキャプチャ以前に、
関数の引数に、インテリジェンスなオブジェクトを値渡ししているような人なので、
そういう異次元の人と関わりあう必要は無い。
0729デフォルトの名無しさん
2012/08/08(水) 10:26:27.37それは違う。[&}で自動変数を受けると、スタックを抜けたときに参照元が消えて、
いざデリータが発動した段階で死ぬ可能性がある。
ヒープに有るオブジェクトをさしている自動変数のポインタを渡すような場合は、
逆に[=]でなければならない。
そのほかにも、スマートポインタを渡す場合も[=]でなければ意味を成さない。
0730デフォルトの名無しさん
2012/08/08(水) 10:41:28.58それただのバグじゃん
0731デフォルトの名無しさん
2012/08/08(水) 10:51:27.35値型でキャプチャしたラムダは削除子に使えない
0732デフォルトの名無しさん
2012/08/08(水) 13:49:04.73に相当するものって導入されたの?
0733デフォルトの名無しさん
2012/08/08(水) 15:37:43.93もうちょっと拡張したらLispと等価になるよ
0734デフォルトの名無しさん
2012/08/08(水) 22:08:57.350735デフォルトの名無しさん
2012/08/08(水) 22:17:27.760736デフォルトの名無しさん
2012/08/10(金) 14:17:02.360737デフォルトの名無しさん
2012/08/10(金) 14:27:37.540738デフォルトの名無しさん
2012/08/13(月) 20:29:38.11ってできないんだね
子クラスの型情報を親クラスで処理したかったのに
0739デフォルトの名無しさん
2012/08/13(月) 20:52:44.60その基底クラスのコードは共通なわけだから。
基底クラスをテンプレートにするしか無いね。
class aaaa : public base< aaaa >{};
0740デフォルトの名無しさん
2012/08/14(火) 00:56:00.55CRTPで処理しろっつうことじゃない?
ttp://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms/%E5%A5%87%E5%A6%99%E3%81%AB%E5%86%8D%E5%B8%B0%E3%81%97%E3%81%9F%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%28Curiously_Recurring_Template_Pattern%29
0741デフォルトの名無しさん
2012/08/14(火) 01:07:31.48何の制限にひっかかるんだ?
0742デフォルトの名無しさん
2012/08/14(火) 01:41:01.41規格的には呼び出したメンバ関数のクラスになるんじゃない?
>738の望みとは違うだろうけど。
0743デフォルトの名無しさん
2012/08/14(火) 03:28:32.74decltype で動的型情報が取れると思った(けどできない)ってこと?
なら当たり前だろと思ってしまうんだが。
0744デフォルトの名無しさん
2012/08/14(火) 03:45:55.20Derived::foo()の中で使ってればDerivedになる
ただそれだけじゃないの?
0745デフォルトの名無しさん
2012/08/14(火) 05:04:51.40ベースクラスのコードは共通なのだから、
Base::foo()の中でのdecltype(*this)が変化するわけ無い。
変化させたければ、ベースクラスのコードをを継承するクラスによって変化させる、
つまりベースクラスをテンプレートにして>>739のようにする。
0746デフォルトの名無しさん
2012/08/14(火) 11:32:08.89意識しないとダメだよな。
autoとかdecltypeはコンパイル時に解決するものだから、動的には型情報を解決できないはず。
0747デフォルトの名無しさん
2012/08/14(火) 19:06:57.83template<typename T>
void some(T & dummy){
decltype(*this)
}
};
class Derived : public Base
{};
Derived d;
d.some(d);
0748デフォルトの名無しさん
2012/08/15(水) 02:50:27.520749デフォルトの名無しさん
2012/08/16(木) 06:16:50.05もしくは
for( auto i : std::vector<char>( { 'r', 'p' } ) ) {}
こういうのって出来ないんだっけ?
0750デフォルトの名無しさん
2012/08/16(木) 08:54:26.14int main(){ for(auto i : {'a', 'b', 'c'}) std::printf("%c", i); }
問題ない
0751デフォルトの名無しさん
2012/08/16(木) 13:43:23.430752デフォルトの名無しさん
2012/08/16(木) 14:07:24.78printf に積んだら全部 int になるからどうせ関係ない。
0753デフォルトの名無しさん
2012/08/16(木) 14:09:06.720754デフォルトの名無しさん
2012/08/16(木) 14:10:19.80std::cout << sizeof(v) << ":" << typeid(v).name() << std::endl;
>1:c
http://ideone.com/lJae9
0755デフォルトの名無しさん
2012/08/16(木) 16:59:07.35君は初心者スレに行け。
このスレはまだ早い。
0756デフォルトの名無しさん
2012/08/16(木) 21:26:02.82#include <stdio.h>
int main()
{
printf("%d\n", sizeof('a'));
return 0;
}
$ gcc sizeof.c && ./a.out
4
$ g++ sizeof.c && ./a.out
1
面倒な・・・w
0757デフォルトの名無しさん
2012/08/16(木) 23:22:01.11C と C++ で違ったのかよ
0758はちみつ餃子 ◆8X2XSCHEME
2012/08/16(木) 23:33:07.95C++ と C の間にある非互換の内で最も有名なものだと思う。
cout << 'A';
とかしたときに 65 が表示されたりするのはよくないだろ。
型の扱いを厳密した結果、そうせざるを得なくなったらしい。
0759デフォルトの名無しさん
2012/08/16(木) 23:38:25.990760デフォルトの名無しさん
2012/08/17(金) 00:37:23.56>>756知らん奴はC++プログラマーじゃねーよ。
0761デフォルトの名無しさん
2012/08/17(金) 01:29:47.81むしろCの方が何故intにしようと思ったんだろう
0762デフォルトの名無しさん
2012/08/17(金) 01:46:03.330763756
2012/08/17(金) 02:10:16.25うちも初めて知ったクチだけど、
何故intなのか調べてもすぐには判らないね。
算術にするとintに昇格するから最初からintでいいんじゃね?
みたいな発想があったのかな。
char a = 'A';
char shift = 0x20;
cout << a << endl;
cout << a + shift << endl;
cout << (char)(a + shift) << endl;
結果は
A
97
a
0764デフォルトの名無しさん
2012/08/17(金) 02:25:43.72ここまでヒントやったからもう二度とこのスレには来ないでくれ。
0765デフォルトの名無しさん
2012/08/17(金) 07:11:32.81Cにとってcharやshortは配列の容量を抑えるためのもんで
スカラーでの演算向けに考えて無いからだろ。
CはC++と違い型に文字だの整数だのってことは
あんまり考えてない。目安的に名前が付いてるだけで
実際はメモリー空間の消費量的な意味しかない。
それからint型は実装はともかく仕様上は最速の型だから
特に理由がなければCはなんでもintを使う。
0766デフォルトの名無しさん
2012/08/17(金) 08:12:54.210767デフォルトの名無しさん
2012/08/17(金) 08:34:30.370768デフォルトの名無しさん
2012/08/17(金) 17:15:07.150769デフォルトの名無しさん
2012/08/17(金) 17:25:31.180770デフォルトの名無しさん
2012/08/18(土) 08:30:50.10C で 'A' が int なのは、知らなかった
0771デフォルトの名無しさん
2012/08/18(土) 09:56:25.670772はちみつ餃子 ◆8X2XSCHEME
2012/08/18(土) 10:24:38.21getc 等の返却値が int であることの理由にはなっても、
文字リテラルが int の理由にはならないのでは?
0773デフォルトの名無しさん
2012/08/18(土) 11:44:22.81ほほえましい時代だしなあ
0774はちみつ餃子 ◆8X2XSCHEME
2012/08/18(土) 12:01:10.99unsigned が無かった頃は、かわりに void* を使ってたとかいう話もあるもんな。
0775デフォルトの名無しさん
2012/08/18(土) 12:21:47.16それでもcharにぶっ込めるしで、無理にcharにする理由が無い
charにする理由が無ければとりあえずintを使うのがC流
C++でcharになったのは、オーバーロードで必要になったからだな
0776デフォルトの名無しさん
2012/08/18(土) 12:49:10.84unsigned がなくて void があったコンパイラとは?
0778デフォルトの名無しさん
2012/08/18(土) 13:17:14.45だろうな
ポインタにビット演算がなくて、かわりに unsigned のほうがありそうな話だが
0779デフォルトの名無しさん
2012/08/18(土) 13:48:03.260780右翼 ◆gXFLM6waxs
2012/08/27(月) 10:17:31.840781左翼 ◆MvRbZL6NeQ
2012/08/27(月) 12:24:36.410782デフォルトの名無しさん
2012/09/05(水) 15:51:42.09コンストラクタ呼び出しの場合は
explicit でも型名を省略できるようにして欲しい。
何か不都合でもあるのかな。
// 現状↓
struct A { A(int); };
struct B { explicit B(int); };
A f() { return {1}; }
B g() { return B{1}; } // return {1}; はダメ
0783デフォルトの名無しさん
2012/09/05(水) 16:00:50.22不都合というか一貫性が無い
0784デフォルトの名無しさん
2012/09/05(水) 16:11:25.35別にそこで不具合が起きそうにも思えないし。
0785デフォルトの名無しさん
2012/09/05(水) 16:21:04.63一方で B b{1}; は OK だし、
return には元から = はないので問題ない気がする。
0786デフォルトの名無しさん
2012/09/05(水) 16:30:17.05暗黙の変換が出来たらバグだろ・・・
逆にreturnだけわざわざ例外にして何の意味があるんだ?
>=はない
関数の引数でも=はないだろ
0787デフォルトの名無しさん
2012/09/05(水) 16:38:30.82知りたいのは、これを許すと他の部分にどのように波及するかだ。
0788デフォルトの名無しさん
2012/09/05(水) 17:03:14.74この人にでもメールしてみたら?標準化委員会のメンバーだし
ttp://cpplover.blogspot.jp/
0789デフォルトの名無しさん
2012/09/05(水) 18:10:45.190790デフォルトの名無しさん
2012/09/06(木) 04:50:12.530791デフォルトの名無しさん
2012/09/06(木) 10:10:14.730792デフォルトの名無しさん
2012/09/06(木) 11:28:22.960793デフォルトの名無しさん
2012/09/06(木) 12:25:55.13よく分からないならこっちへ。
【初心者歓迎】C/C++室 Ver.79【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1341052801/
0794デフォルトの名無しさん
2012/09/06(木) 21:23:16.87それgccのバグ。
0795デフォルトの名無しさん
2012/09/07(金) 14:20:06.77auto o3 = o1 * o2;
auto o4 = o1 * o3;
// 実際はもっと長い
return ox; // <- 型がよくわからない
}
このスタイルの関数宣言にローカルな変数を使いたい場合はどうするんですか?
0796デフォルトの名無しさん
2012/09/07(金) 14:22:05.740797デフォルトの名無しさん
2012/09/07(金) 14:30:33.76ああそういうケースでautoを使うとauto以外では記述不能な場合がある
0798デフォルトの名無しさん
2012/09/08(土) 19:48:19.14靖国神社でこんなもん貰ったんだがwwwwwwww斬新な政治ビラwwww
http://twitter.com/u_n11/status/244368304360275971
0799デフォルトの名無しさん
2012/09/09(日) 09:37:35.50std::declval と decltype でなんとかなるんじゃね?
o4 の型だったらこう decltype(o1 * std::declval<decltype(o1*o2)>())
0800デフォルトの名無しさん
2012/09/12(水) 16:00:09.05とかいうメールが来てるんだけど
C++11のほとんどの機能が入ってたりするのかな
0801デフォルトの名無しさん
2012/09/12(水) 19:07:50.85ほとんど、ではないが2010よりは進化してる
0802デフォルトの名無しさん
2012/09/12(水) 20:33:34.48それに合わせてSTLも書き直したらしい。
0803デフォルトの名無しさん
2012/09/12(水) 20:34:35.470804デフォルトの名無しさん
2012/09/12(水) 20:50:45.53HPで確認したら、
・新しい STL のヘッダーのサポート: <atomic>、<chrono>、<condition_variable>、
<filesystem>、<future>、<mutex>、<ratio> と <thread>。
・for-range-declaration:expression
・ステートレスラムダ
・スコープの列挙型のサポート
が追加要素みたい。
http://msdn.microsoft.com/ja-jp/library/vstudio/hh409293.aspx
0805デフォルトの名無しさん
2012/09/12(水) 20:53:01.950806デフォルトの名無しさん
2012/09/12(水) 21:06:35.06怖い反復子w
0807デフォルトの名無しさん
2012/09/12(水) 22:39:58.32こっちのが分かりやすいかな。
Initializer lists = No になってて真っ白な灰に…
0808デフォルトの名無しさん
2012/09/13(木) 02:13:28.46なんだこの哀れなコンパイラは
0809デフォルトの名無しさん
2012/09/13(木) 05:45:46.500810デフォルトの名無しさん
2012/09/13(木) 08:39:30.330811デフォルトの名無しさん
2012/09/13(木) 12:45:57.92Noを赤背景、Yesを緑背景にして
一目で分かるように・・・したくなかったんだろうなMSはw
0812デフォルトの名無しさん
2012/09/13(木) 14:43:53.41それは酷いデザインだな。
コントラストが落ちてテキストが読み難くなる上に色弱の人には判別が付かない。
一方の背景を薄いパステル色にすれば十分だよ。
0813デフォルトの名無しさん
2012/09/13(木) 15:03:23.110814デフォルトの名無しさん
2012/09/13(木) 15:10:55.37その酷いデザイン
http://clang.llvm.org/cxx_status.html
0815デフォルトの名無しさん
2012/09/13(木) 20:49:12.27http://i.msdn.microsoft.com/dynimg/IC604125.png
もともとは表が色わけされた画像だったんだけど画像やめろって言われて今の形になった
他国語版ではまだ画像のまま残ってる
まあ基本的にMSDNではHTMLへの部分的なスタイル変更をしないから画像やめた副作用だな
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
酷いデザインがよければここで見ることができる
0816デフォルトの名無しさん
2012/09/13(木) 23:20:56.28こういう90日限定って意味有るんかいな?
昔Expressに試用期間があったけど、
コマンドラインツールは無制限に使えて何がしたいのか解らなかった。
0817デフォルトの名無しさん
2012/09/13(木) 23:23:01.19HPってMSの宣伝窓口になったのか?堕ちたな・・・
0818デフォルトの名無しさん
2012/09/13(木) 23:28:38.64全然たりねーなー
0819デフォルトの名無しさん
2012/09/13(木) 23:30:40.180820デフォルトの名無しさん
2012/09/14(金) 22:43:26.67http://msdn.microsoft.com/ja-jp/library/vstudio/bb386063.aspx#BKMK_VCPP
C++11 言語の標準に準拠するコードを記述する。
Visual C++ を使用して、範囲ベースの for ループ、標準スレッド、フューチャ、
アトミック、そして標準 C++11 言語のその他の強力な新機能を使用する
コードを記述できます。
だって。
>816
今回もVisual Studio Express 2012 for Windows Desktopがあるよ。
http://www.microsoft.com/visualstudio/jpn/products/visual-studio-express-for-windows-desktop#product-express-desktop-details
まだダウンロードできてないから詳細知らんけど。
0821デフォルトの名無しさん
2012/09/14(金) 23:00:06.130822デフォルトの名無しさん
2012/09/14(金) 23:05:52.390823デフォルトの名無しさん
2012/09/14(金) 23:39:50.90知らなかった。
早速インストールしてみるか。
0824デフォルトの名無しさん
2012/09/15(土) 01:35:54.72ここのサポートリストはどれぐらいメンテされてるんだろう
0825デフォルトの名無しさん
2012/09/15(土) 01:38:56.570826デフォルトの名無しさん
2012/09/18(火) 13:35:16.630827デフォルトの名無しさん
2012/09/18(火) 21:23:14.840828デフォルトの名無しさん
2012/09/18(火) 22:03:17.000829デフォルトの名無しさん
2012/09/18(火) 22:13:01.81時間軸的には array と同期の constexpr が更なる改良となっている
0830デフォルトの名無しさん
2012/09/18(火) 22:43:46.650831デフォルトの名無しさん
2012/09/19(水) 08:50:00.160832デフォルトの名無しさん
2012/09/19(水) 15:10:41.610833デフォルトの名無しさん
2012/09/19(水) 15:15:49.670834デフォルトの名無しさん
2012/09/20(木) 01:50:55.280835デフォルトの名無しさん
2012/09/20(木) 05:47:59.860836デフォルトの名無しさん
2012/09/20(木) 08:07:23.17現状追認ばっかりしてるとgdgdになるんだよ
たとえばコンテナでない自動配列の初期化とか
char* でリテラルを指せるとか
long long くらいならまだ許せるけどね
0837デフォルトの名無しさん
2012/09/20(木) 09:34:45.64仕様と実装の間には必ずタイムラグがある。
仕様と同時、もしくは前倒しできるのは、単一メーカー押しの言語のみ。
C♯とか。
0838デフォルトの名無しさん
2012/09/20(木) 09:42:01.350839デフォルトの名無しさん
2012/09/20(木) 11:28:52.110840デフォルトの名無しさん
2012/09/20(木) 11:59:11.90これでテンプレートのusingが使える。
0841デフォルトの名無しさん
2012/09/20(木) 12:02:02.820842デフォルトの名無しさん
2012/09/20(木) 12:06:12.02はまだ使っていないからなんとも。
すくなくともgccよりはサポート遅いかも。
0843デフォルトの名無しさん
2012/09/20(木) 12:22:17.95http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
0844デフォルトの名無しさん
2012/09/20(木) 12:39:29.15VC++ではまだサポートしていないんだね。
便利なのに
0845デフォルトの名無しさん
2012/09/20(木) 21:51:51.40そのコンパイラにすら着いて行けてない俺
要するに、俺が一番イケてない
0846デフォルトの名無しさん
2012/09/20(木) 22:07:07.430847デフォルトの名無しさん
2012/09/21(金) 01:19:32.850848デフォルトの名無しさん
2012/09/21(金) 01:29:24.860849デフォルトの名無しさん
2012/09/21(金) 01:31:32.680850デフォルトの名無しさん
2012/09/21(金) 01:37:55.480851847
2012/09/21(金) 02:05:27.04http://ideone.com/Ogvzy
0852デフォルトの名無しさん
2012/09/21(金) 02:10:51.180853デフォルトの名無しさん
2012/09/21(金) 02:13:41.210854デフォルトの名無しさん
2012/09/21(金) 06:21:11.17一つが#ifdefなのだが、それを
悪とか言って思考停止しちゃったら
ソースコードを複数用意するしかない。
0855デフォルトの名無しさん
2012/09/21(金) 07:03:40.610856デフォルトの名無しさん
2012/09/21(金) 07:35:28.97残念でしたね
0857デフォルトの名無しさん
2012/09/21(金) 08:14:10.79どうせCと決別してC++教に入信するときに洗脳されたんだろうけど
所詮C++なんて邪悪なガラクタの寄せ集めなんだから
「マクロは悪」なんて潔癖になっても意味ないのに
0858デフォルトの名無しさん
2012/09/21(金) 08:30:32.350859デフォルトの名無しさん
2012/09/21(金) 08:33:47.570860デフォルトの名無しさん
2012/09/21(金) 09:27:35.30制御されたマクロというだけでもテンプレートの価値は高いだろ。
Lispのマクロ程度の機能がありゃ良いんだけど。
0861デフォルトの名無しさん
2012/09/21(金) 09:32:48.01誰もレビューできない
難解なテンプレート書く奴より
きちんとドキュメントに
ソースの適用範囲・使い方を書く奴の方が
重宝される。
0862デフォルトの名無しさん
2012/09/21(金) 09:49:35.39爆弾抱えるようなものだもの。
0863デフォルトの名無しさん
2012/09/21(金) 10:29:33.51ビルドプロセスで分けるのか?
0864デフォルトの名無しさん
2012/09/21(金) 12:50:16.94いっそコードをマクロとしてみたら
旦那、中々本筋に入らない落語みたいになってますがな
そりゃマクラです。お後がよろしいようで
0865デフォルトの名無しさん
2012/09/21(金) 12:57:47.22ずれてる
いわゆる古典的なマクロは、コンパイラによる厳密な構文チェック(型チェック含む)が出来ないからきらわれているだけ
>>853
そう言う意味で、君もずれてる
0866デフォルトの名無しさん
2012/09/21(金) 13:55:03.11だからといって全否定なわけない
0867デフォルトの名無しさん
2012/09/21(金) 15:33:33.16コンパイラ付属ヘッダー調べつくしたらしれっと紛れてるような気がするけどな
ドキュメントにも載ってないようなささやかなやつ
0868デフォルトの名無しさん
2012/09/21(金) 23:55:36.49を強要するやつが何を言うか
0869デフォルトの名無しさん
2012/09/22(土) 09:27:08.70まあ最近はCに依存せずやって行けると勘違いして
順調にシェアを落としてるけど
0870デフォルトの名無しさん
2012/09/22(土) 09:30:35.86適当なサイクルで一新したほうが結果的に効率的だろ
新しい技術への移行や書き換えで雇用もできるし
拡張してばかりだと新陳代謝しない生き物みたいで不健全だよ
0871デフォルトの名無しさん
2012/09/22(土) 09:45:31.88実際いっぱい作られてるし移行もしてるし健全じゃないですかー
0872デフォルトの名無しさん
2012/09/22(土) 09:47:07.530873デフォルトの名無しさん
2012/09/22(土) 09:55:11.180874デフォルトの名無しさん
2012/09/22(土) 09:56:12.98あなたにはD言語がおすすめです。
0875デフォルトの名無しさん
2012/09/22(土) 10:12:14.630876デフォルトの名無しさん
2012/09/22(土) 10:37:18.63c++の規格を更新するときに、かなり考慮する的な言い方を、ストラウさんもしてたような
0877デフォルトの名無しさん
2012/09/22(土) 11:35:11.74企業のトップが文系か機械いじりだからソフトに金かけるはずがない
適当なサイクルで一新する工数なんて出るわけない
0878デフォルトの名無しさん
2012/09/22(土) 13:00:31.20書き換えはトラブルの元なんだよ。
リファクタリングだって元のソースが動作すること前提だしな。
0879デフォルトの名無しさん
2012/09/22(土) 16:30:17.86新しい規格は別のコンパイラで出せばそれでコンパイルするのは新しく書くコードだろうから互換性無くても問題ないのではないか?
0880デフォルトの名無しさん
2012/09/22(土) 16:46:19.39>新しい技術への移行や書き換え
なんかにコストを払う余裕はないのでは?
0881デフォルトの名無しさん
2012/09/22(土) 16:57:53.09ここはC++の新規格のスレ。
0882デフォルトの名無しさん
2012/09/22(土) 17:04:37.22コンパイラが違うとリンクできないとか良くある話だろ
0883デフォルトの名無しさん
2012/09/22(土) 17:08:25.41さすがに現実知らなすぎだろ……ライブラリは全部捨てろってか?
0884デフォルトの名無しさん
2012/09/22(土) 17:15:33.67よくねえよ
テスト NG びしばし出るからだいたい
# デビュー前の学生さんでさえ gcc のビルドくらいやってるだろうに
# 当然そこで直面する現実を知らないわけもなし
0885デフォルトの名無しさん
2012/09/22(土) 17:16:23.57おまえ、、、
その新しいコンパイラで、互換性が全くなくなったら、原因究明から動作検証までどんだけのコストがかかると思ってんだ?
趣味でフリーソフト作ってるヤツばかりじゃないんだぞ
0886デフォルトの名無しさん
2012/09/22(土) 17:34:13.020887デフォルトの名無しさん
2012/09/22(土) 17:51:55.45だが長い目で見た場合それは逆に生産性を悪くするよ
マシンにたとえるとわかりやすいかもしれない
今手元にあってすぐ使えるけど性能が悪いマシンを使い続ける
金や購入の手間をかけて性能のいい最新機を買いセッティングもする
どちらの人がより仕事を多くこなせるだろうか
最初のうちは古いマシンを使うほうが多い仕事をするだろう
だがそれは本当に最初のうちだけであっという間に新しいマシンを使う人に追い抜かれそして二度と追いつくことはできない
プログラミング言語にも同じことが言える
今すぐ使えるが使いにくい言語より作る手間や資産の移植の手間はあるがいつか必ず古い物に追いつき追い越せる言語のほうが得なんだよ
0888デフォルトの名無しさん
2012/09/22(土) 17:56:05.860889デフォルトの名無しさん
2012/09/22(土) 18:15:45.270890デフォルトの名無しさん
2012/09/22(土) 18:20:18.46100%過去環境で開発するわけでもないのは確かだな
ただ、それはお金との相談になる
0891デフォルトの名無しさん
2012/09/22(土) 18:36:57.340892デフォルトの名無しさん
2012/09/22(土) 18:54:02.150893デフォルトの名無しさん
2012/09/22(土) 19:07:06.06>今すぐ使えるが使いにくい言語より作る手間や資産の移植の手間はあるが
>いつか必ず古い物に追いつき追い越せる言語のほうが得なんだよ
いくらでもあるだろ、そんな言語。c++である必要はないわな。
0894デフォルトの名無しさん
2012/09/23(日) 02:21:24.190895デフォルトの名無しさん
2012/09/23(日) 03:05:28.44で?
それで客を納得させて金がもらえれば、その提案は通るんじゃね?
ただ、一新にはかなりのリスクを伴うので、一般的には嫌われる
0896デフォルトの名無しさん
2012/09/23(日) 09:24:55.43その辺の意識の違いはふだんの仕事にも透けて見えてくるんだろうな
顧客もそういうとこはちゃんと見てるから気をつけたほうが良いよ
0897デフォルトの名無しさん
2012/09/23(日) 09:39:02.10うちは、.NETに 移って、C++ と VB6 を捨てた(一部サポートのみ)が、
同時に、客の何割かも切り捨て始めているわけだ。
0898デフォルトの名無しさん
2012/09/23(日) 10:03:06.050899デフォルトの名無しさん
2012/09/23(日) 10:18:26.260900デフォルトの名無しさん
2012/09/23(日) 10:27:55.65大事な事なのでもう一度
選択するのは客であって、提供側ではない
0901デフォルトの名無しさん
2012/09/23(日) 10:31:52.92いくらこっちが変えた方がいいと思っても無理なんだよ
0902デフォルトの名無しさん
2012/09/23(日) 10:32:52.13ほんともう過去の資産(もはや借金レベルだが)に縛られて仕方なくいやいやC++使ってるだけで移行できるならさっさとしたいってのがほとんどだろ
麻薬みたいなもんだなやめたいのにやめられないやればやるほどやめられなくなるしメリットはほとんどないほとんど地獄だよ
0903デフォルトの名無しさん
2012/09/23(日) 10:34:02.26すまん >>900 は >>898 へのレスだ
0904デフォルトの名無しさん
2012/09/23(日) 10:37:07.92確認しておくが、おまえ >>887 か?
すまん、俺が勘違いレスしたかも
0905デフォルトの名無しさん
2012/09/23(日) 10:45:48.13しかも微妙に話が変わっているし。
c++の互換性が要らないんだったらc++以外を選べばいいだろ。
それ以上でもそれ以下でも無いわ。ぐだぐだ意味のない議論しているなよ。
0906デフォルトの名無しさん
2012/09/23(日) 13:14:35.700907デフォルトの名無しさん
2012/09/23(日) 18:52:57.53戻り値、引数やpimpleにshared_ptr使った.soとか不安になる。
0908デフォルトの名無しさん
2012/09/23(日) 19:45:09.16そんなだったらC++全否定に等しいんじゃないかい?w
0909デフォルトの名無しさん
2012/09/23(日) 20:31:55.780910デフォルトの名無しさん
2012/09/23(日) 20:50:56.740911デフォルトの名無しさん
2012/09/24(月) 00:50:46.110912デフォルトの名無しさん
2012/09/24(月) 00:54:19.500913デフォルトの名無しさん
2012/09/24(月) 00:58:28.88異なるバージョンのコンパイラの結果
に渡せるかと言えば
一般的には不可じゃね?
0914デフォルトの名無しさん
2012/09/24(月) 01:16:23.34本当に?
聞いたことないんだけど、例えばどれ?
0915デフォルトの名無しさん
2012/09/24(月) 02:12:16.30するとこんな感じのシンボルがあるよ。
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::al
長いことインタフェース番号変わってないのはすごいよね。
0916デフォルトの名無しさん
2012/09/24(月) 06:19:40.020917デフォルトの名無しさん
2012/09/24(月) 09:50:50.77そうじゃないとMFCは実現出来ない。
0918デフォルトの名無しさん
2012/09/24(月) 10:40:56.14STLの互換性が無くなる組み合わせがあったね。
0919デフォルトの名無しさん
2012/09/24(月) 20:01:14.860920デフォルトの名無しさん
2012/09/24(月) 20:03:17.750921デフォルトの名無しさん
2012/09/25(火) 22:48:04.68http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/#mailing2012-09
0922デフォルトの名無しさん
2012/09/26(水) 08:55:40.310923デフォルトの名無しさん
2012/09/26(水) 19:31:59.220924デフォルトの名無しさん
2012/09/26(水) 21:10:49.800925デフォルトの名無しさん
2012/09/26(水) 22:21:14.540926デフォルトの名無しさん
2012/09/26(水) 22:26:44.880927デフォルトの名無しさん
2012/09/26(水) 22:50:04.71てすると、自動ベクタライズのヒントになるとか。
0928デフォルトの名無しさん
2012/09/26(水) 22:51:28.960929デフォルトの名無しさん
2012/09/26(水) 23:57:31.830930デフォルトの名無しさん
2012/09/27(木) 00:16:22.30volatile → atomic
register → asm
0931デフォルトの名無しさん
2012/09/27(木) 00:17:28.100932デフォルトの名無しさん
2012/09/27(木) 00:18:26.150933デフォルトの名無しさん
2012/09/27(木) 00:50:06.430934デフォルトの名無しさん
2012/09/27(木) 00:59:59.26簡単にできるよ
0935デフォルトの名無しさん
2012/09/27(木) 01:24:40.050936デフォルトの名無しさん
2012/09/27(木) 01:25:38.33うん、やって
0937デフォルトの名無しさん
2012/09/28(金) 01:00:37.13C++のstd::vectorなどをlispぽく操作する関数コレクション
car(std::vector)=v[0]
みたいな感じ
具体的な使用例は
https://github.com/niitsuma/scm2cpp.hpp/blob/master/usage.cpp
を参照
eq? が単純なアドレス比較
&x == &y
として実装されてる
なので
cons(double, std::list)
がboost::ptr_listになるようになっている
他に
std::vector std::list
boost::fusion::listなどが使える
std::pairもconsとして扱える
0938デフォルトの名無しさん
2012/09/29(土) 22:54:04.56deprecated?
0939デフォルトの名無しさん
2012/09/29(土) 22:57:46.320940デフォルトの名無しさん
2012/09/29(土) 23:09:24.500941デフォルトの名無しさん
2012/09/29(土) 23:12:27.41めんどうを増やしているとしか思えん。
0942デフォルトの名無しさん
2012/09/29(土) 23:17:28.08でもboostの開発者にはC++標準化委員会の人が多くいるから文句も言えない
0943デフォルトの名無しさん
2012/09/29(土) 23:19:04.620944デフォルトの名無しさん
2012/09/29(土) 23:23:53.56C++は最強言語と言われたCの虎の威を借りてるからな
それを超えるとなると相当難しいぞ
0945デフォルトの名無しさん
2012/09/29(土) 23:25:54.730946デフォルトの名無しさん
2012/09/29(土) 23:26:31.97//~ ~\:::::\
. | (・) (・) .:|
| ,,ノ(、_, )ヽ、,, .::::| は?
. | `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/
/`ー‐--‐‐―´\
0947デフォルトの名無しさん
2012/09/30(日) 00:58:15.250948デフォルトの名無しさん
2012/09/30(日) 01:02:39.170949デフォルトの名無しさん
2012/09/30(日) 01:47:31.03M$がD言語を.NETでもいいから採用したら考えないでもないけど無視されてるじゃん
0950デフォルトの名無しさん
2012/09/30(日) 02:07:34.72そんなんするなら、こんな感じの方が性能いいと思うぞ
typedef std::complex< float, std::complex<float, std::complex< float, float > > > Quaternion;
Quaternion quaternion;
0951デフォルトの名無しさん
2012/09/30(日) 07:41:38.78OSSだからな
0952デフォルトの名無しさん
2012/09/30(日) 14:21:26.92って頓珍漢なこと言ってる人いたな。
参照実装になったり、規格外のことやってくだけ。
0953デフォルトの名無しさん
2012/10/02(火) 03:08:49.50基本 boost なしで C++11 だけで完結してもらいたいのだが、そういうふうになっていない。
Cocoaと.Netに慣れてる身からすると、サービス悪いとおもってまう。
だからといってC++から離れることもできず。
0954デフォルトの名無しさん
2012/10/02(火) 05:00:31.480955デフォルトの名無しさん
2012/10/02(火) 11:07:50.82置いてきぼりにされた気持ちになるのだろう。
0956デフォルトの名無しさん
2012/10/02(火) 11:09:46.38boost内で特に優秀な成績を収めた者がstdに昇格します
移行ではありません
0957デフォルトの名無しさん
2012/10/02(火) 12:43:13.05C++でゴリゴリ書きたい人(=車輪の再発明をしたい人)のげばひょうかい?
0958デフォルトの名無しさん
2012/10/02(火) 13:08:51.860959デフォルトの名無しさん
2012/10/02(火) 13:27:52.640960デフォルトの名無しさん
2012/10/02(火) 16:16:31.80stdに行ったら夢も希望もない墓場だ
0961デフォルトの名無しさん
2012/10/02(火) 16:19:20.970962デフォルトの名無しさん
2012/10/02(火) 16:41:02.010963デフォルトの名無しさん
2012/10/02(火) 20:26:24.950964デフォルトの名無しさん
2012/10/02(火) 20:37:33.56古いライブラリがboost::shared_ptr形式でオブジェクトを生成するが古いソースには触りたくない
新しいプロジェクトではstd::shared_ptr形式でそのオブジェクトを使いたい
0965デフォルトの名無しさん
2012/10/02(火) 21:18:11.330966デフォルトの名無しさん
2012/10/02(火) 21:21:32.38文系の上司がそうしないとお前を解雇するって・・・・・・
0967デフォルトの名無しさん
2012/10/02(火) 21:21:43.78http://d.hatena.ne.jp/yohhoy/20120921/p1
0968デフォルトの名無しさん
2012/10/03(水) 01:04:37.25なにこの劣化weak_ptr。
既存のboost::shared_ptrが生存している限り、
「変換」されたstd::shared_ptrが使えるというだけじゃん。
逆もしかり。
「変換」されたshared_ptrは、shared_ptrとしての機能を果たさないので、
生ポインタ使うのと変わらん。
0969デフォルトの名無しさん
2012/10/03(水) 01:07:48.89よく読んで考えろ
0970デフォルトの名無しさん
2012/10/03(水) 01:11:44.82ああ、コピーキャプチャか。
なるほど。
0971デフォルトの名無しさん
2012/10/03(水) 06:19:16.48プギャー
0972デフォルトの名無しさん
2012/10/04(木) 08:47:50.94頻繁に相互変換起こると爆死じゃんwww
やはりライブラリでshared_ptrを返すやつは信頼できない
生ポインタを返すべきだったんだ
0973デフォルトの名無しさん
2012/10/04(木) 08:56:58.440974デフォルトの名無しさん
2012/10/04(木) 09:04:31.02C++11になって標準化したからこれからは当たり前になってくるだろうけどな
0975デフォルトの名無しさん
2012/10/04(木) 14:42:45.72なんかちょっと不便じゃね?[weak_ptr<T>(spObj)]() {}みたいに書きたいときあるよね?
いちいち新しい変数作るの?あとくそ長い型名を引数にとるラムダとか見苦しいじゃん
こんな汚いなら外に関数として普通に書くわってなるじゃん
そこを楽して省略したいのにできないとか泣ける
0976デフォルトの名無しさん
2012/10/04(木) 15:02:31.630977デフォルトの名無しさん
2012/10/04(木) 15:11:51.94auto s(w.lock()); if(s) { s->notify(a); }
});
0978デフォルトの名無しさん
2012/10/04(木) 18:53:04.13当然ながらXSSやSQLインジェクションみたいなありがちな脆弱性には全くの無力だし
メモリ絡みにしたってバッファオーバーランやNULLのデリファレンスみたいなのは防げないでしょ
「deleteし忘れ」を防ぐためだけに、本当に支払う価値のあるオーバーヘッドなのかね
プログラマが気をつけるべき問題じゃないの
逆にオーバーヘッドが気にならないリッチな環境ならそれこそGC言語使えよっていう話じゃ
0979デフォルトの名無しさん
2012/10/04(木) 19:01:08.120980デフォルトの名無しさん
2012/10/04(木) 19:03:00.95長文かつ駄文。普段どんなコード書いてる人なのか…
0981デフォルトの名無しさん
2012/10/04(木) 19:48:58.67そんな万能なセキュリティが言語に備わってたら、いったいどんなコードを書くんだ。
0982デフォルトの名無しさん
2012/10/04(木) 20:08:44.16NULLのデリファレンスも、not null修飾がある言語もある。
結局Cの拡張なんだからスタート地点がボロボロなのは仕方ないだろ
0983デフォルトの名無しさん
2012/10/04(木) 20:13:01.200984デフォルトの名無しさん
2012/10/04(木) 20:25:18.530985デフォルトの名無しさん
2012/10/04(木) 20:43:00.230986デフォルトの名無しさん
2012/10/04(木) 20:59:48.59バッファオーバーランは要は固定領域に可変サイズデータを入れるから起きるんだろ?
可変サイズデータは最初っから可変で取る慣習さえできていればそもそも起こりえない。
で、Cでそういう慣習が無いのを引きずってるわけで。
わかってる人はC++なら全部vector使ってたろ?
0987デフォルトの名無しさん
2012/10/04(木) 21:13:50.74動的バッファに変更するのとじゃ……
0988デフォルトの名無しさん
2012/10/04(木) 21:14:28.670989デフォルトの名無しさん
2012/10/04(木) 21:50:34.73動的とか固定とかは本質的な問題じゃない
あるバッファへの書き込みデータ数に対して、サイズ制限できるかどうかが全て
0990デフォルトの名無しさん
2012/10/04(木) 21:55:44.510991デフォルトの名無しさん
2012/10/04(木) 22:04:41.03既存領域にデータを書き込むという発想の時点で、Cの呪縛がかかってるだろ
その都度必要な領域を取るんだよ
0992デフォルトの名無しさん
2012/10/04(木) 22:11:01.12アクセスするたびに領域確保という美味い事にはならない気が。
0993デフォルトの名無しさん
2012/10/04(木) 22:13:09.79純粋関数家の方ですね?
0994デフォルトの名無しさん
2012/10/04(木) 22:13:53.62次スレ
0995デフォルトの名無しさん
2012/10/04(木) 22:16:04.83「有限のサイズを持つ領域に
何のチェックも行わず無制限に
データ書き込みを許したら
溢れて壊れちゃった」ってだけ。
vectorは馬鹿でに使わせても多少安全なように
・長さ情報を持つことを強要した
・一部のアクセスはサイズチェックを自動的にする
という点がマシになったが、
バカには結局何を使わせても無駄。
0996デフォルトの名無しさん
2012/10/04(木) 22:17:03.680997デフォルトの名無しさん
2012/10/04(木) 22:21:03.870998デフォルトの名無しさん
2012/10/04(木) 22:25:46.150999デフォルトの名無しさん
2012/10/04(木) 22:25:59.44> 「有限のサイズを持つ領域に
まるで無限のサイズを持つ領域があるかのような書き方だな。
1000デフォルトの名無しさん
2012/10/04(木) 22:27:55.1910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。