18 ブギ、未来を俺にくれ
>>2 残念だ、その未来に君はもういないんだよ...
このスレ、通し番号入ってないけど、良いの?
14はどうせすぐ来年だし過去ログが必要になるようなスレでもないからなければないでべつにいいと思うよ
C++11のスレは終わった
C++学園の人々:飛躍と混沌の14年の巻
○軽量コンセプトさん
あのコンセプトさんが生まれ変わって帰ってきた!
しかしかつてのコンセプトさんに比べると大幅に能力が下がっており、
一部ではstatic_assertさんの変装ではないかと噂されている。入学はもう少し先になる予定。
○attributeさん
久々に任せられたのは「でぷりけーてど」なる呪詛とともにD組送りにする能力。
今日も死んだ魚のような目を輝かせながら生徒達を地獄へ送る。
○constexprさん
いきなり「勝手に『てーすーしき』を名乗るのは許さないからね!」とライブラリ科に向かって言い放ち
学科の多くの生徒達とファンの土器屋を困惑させた。
あと「りかーしぶ」はやっぱりめんどくさいので普通の女の子に戻るらしい。
○ラムダさん
もはや当たり前に受け入れられて引っ張りだこの人気者。かつて服で騒がれてたのは何だったのか。
少し几帳面すぎて融通が利かないのが不評だったので、autoさんに空気の読み方を教えてもらった。
○関数さん
靴のサイズを気にしなくていいラムダさんが羨ましくなったので、autoさんにサイズの決め方を教えてもらった。
せっかくだからラムダさんと同じ服を着たいと言っているのだが、「君はベテランなんだから我慢しなさい」と
周りの大人が許してくれないようだ。
○decltypeさん
新たに姉のautoさんとの合体技も覚えて本人はノリノリだが…
服の違いで性格が変わる悪癖も直っておらず、合体技もやや前衛的で、なんだか最近黒いオーラが見えると噂されている。
○autoさん
型なんかもう全部autoでいいんじゃねえかなと思わせるような八面六臂の大活躍。
不動の学園アイドルの座を射止めた彼女をD組から睨み続けるregisterさんとは目を合わせてはいけない。
○数値リテラル三姉妹(十進さん、八進さん、十六進さん)
一部の教師のゴリ押しで、ケタクギリなるおかしなアクセサリーを付けさせられることになった。
汚い見た目は主にユーザー定義リテラルさんのせいらしく、恨み節が止まらない。
○二進リテラルさん
数値リテラル姉妹の四女。前の入試では「君は別にいらないから」と入学拒否されたものの
じゃあユーザー定義リテラルさんに代わりやってもらおうかとなったとたんに
急遽入学が決まった。本人は困惑している。なおケタクギリは彼女も付けさせられる予定。
○ユーザー定義リテラルさん
入学してしまったものは仕方ないので、ライブラリ科は受け入れ準備を渋々始めている。
数値リテラル姉妹とのトラブルで陰口を叩かれたり、complexさんのお手伝いのときに
if姐さんを危うく怒らせそうになったりしながらもたくましく生き延びているようだ。がんばって!
○文字列リテラルさん
ついこの間「ゆーてぃーえふ」を操る髪飾りを手に入れた。髪飾りなしでも使えるのだが、そしたら
英語の先生が急にブチ切れたのでビックリして泣き出してしまった。
○拡張for文さん
汚い制服を引きずりながら「Rangeちゃん…Rangeちゃんさえ来てくれれば…」とうわごとを繰り返す毎日。
早く彼女を助けてあげて下さい。
○Traversalさん
元Rangeさん。「お前わかりにくいから」と改名させられ、大変わかりにくくなった。
拡張for文さんが精神を病んでいく様を辛そうに眺めている。
○asyncさん
入学早々D組行きを宣告された悲劇の子。
ときどき当てても反応しないと、ある先生が職員会議でもらしたばっかりに大問題になり
とても通学できない重病だと判断されたらしい。かわいそうに。
○動的配列さん
入学が延期された。C99クラスにはとっくに通ってるんだから早くしろと怒っているらしい。
双子の妹のdynarrayさんも入学延期中。
○optionalさん
入学が延期された。「どうせ私はoptionalだしー」と本人はあっけらかんとしている。
○exempt_ptrさん
shared_ptrさん達の引き立て役として呼ばれた末妹。アホの子。,
「sharedおねーちゃんはさんしょうカウンターですごいんだぞー」と自慢しているが
もちろん本人は何もわかっていない。入学はもう少し先になりそう。
○禿
校長先生。動的配列さんを自分好みに魔改造すべく企んでいるという噂。
面白いなあ。誰かラノベ書くしかw
俺のC++達の妹は友達が少ないがこんなにかわいいわけがない
C++学園キターーーー!!
俺がC++学園に底辺サンプルとして拉致された件
動的配列さんはC99クラスには通ったけどC11でクラスになじめず保健室登校(Optional feature)になってしまった
今では、いない子扱いされてる
俺のC++コードが修羅場すぎる
やはり俺のコードは間違っている
俺の脳内選択肢が、C++11を全力で邪険にしている
みんなC++のことが大好きで仕方ないんだね
私が書けないのはどう考えてもC++の言語仕様が悪い
プログラマーにしようと校長先生そっくりの禿を錬成してみたら、
俺がアスペになっていました
お前ら俺の同類ばっかかよw
俺の教室にC++はいない
Cぷらぷら!
とりあえずいままで出番がなかった auto さんが大活躍してくれればおれは他どうでもいいや
>>26 なるほどなるほど要するに
auto exp = [](){ /* 適当 */ };
auto eq = [](){ /* 適当 */ };
auto ne = [](){ /* 適当 */ };
auto r = exp ? eq : ne;
auto p = find_if(range, r);
みたいに、if文は三項演算子とラムダ式に、ループ文はアルゴリズム関数とラムダ式にして
書けばいいんだろ?1行で書くのが偉いんだよな?身の回りで最近見掛けるわ。
死ねばいいのに
さすがにその場合expとeqはloop型にするだろ……常識的に考えて……
bool型のtypoだ。疲れてるんだな
ラムダ式を書き連ねて合成して伸ばして等間隔に刻んでサッと茹でて丼に盛って複雑な関数を作る
って書き方は、その関数の生成が実行時になる現在だと悪い冗談だけど、constexprが一般化して
コンパイル時に回るようになったら、思いの他流行りそうな気がしてる。
近い将来、関数言語かぶれ死ね!黙れロートル!というやり取りがされるのかな?とw
gccのトランポリンコードと勘違いしてんじゃねーの
bool,int,float A(true,0,0.0);
A = true;
A = 1;
A = 2.0;
if( A )
return true;
if( A == 1 )
return true;
if(A == 1.0)
return false;
if(A==2.0)
return true;
vectorにunique_ptrを入れていろいろやってみているんですけど、これ結構不便ですよね?
Range-based forを使おうとするとconstがなんたらかんたらでエラーが出るし、
無理に代入しようとするとmoveが起きて、元のスマポの中身が空っぽになる
イテレータでunique_ptrのポインタでも何でもいいからうまく回す方法ないですか?
お前のコードが悪いんだと思うよ
auto_ptrの破壊的セマンティクスからmoveセマンティクスに変わっただけで、コンテナに入れられたり
デリータを指定出来るところは改良されているが、そういう用途には適してないだろ
>>39 そうですか・・・ありがとうございます
大人しくshared_ptrでも使う事にします
for (auto& i : v)
std::cout << *i.get() << ' ';
こんな感じでコンパイル通るけど?
例として出したコードではエラーにならず動いてるのになにを問題にしているのかがわからん
for (auto i : v) にしたいってことか?
constなんたらだの、代入だの、forにauto使わずconst参照じゃない型を書いたんじゃねーの
>>41 gcc4.8.1ですがエラーになります
>>42 エラーにならないコードを書くと
>>38になりました
でも実行結果がおかしいですよね
>>44 違います
moveコンストラクタがいつ動くのかしっかりと把握しないとunique_ptrは怖いですね
楽をするならshared_ptr一本です
エラーになるコードをideoneに貼れば一発でここの住人が直してくれるって言ってるんだよ。
>でも実行結果がおかしいですよね
きちんとソートされているように見えますけれど。
>moveコンストラクタがいつ動くのかしっかりと把握しないとunique_ptrは怖いですね
ちょっと言ってる意味が分からないですね。
gcc4.6.4だと動くな
4.7.3と4.8.2も動くな
必死ww
動かないソースコードも貼ってないのに
意地でもエラーを書かないあたりは釣りなんだろう
お前が書いたコードが糞でFA
遅れましたすみません
私の偽物が現れて荒らしているようで申し訳ありません
これでちゃんと通り、正常に動きました
ありがとうございました
for (int i = 0; i < N; i++)
v.push_back(std::unique_ptr<int>(new int(distribution(twister))));
for (auto& a : v)
std::cout << *a.get() << ' ';
std::cout << std::endl;
std::sort(std::begin(v), std::end(v), [](const std::unique_ptr<int>& u, const std::unique_ptr<int>& v) { return *u.get() < *v.get(); });
for (auto&a : v)
std::cout << *a.get() << ' ';
std::cout << std::endl;
>v.push_back(std::unique_ptr<int>(new int(distribution(twister))));
氏ね
これはひどい
>>54 どこが死ぬに値するのか全然理解できませんが
デバッグしづらい
複数の実引数の評価順で問題がでる場合と勘違いしてるか
右辺値をとってムーブするpush_backがあることを知らないかだろ
emplace_back使うとか?
敢えて言うならoperator newの後に
distributionが例外をスローすると困る?
その場合は大丈夫でしょ
正解は?
問題ない
変更に弱い(変更で問題を起こしやすい)コードではあるよな。
emplace_back()を使うと実行結果がおかしくなるな
なんで?
まず66のレスが馬鹿っぽいことから
原因は66のおつむにあるとみていいだろう
>>66 std::cout << std::boolalpha << std::is_sorted(std::begin(v), std::end(v), [](const std::unique_ptr<int>& u, const std::unique_ptr<int>& v) { return *u.get() < *v.get(); }) << std::endl;
これでも付けてみろや
そもそもintなんかvectorに直接突っ込めばいいだろ
わざわざunique_ptrなんか持ち出すまでもない
大丈夫、みんなそう思ったけど敢えて突っ込んでない
いやそこは突っ込みどころじゃないから
>>38 >中に入れるクラスはintとは限りません(簡単のためにintにしてあります)
>>69 >>38 >中に入れるクラスはintとは限りません(簡単のためにintにしてあります)
emplace_backの使い方は合ってるのか?
何書いてるのか知らんけど
emlace_backはクラスにmoveコンストラクタが書いてないとコンパイル時にエラーになるな
普通のコンストラクタだけで大丈夫だろ
emplace_backの&&はテンプレートパラメータに対しての指定だから右辺値参照と確定するわけじゃない
universal referenceでぐぐれ
右辺値参照、時々なんとなく分かった気になるけど、暫くしてよく考え直してみると
分かった気がしただけでやっぱりイマイチよく分かってないことに気付く。死にたいorz
思い切り重いクラスでもvectorに入れて速度比較してメリットを実感するしか方法はなさそうだ
universal reference 初めて聞いたわ
というかプログラミング言語C++11の日本語訳まだ出ないのか
英語版は持ってるけど目がチカチカする
ISO/IECもあるけど
日本語が欲しいなら江添さん()のオナニー書がオヌヌメ。
参照の縮約?
>>81 C++11本書くから寄付くれって言ってた人?
有耶無耶にして逃げるのかと思ってたら、無事完成したのかw
>>84 なるほど、事実だけを端的に表現すると「完成はしなかった」ということかw
ラストスパート中。まもなく一応の完成となる、と本人は言ってる。
途中まで読んだんだけど、ひたすら規格書の仕様を
呪文のごとく垂れ流ししてるようなつまらなさ。
規格を読んでれば知ってることばかりだし
Exceptional C++とか禿本のように
読んでwktkするものではない。
>>86 コア言語だけは完成、な
ライブラリは執筆の目途すら経ってないらしい
そんだけのものでも、これページ数にしたら結構なもんやで
>>87 いやそれでいいんだ
画面で見るのと本で読むのとではなぜか全然違う
もともと日本語で読める標準C++(11)の規格の解説を書くというテーマだからそういうもの
JISの事か
ゴニョ・・・・
universal referenceてスコットメイヤーズの造語だった気がするけど
禿の本にも出てるんだっけ?
規格的にはreference collpasingだとか言ったと思う
94 :
デフォルトの名無しさん:2013/11/06(水) 10:06:47.95
Varidec Templatesの使い所がいまいち分からないんだけど
うまくまとめてあるページない?
型安全なprintfが作れます
iostreamと同じで、真似してはいけない悪い見本ですね
stream << 4 << "番目の素数は" << prime(4) << "です。" << 3.1415926 << "は円周率の近似値です。";
>>95 本質的には引数の数が違うだけのテンプレートを手で書かなくても自動生成してくれるってだけだから
template<class T1> void f(T1 t)
template<class T1, class T2> void f(T1 t1, T2 t2)
template<class T1, class T2, class T3> void f(T1 t1, T2 t2, T3 t3)
...
みたいなコードを書いてたり書きたかったりした場面で使うだけ
そんな説明じゃ わからんだろ
正しい使い方の例はstd::threadのコンストラクター
03までで型の数の制限無し・・・は無理だから制限のゆるいtupleをどう実装するか考えれば
variadic templateのありがたみと使い所の一つは理解できるでしょ
>>100 いやemplace_pushの方だろう
このアニメで久しぶりに萌え豚の感覚が蘇った気がする
ごめんまちがえた
>>95 std::functionの仕様とかみてみ
14になってもまだ自動委譲搭載されないのかよ
何とかしろよハゲ、残った両サイドの毛も全部引き抜くぞ
Java使いは身の程知らん癖にC++をJava化しようとするから嫌いだ
>>111 C++がきもいのは今に始まった事じゃないだろ
ともかく、ポインターに対する委譲のために
ひたすら、関数の引数を同じ名前の関数に引き渡すとかやってらんない。
コンセプトマップさんが生きてりゃ似たようなコト出来たんだがな。
惜しい人をなくしたもんだ。
C++のスレ…だよね?
114 :
デフォルトの名無しさん:2013/11/10(日) 17:33:24.95
「まだ C++ ではないもの」のスレだ
助けてびよーねすっぽすっぽ先生
びょーんすぽすっぽだろ。
自慢じゃねーが英語は分かんねーぞ!
誰か
>>110を日本語で説明してくれろ
プログラマのほとんどが英語を理解できない現状では
日本語の参考書は必要
VC++2010のratio_equalとratio_lessがバグってることに気付いた。
2012では直ってる?
std::ratio_equalとstd::ratio_less ね。
念のため
>>117 英語読まんでも
this is new stuff
ってとこから後のコード例だけ見れば何となく分かる
委譲する関数一個ずつ書かされるくらいなら今のままでいいよな
最後の方に提案外だけどpublicメンバーを一括委譲する案も出てるけど
個人的にはたぶんそっちしか使わないと思う
書き方は
inline m_pimpl;
とかの方がいいな、inline namespaceとなんか似てるし
usingはきもいよね = もそうだけど
>>121 委譲する関数名を書くのはIDEのコード補完が助けてくれそうな気がする。
ただ、usingだと後に続くのがネームスペースなのが委譲関数なのか特定できない気がする。
using以外の新しいキーワード導入してほしい。
C++は機能が少なすぎる
>>119 関係ないけどratioはここが美しいなw
typedef ratio<1, (_LONGLONG)1000000000 * 1000000000> atto;
typedef ratio<1, (_LONGLONG)1000000 * 1000000000> femto;
typedef ratio<1, (_LONGLONG)1000 * 1000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio<10, 1> deca;
typedef ratio<100, 1> hecto;
typedef ratio<1000, 1> kilo;
typedef ratio<1000000, 1> mega;
typedef ratio<1000000000, 1> giga;
typedef ratio<(_LONGLONG)1000 * 1000000000, 1> tera;
typedef ratio<(_LONGLONG)1000000 * 1000000000, 1> peta;
typedef ratio<(_LONGLONG)1000000000 * 1000000000, 1> exa;
>>125 ソースが巨大AAというのも探せばありそうだなw
ラムダ式の型を取得できないのは知ってたけど以下のコードの2)もダメなんだな。
auto lamda1 = [](int a) { return (a * 2) << 2; };
auto lamda2 = [](int a) { return (a * 2) << 2; };
lamda1 = lamda1; // 1)
lamda1 = lamda2; // 2)
1)はOK
型が違うんだからそりゃそうだろ
>>125 #if で囲まれてるところも余さず引用しなきゃw
typedef ratio<1, (_LONGLONG)1000000 * 1000000000 * 1000000000> yocto;
typedef ratio<1, (_LONGLONG)1000 * 1000000000 * 1000000000> zepto;
typedef ratio<1, (_LONGLONG)1000000000 * 1000000000> atto;
typedef ratio<1, (_LONGLONG)1000000 * 1000000000> femto;
typedef ratio<1, (_LONGLONG)1000 * 1000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio<10, 1> deca;
typedef ratio<100, 1> hecto;
typedef ratio<1000, 1> kilo;
typedef ratio<1000000, 1> mega;
typedef ratio<1000000000, 1> giga;
typedef ratio<(_LONGLONG)1000 * 1000000000, 1> tera;
typedef ratio<(_LONGLONG)1000000 * 1000000000, 1> peta;
typedef ratio<(_LONGLONG)1000000000 * 1000000000, 1> exa;
typedef ratio<(_LONGLONG)1000 * 1000000000 * 1000000000, 1> zetta;
typedef ratio<(_LONGLONG)1000000 * 1000000000 * 1000000000, 1> yotta;
>>128 メンバにラムダを持つクラスが作れないってことか
EffectiveC++14はよ
>>132 おっと、それはVC++がC++11対応を終えるまで待っていただこう
一生でないな
C++のどこを指して機能が少なすぎると言ってるのか全く理解出来ないが
(OSのエントリポイントをコードできないという意味か?)
C++は最高の柔軟性を持っている。アセンブラを除けば他の言語に出来て
C++に出来ない事は存在しない
標準ライブラリが少ないというのには同意する
他の言語がありすぎな気も
boostさんがいれば大概のことはなんとかなる
>>140 記述方式と言語の能力をごっちゃにしてる当たり「高級」言語しか使えないの丸見え
142 :
デフォルトの名無しさん:2013/11/11(月) 00:11:14.72
127 は型が「違う」のではなく「同じである保証がない」
つまりは「同じであることに依存してはならない」ということだ
C++ の元来のポリシーからして複数の typedef や typename が
たまたま同じなら通るわけで、127 が NG なのは唐突な印象だが
委譲の話、データメンバーのinline指定で委譲になって
usingで選択、とかならいいな
んでusing指定はdecrarator-idだけ指定すればOKで
必要ならdeclarator全体書けば特定のoverloadが指定できるとか
class A {
void f();
void f(int);
void g();
void g() const;
};
class B {
inline A impl using { f(int), g };
};
とか
まあ、そんな大きくコア言語いじるほど欲しい機能じゃないけど…
>>123 IDEに任せるなら今でもやろうと思えば可能なような
あとn1363のはusing identifier { }だけど、名前空間でそんなのあるっけ?
>>122 n1363の別名定義は=の左右の向きが受け入れがたいよね
VLAISとかgccが独自拡張してるのを追ってったらなんぼでもあるだろ
古い言語でもPascalの関数内関数と同じ機械語パターンはC++のラムダじゃ吐けないが
145 :
デフォルトの名無しさん:2013/11/11(月) 00:17:40.35
gccはデファクトスタンダードなのでgccの拡張を取り込んでいない
標準規格のほうが規格違反。
147 :
デフォルトの名無しさん:2013/11/11(月) 00:28:12.95
Cにウンコな記述方式を追加したのがC++なんだから
記述方式を否定したら何も残らん
って事は今の言語はみんなウンコ
>>123 C++03の時点でusingをclass内に書くとメンバー関数の
アクセス権昇格と降格に使えるようになってるから問題ない。
C++03の知識すら無いのにこのスレくんな
>>143 戻り値で得たオブジェクトに機能追加する際大活躍するぞ
std::unique_ptr< Base > base = Function();
Extention extention = std::move( base );
extension.BaseFunction();//Base型に自動委譲された関数
extension.ExtendFunction();//Extensionで追加した関数
IDEで自動生成すればいいという話も出てるが、
委譲先の型に関数追加するたびに自動生成とかやっとられん。
特に既にライブラリー化されたものだと自動生成は使えない。
なるほど、確かにそういうのはアリかも
そういえばスマートポインタが絡むとどう宣言するか難しいな
ポインターに限定せず、指定した変数の->が
自動で呼ばれる仕様にしとけばいいんじゃね。
委譲用の関数がコンパイル時に自動生成される実装に
なってりゃそれ程難しくもない。
多重継承恐怖症患者の憂鬱
C++がやっぱり覇権言語のような気がする
>>154 多重継承じゃポインターは継承できないぞ
157 :
デフォルトの名無しさん:2013/11/11(月) 15:33:24.45
イミフ
158 :
デフォルトの名無しさん:2013/11/11(月) 23:00:37.29
関数の戻り値から単純な図形と2次Bezierぐらいしか対応して無いPainter拾って来て、
3次BezierとSplineを追加したいなんて時に委譲すんだが
かったるいんだよな。特に委譲先のメンバーが20個以上あるような場合。
gccのfloat最適化が期待したほどじゃなかった人?
160 :
デフォルトの名無しさん:2013/11/12(火) 08:45:52.81
質問です
http://ideone.com/LDs6Av 2つのクラスの間でoperatorを定義したいのですが、先行宣言した方のクラスではdecltypeが書けません。
これをdecltypeを使えるようにするにはどのように書けば良いのでしょうか?
この例ではdoubleと書いてありますが、templateで他の型も使えるようにしたいと思っています。
テンプレにすりゃいいんじゃねーの
>>162 ありがとうございます
http://ideone.com/WPhg2Q これで行けそうです
classの中でoperator*を定義しようとすると、もう一つのclassのdがprivateで
型を取得出来ないので、アクセサを付けるとカプセル化を破る事になるし、
だったらfriendでoperator*を外部に関数で定義した方が良さそうでした
んな現行規格の話はC++初心者スレで聞けよ
decltypeが現行規格か?C++11ならそうだけど
初心者スレは03までじゃないとスレチな気が
167 :
デフォルトの名無しさん:2013/11/22(金) 13:24:27.31
現行規格は C++11
異論をはさむ余地はない
ただし
>>163 は decltype なくても typedef で解決できることだね
template <class T>
class A {
public:
typedef T D;
private:
D d;
public:
A(D a) : d(a) {}
};
>>167 typeを外に晒してもoperatorの戻すtypeは結局decltypeが必要になるんじゃね?
どんなtypeとどんなtypeを演算するのかわからないんだから
169 :
デフォルトの名無しさん:2013/11/22(金) 14:16:20.77
>>168 それは確かに C++11 で改良された点だが
cout<< に流せる型なら特殊化でもしておけば?
class T は理屈の上ではあらゆる型だが
class A で達成しようとしている目的から外れすぎた
馬鹿げた T はシカトってのもよく使う手だね
C++11 なら、これも type_traits や static_assert でもうちっと善処できるけど
特殊化したんじゃtemplateにする意味がない
どんな型でも受けたいんだから
結局
>>167でdecltypeを使わずに具体的にどう書くかは示されてないのか
172 :
デフォルトの名無しさん:2013/11/22(金) 14:29:55.90
あるいは何型の戻りを期待するのか陽に指定とかね
operator * では無理だけど、そんなら普通の関数だし
どんな型でもって、特定のメソッド要求してる時点で型が限定されてんじゃん?
>>173 特殊化されてない同名メソッドと
型に付随する特定のメソッドとは別概念じゃん?
はよ初心者スレに帰れよ
ガタガタ抜かさんと
>>167書いた奴はideone.comに何かプログラム例上げてみ
177 :
デフォルトの名無しさん:2013/11/22(金) 18:18:17.64
書けない癖に偉そうな口を聞くからそうなるんだよアホ
179 :
デフォルトの名無しさん:2013/11/22(金) 20:29:56.47
>>178 煽れば何か見せてもらえると思ってんだろバーカ
180 :
デフォルトの名無しさん:2013/11/22(金) 23:43:06.64
お前のは見たくないからいいよ。
勿体付けてるんじゃなくて、本当に書けないのは誰が見ても分かる
退屈だからoperator ** (ベキ乗)でも定義するか
class num {
double a;
struct num2 { double a; num2(double src) : a(src) { } };
public:
num(double src) : a(src) { }
const num2 operator *() const { return num2(a); }
double operator *(const num2& b) const { return pow(a, b.a); }
double operator *(const num& b) const { return a * b.a; }
};
int main()
{
num a(3.0), b(4.0);
double c = a * b; //12
double d = a ** b; //81
return 0;
}
class num2 { friend num; double a; num2(double src) : a(src) { } };
としてもっと完全に隠蔽すべきだったな
threadとかasync周りについて詳しく解説したページない?
何かよくわからん
threadはともかくasyncは出来損ないなので勉強するだけ無駄
188 :
デフォルトの名無しさん:2013/11/23(土) 13:23:37.41
>>182-183 num2 無しにしたらどうよ
class num {
double a;
public:
num(double src) : a(src) { }
operator double() const { return a; }
const num *operator *() const { return this; }
const num operator *(const num *p) const { return pow(a, *p); }
const num operator *(const num &amp;b) const { return a * b; }
};
int main()
{
num a(3.0), b(4.0), x(0), y(0);
double c = a * b; //12
double d = a ** b; //81
x = a * b; //12
y = a ** b; //81
return 0;
}
相手されないと死ぬ幼児です
threadはどうなの
C++14で何か変更あるの
shared_(mutex|lock)
async 件、誰か kwsk!
196 :
193:2013/11/24(日) 02:46:41.05
ごめん少し言葉足らずだった
asyncができそこないって件kwsk!
197 :
デフォルトの名無しさん:2013/11/24(日) 04:47:47.62
getせずにfutureが破棄されたらどうすんのか決まってなかったけど、そのままデタッチしたら危ないから終了までブロックするようにした。
そしたら、
「それasync違うじゃん、止まってほしくない時まで止まっちゃうの問題じゃね?非同期処理を行いたい時はUIスレッド止めずにバックグラウンドで何かしたいときとかなのに!」
とか、
「非同期ならそのスレッド止めずに結果はコールバックで受け取るようにすべきで、そのライブラリ無いのおかしくない?でもそれ作ったらいまのasyncいらんよね。」
とか、
「Windowsだとこんな使い方してもスレッド起動のコストでかすぎて大抵遅くなるだけだわー」
とか、色々なネガティブ要素でもういっそdeprecateにしたほうがいいんじゃないか?って話しになってるんだと思ってる。
個人的にはできそこないって言うほどダメなもんでもないと思うけど・・・。
違ったら詳しいひとツッコミよろ
時代はC++14
コンパイラがない
僕達にはclangがある
vc++のことも忘れないであげてください
パターンマッチは入らないのかな
スマポが配列を指す時に苦労した
これデフォルトのデリータがdeleteなんだな
だからカスタムデリータでdelete[]をラムダ式か何かで指定するか、
std::default_delete()を使わないといけないのか
デフォで配列版が用意されてるのはunique_ptrだけなんだな。
なぜだろ?
>>205 オブジェクトを複数のオブジェクトで共有するならまだしも、
生配列を複数のオブジェクトで共有して何に使うんだよ。
要は生配列共有すんなって事だ。
vectorかarrayを使っておけというところじゃね。
C++の動的配列って中途半端だよね。
delete[]で各要素のデストラクタ呼べるように
サイズとか内部的に持っているのに普通には使えないとか。
deleteとdelete[]使い分けろとか。
>>207 new T;で生成したオブジェクトdeleteする時にnew T[];とどうやって区別するんだ。
常にnew T[]した時余計な情報載せるのか?
>>207 デストラクターが無い場合に要素数を持たないようメモリをケチること許す言語仕様ゆえ
>>209 Cの配列と互換性持たせるためでもあるな。
それは関係ないんじゃ
使う側が見たnew式の結果は区別が付かないだから
>>205 unique_ptrには他のスマポと違ってコピーコンストラクタがないから
配列版=>単一版への誤ったコピーが起きにくい。
214 :
デフォルトの名無しさん:2013/11/24(日) 22:22:47.31
>>211 単体のnewに要素数情報乗っけられるのも困るな
1000回newしたら8000バイト近くdeleteの為だけに主記憶領域食われるんだからな
>>213 テンプレートコンストラクタだから正しく言うとコピーコンストラクタじゃない
コピコンじゃないの!?
コピコンが無いってのは確かだが、配列=>単一のコピーの話をするんであれば問題なのはそこじゃない
配列=>単一のコピーってどういう話?
>>219 unique_ptr<T[]> a(new T[8]>;
unique_ptr<T> b(a>;
ってのが通ったらまずいが、unique_ptrには下のコンストラクタがないから大丈夫。
shared_ptr<T[]> c(new T[16]>;
shared_ptr<T> d(c);
ってのが通ったらまずいが、shared_ptr<T[]>なんてものはないから大丈夫。
shared_from_this()というのがいまいち理解できない
これどうなってんの?
やってることはトリッキーだけど単純なことなんだがシンプルで具体的な使用例がだせないな
shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに
そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得るというイディオムで使うんだけどな
なるほどかなり特殊なケースみたいだな
225 :
デフォルトの名無しさん:2013/11/25(月) 22:42:55.82
>>222 「shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに
そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得る」というイディオム
長えよ
イディオム名はそのまま『shared from this イディオム』でそれはどういうもの?って説明が
>>222だろ
boost::shared_ptrに記憶領域の番地を入れた際、
要約値を鍵にした連想配列(hash map)に
記憶領域の番地を格納。
boost::shared_from_thisを実行した際、
この連想配列からthisの持つ番地で、
boost::shared_ptrをとってくるって仕組みじゃないか?
内部にthisを指すweak_ptr持ってるだけだよ
後はshared_ptrのコンストラクタがenable_shared_thisを継承したクラスを特別扱いしている
参照カウンターの整合性はどうなるんだ?
>>229 どんなケースで問題が起こると思ってるの?
newして返したboost::shared_ptrと、
boost::shared_ptrで確保した、boost::shared_ptrを返した時。
特に片方が共同所有権としてつかわれ、
片方がEventの委譲用とかよくありがちじゃん。
それで何か問題になるのか
長文失礼
shared_ptrのオブジェクトの管理領域は次のようになっている
管理領域の参照カウンタ、オブジェクトの参照カウンタ、オブジェクトへのポインタ、デリータへのポインタ
ここで、shared_ptrは管理領域、オブジェクト両方のカウンタを増減させる。 weak_ptrは管理領域のカウンタのみを変更する。
shared_ptrの破棄によってオブジェクトのカウンタが0になったとき、オブジェクトは解放される。
しかし、管理領域は全てのweak_ptrが破棄されるまで生存する
そして、weak_ptrからshared_ptrを構築する際には、shared_ptrの管理領域へのポインタをweak_ptrが指す管理領域へのポインタへと設定している
長すぎと言われた、連レスすまん
enable_shared_from_thisは内部にweak_ptrを持っていて、shared_ptrのコンストラクタはenable_shared_from_thisを継承したクラスに対しては特殊な動作、すなわち内部のweak_ptrに管理領域へのポインタを設定する動作をする
shared_from_this関数は内部のweak_ptrからshared_ptrを構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される
全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
>>231 > newして返したboost::shared_ptr
わからん。何を new ?返すってどこからどこに?
> boost::shared_ptrで確保
わからん。 shared_ptr に何かを「確保」する機能なんて無いよね?
さっぱりわからん。
普通に使えば普通に使えるライブラリを
浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す
C++ではよくあること
そういや shared_ptr を使っているインスタンスに対してVisitorパターンだったかやってみようとしたら
途中で生ポインタに変わっちゃうんであきらめたことがあった
class Hage : public Element
{
virtual void accept(Visitor &v){ v.visit(this); } // <- このとき
};
enable_shared_from_this ってのを知っていたらうまいことできたんだろうか
うん
static_pointer_castとか面倒だけどこれ使わないと未定義の動作になっちゃうのね
std::accumulateって情報落ちの対策してるの?
全然
なんで現行規格や規格外の話ばっかしてんの?
規格とか仕様とかどうでもいいと思ってるから
もうそれ以上VC++さんを責めるのはやめてあげてください。
Windowsユーザーを嫌いになっても、VC++のことは嫌いにならないください!
2013でもconstexprコンストラクタが使えないんだっけ?
スレ違い
じゃあC++1yの話題をふってくれ
何も無理してスレを伸ばすことは無い。
template <typename T>
void foo (T val)
{
if (std::is_reference<T>())
std::cout << val << " is reference." << std::endl;
else
std::cout << val << " is not reference." << std::endl;
if (std::is_const<T>())
std::cout << val << " is const." << std::endl;
else
std::cout << val << " is not const." << std::endl;
}
int main()
{
int x;
foo(std::ref(x));
foo(std::cref(x));
}
これちゃんと動く?俺の所では両方とも"not"になってしまうんだが
gcc4.8.1
そりゃそれ自体はコピーだからな
ああなるほど
ついでにvoid f(T &&)にしたところで
const int &自体はconstじゃないから
コピーだからじゃなくて、fooに渡されるのはstd::reference_wrapper<T>だからだろ
std::reference_wrapper<int> じゃないの
そうだね
>>251のfooのTは
1番目 std::reference_wrapper<int>
2番目 std::reference_wrapper<const int>
になる
うへ('A`)
これ間違いなんかい
C++ Standard Library 2nd P132
5.4.3 Reference Wrappers
Class std::reference_wrapper<>, declared in <functional>, is used primarily to “feed” references
to function templates that take their parameter by value. For a given type T, this class provides
ref() for an implicit conversion to T& and cref() for an implicit conversion to const T&, which
usually allows function templates to work on references without specialization.
For example, after a declaration such as
template <typename T>
void foo (T val);
by calling
int x;
foo (std::ref(x));
T becomes int&, whereas by calling
int x;
foo (std::cref(x));
T becomes const int&.
間違ってるね
Standard Library 2ndのasync/thread回りをようやく読み終えた
これは難しい・・・
次はC++ Concurrency in Actionを読むけどどこまで理解出来るやら・・・
しかしこれを理解しないとマルチコアのメリットが活かせないわけだしなあ
何を言っているんだ
マルチスレッドが難しい→まあそうだがスレ違いだ
C++のasyncが難しい→んなもの知らなくてもマルチコアは活かせる
263 :
デフォルトの名無しさん:2013/12/06(金) 20:26:17.66
ライブラリ作る人のための最低限のツールだもんね。
GC周りと一緒で。
OpenMPとかだろ?そういうのじゃなくて移植性の高いのが欲しいわけで
265 :
デフォルトの名無しさん:2013/12/06(金) 21:00:59.87
ぶっちゃけスレ違いです。
asyncとthreadはスレ違いじゃないだろ
267 :
デフォルトの名無しさん:2013/12/06(金) 21:33:06.89
スレを扱うからスレは違って当たり前・・・w
どうでもいいけどなんでいつもageて書いてんの?バレバレなんですけど
269 :
デフォルトの名無しさん:2013/12/06(金) 21:58:36.96
sageる義務がないからさ
そんなことも知らないの? 馬鹿なの? 死ぬの?
あーだめだこいつ頭おかしいや
相手にしないでおこう
OpenMPはスレ違いだが、threadやasyncはスレ違いではない
れっきとしたC++11の話題だ
271 :
デフォルトの名無しさん:2013/12/06(金) 22:11:13.55
どうでもいいことは始めからぬかすな 顔おかしいの? 不細工なの? 相手いないの? 単為生殖なの?
>>270 ここはC++第三版(2011/9/1改訂)のスレではない
馬 鹿
11で追加された新参者だから14/1yで変更されない保障はないっていう意味だとか
C++11の話題はスレ違い
async退学の話ならして良い
clangでも入れるしかないか
VSに入れられるんだからそれで遊べる
現行規格はスレ違い
じゃあ次期の話をしようか。
委員会ドラフトってどうなったの?
無かったことにされるレベルで変更入りまくり?
C++11のスレがないじゃないか
C++11は現行規格なわけだし、
特別扱いする必要は無いんだお
了解した
しかし今のC++スレの質の低下はひどいもんだ
あそこでスレッドやらasyncを質問して果たして答えてくれるのやら
試してみよう
282 :
デフォルトの名無しさん:2013/12/07(土) 18:48:32.64
必要だと思う人がいるのなら、C++11のスレ作ったらいいんじゃないの?
283 :
デフォルトの名無しさん:2013/12/07(土) 19:03:22.93
アイちゃん認定されそう
C++14をやるのにどのコンパイラ使っている?
VC2013?
>>281 実際にthread,asyncを使っている奴は少ないだろうからな
対応遅すぎたって感じだし
VS2012でも2013でもいいからClangを入れてしまえばいいだろう
threadは実際にマルチスレッドプログラミングをするにはプリミティブ過ぎて使いにくいから
asyncが考えられたんだろうが、まだ完成度が低い
それにデッドロックやレース状態、リソーススタベーションを起こさずにスラスラプログラムを
書ける奴がどの位いるやら
C++14でもっとまともになるっしょ
僕ちゃんバカだからVSでのビルドわかんなーい><
何言ってんの
"clang visual studio 2013" とかでぐぐればいくらでも出てくるだろ
C++14なんてもう出るのか。C++11からすぐだったけど、何か不具合でもあったの?
禿も、またプログラミング言語C++書き直しやん。
これからのコンパイラはClangだらけになったりして
一番対応が早くて楽だしな
>>287 ぜんぜんないよ!失敗談はたまにでてくるけど
MSがclangを採用するって噂も一時期あったね、そういえば
よく知らんけどclang使うとなんかいいことあんの?
オナニーができます
>>291 clang関係のリクルート出してた件?
VSで採用って話までは疑問視されてたような
でも何やらされてるんだろうね
そそ、それ
疑問視されてたって話は知らなかったけど
IntelliSenseとかIDE側で使っているのかも知れないね
>>296 使ってたらコードが混ざってるだろ。
VSでclangを使うことを想定した作業とか、
差し替えた時の互換性を高める作業とか、そのへんじゃねーの?
C++ AMP がMSのC++後続の標準の言語になるのかね
規格のC++じゃ時代遅れなのかもな。C#で脱C++を開始した感じがあるからな
300 :
デフォルトの名無しさん:2013/12/08(日) 20:26:03.49
C++ AMPが何か知ってから語れ。
>>300 規格のC++じゃヘテロ対応できないだろ。GPU載っているCPUが普通だし
そんなのに対応するのにC++プラスアルファが必要で独自拡張。
脱C++
VS2013Expressでのclangのビルドってどうやるんですか?
>>303 clangをビルドしたいのかclangでビルドしたいのか。
>>301 それ、プラスするもんであって後続として元の物を置換するもんではないだろ。
306 :
デフォルトの名無しさん:2013/12/09(月) 00:45:43.62
スレ違いになるけど、いまデスクトップ用のGPGPUプログラミングって何が多いん?
C++AMP、openCL、CUDA等のGPUベンダの言語...
先端大好きのC++14野郎のお前らはGPGPUプログラムしている?
>>305 ClangをVS2013に統合したいんじゃないのかな
>>307 いやだから…
単に「clangとの互換性向上(統合含む)目的」とか
「MSがC++ AMP絡みでclang組み込む目的」とか
って推測なら、ああそうかもね、で済む話だろ
何故か
>>299が「C++ AMP」が「MSのC++後続の標準の言語」
だとか変なこと言い出すから
>>300みたいなツッコミされてんだよ
>>308 アンカミスかよ…変だとは思ったけど
>>299,301ならやりかねないと思ってその流れでレスしちまったorz
まず間違いなくそっちだろうけど、「clang"の"ビルド」と「clang"で"ビルド」を間違えてるなら指摘すべきじゃないの?
cの__Genericどう?いい感じ?
visualCみたいに使えるのかな?
他にやることあって出来ないんだよね
C++にはテンプレートがあるし…
313 :
303:2013/12/09(月) 10:30:36.34
すんません、clangをビルドしたいんです
clangはclangでできてないの?
315 :
デフォルトの名無しさん:2013/12/09(月) 10:50:48.50
VS2013のbuild targetは最近入ったばっかりだからVSは古いの使え。
>>313 Windows でやりたいのなら
教えて君には厳しすぎる。あきらめろん
ちなみに自称上級者の俺も(ry
茶化している奴がこのスレにはいるみたいなんだよ
炎上学習法という正式名称もあるみたいだけどw、このスレには通用しないから
C++って肥大化しすぎてもう終わりだ、なんて声聞くけど、代替言語あるの?
D言語ってどうなった?消えた?
facebookが採用したとかなんとか
facebookってPHP採用して、PHPが広く普及するのを牽引したらしいけど、
Dもそうなるのか?まさかな…
C++2011はオナニー言語なので代替など必要ありません。
実用には2003をお使い下さい
時代は Haskell
C++er なら割と簡単に Haskell を使い熟せると思うなぁ
>>326 関数を作ったり使ったりはわりと簡単
コンピネータまでいくと概念を理解できるかどうかだけど
問題は副作用の記述が面倒なところ
最初は文字列の表示もよくわからなかったよ
グリーがハスケル使ってたりするな。
ところで来年は本当に規格が改訂されるんだろうな
0xとか言い続けて2009年までに出せなかった能無し共の仕事は信用ならない
0x0b年に出たんだから良いではないか
331 :
デフォルトの名無しさん:2013/12/14(土) 11:14:27.04
GHもそんなこと言ってたな
0xXXでなく0xだったのでその解釈はおかしい
凄腕コンパイラ製作者のN氏は袖をまくりあげながらこう言い放つのだった
>>329 concept入らないと出さないでしょ
つまりは泥沼という訳ですね
>>332 メンドくせえな
16進数ってのを分かり易いように0x付けただけだよ
じゃあもう一度な
16進数で0b年に出たんだから良いではないか
>>336 もともと09年までに出す予定で0xと称していたものを
出せなかったら「0xを0?hと解釈すれば問題ない」などとのたまう
最低のゴミクズだな。
こういう奴らは次は「35進数と解釈すれば…」と言い出すに違いない
>>338 って言うか、お前本気で言ってるのか?
禿の洒落なんだが…
じゃあハゲはゴミクズってことで
ところでハゲって誰?
>>340 俺、ストラウストラップ(`ェ´)ビャーネ
C++11のおかげで自分の所ではboostがほとんど不要になった。
C++1yにboost::format相当は入るかな?
入りません
そうなんだ。
まあ便利だけど、あれだけのためにboostを入れる必要はないな。
うちはstdガン無視でboost継続利用中
今更変えると逆にトラブる
Boost.Format そのものじゃないけど
printf ライクに出力できるように
しようってのはペーパー出てた気がする。
お前らどうやって勉強してんの
アイエスオーとか買って読んでるのけ?
そんなの買う金あったらソープ池よ
isoならただで見れるだろ
お前はアホか
ソープ行く金で女口説けるだろ
特にこの季節、余り物オーラ見抜けば安いぞ
使い捨てませ
>余り物オーラ見抜けば
御教示ください
351 :
デフォルトの名無しさん:2013/12/16(月) 15:40:20.77
オーラ漏れは地雷の目印
触っちゃダメだよ、ひどい目に遭うよ
構ってもらえないオーラの方が食いつきがよさそう
ISO規格ってタダで見れたか?
C++2014ドラフトはタダだけど
最終ドラフトで充分って江添が言ってなかったっけ?
っていうか、 C++11 を見るくらいなら C++14 のドラフトの方がいいじゃん。
C++11のFDISはちゃっかりゲットしてる
俺はFDISの一歩手前のWDと、ISの一歩後のWDしか手に入らなかった。
>>354 規格に何を求めてるんだよ。求めるのは絶対的に正しい仕様だろ。
99%内容が同じでもドラフトに価値など無い。
おおざっぱに勉強したきゃそこらのサイトでも見た方が早い。
358 :
デフォルトの名無しさん:2013/12/17(火) 00:06:13.45
もうISOだけじゃなくて、ANSIでも安く売ってるんだから買えよな。
知らない奴は規格なんて縁のない人間なんだよ。
// しかしISOのサイトの広告は何とかならんのか。
ANSIがISO規格を売っているのですか?
初耳です。
本当に縁のある人はFDIS持ってると思う
円のある人は規格で
縁のある乞食はドラフトという訳ですね。
規格の話をしたいときにドラフトを持ち出すような
ナンセンスなことをしなければよいけど
日本規格協会でISO/IEC 14882を買ったら
PDFに「しおり」が付いていなくてブチ切れだったでござる。
JIS規格が時々画像のスキャンとか、夜道に気を付けろと言いたい。
なぜスキャン画像なのかと聞いたら、
検索できないようにするため、との答え。
2度ぶちぎれですよ!。
365 :
デフォルトの名無しさん:2013/12/18(水) 19:42:24.38
公文書を「売る」変な団体だしな
企業をタダで働かせて作ったものを売る
ことで経済産業省はボロ儲け。
そしてC++は企業に見捨てられたので
JIS規格が出せなくなった
>>362 FDISは最終案で、OK出たらそのまま出版なんですけど
>>367 OKが出たFDIS以外にドラフトは無いのか?
>>367 FDISは修正して再提出があるわけだが
「これが本当に最後のファイルドラフト」とか
恥ずかしい
「これが規格です」と名乗るための表紙の付いたお布施。
高々3万円ぐらい買ってやれよ。
江添がメシ食っていけないだろ。
371 :
デフォルトの名無しさん:2013/12/18(水) 20:38:21.25
もう都落ちしたそうだな
規格買ってもエゾたんに円は入らんだろ
規格を読むのはハードル高いけど最新仕様に関心はある層がいないと江添たん儲からない。
江添は正直どうでもよくて
規格策定にも金はかかるんだから
適切なキャッシュフローのためにも
お布施しておけっていう話だろ
取り敢えずコンセプトは要らんから
はよ出せ
>>374 規格団体が制定すりゃ使われるかっていうとそんなことないだろ。
コンパイラがちゃんと追従して、わかりやすい関連書籍も出て皆が使うから規格に意味があるんだ。
ちゃんと産業で使われるなら規格策定なんぞどこかしらの企業がスポンサーに付くわい。
言語のエンドユーザーたるプログラマが直接 ISO やら ANSI やらに金を出すのは適切なキャッシュフローではない。
というのが江添さんの持論です
規格委員って規格委員会から活動経費とか言ってお金貰っているのか?
それとも、無償でやっているのか。顔合わせてのミーティングとかだと
交通費とかかかるよな。
>プログラマが直接 ISO やら ANSI やらに金を出すのは適切なキャッシュフローではない
規格はよだせ(出して欲しい)
→でも俺は金 払わない
→金はどこかの企業がだせ
この思考がヤバい
それ美しい日本の精神じゃないか。
規格の本来の目的は乱立していたものが統一されることで
産業全体が効率化されて最終的にエンドユーザーが
メリットを享受できるようにすることだろ。
今のC++1yは規格策定=新機能の開発になっていて
何か違うと思うんだ。
なんで最初にわざわざカオスな状況を用意しなきゃいかんのよ
新機能を開発したい人たちが複数居て、ばらばらにやったら方言が乱立するから、一カ所でやって即規格化しようぜ
ってのが今のC++の規格策定プロセスなわけでしょ?
誰にとってもその方が望ましいと思うんだが
383 :
376:2013/12/18(水) 22:56:16.55
>>379 > →でも俺は金 払わない
だってそうだろう。 工作が趣味だからってネジやら合板やらの規格策定に金出すか?
エンドユーザーは金を払って部品を書い、工作指南本を書い、道具を買うけど、
その背景にある規格を一貫させるのは各業界でやるのが筋だろ。
規格策定の分の費用が売り物の値段に上乗せされてたってかまわないが、
直接支援するのは筋が違う。
>>383 「統一された規格を実装したコンパイラーが欲しい」と
「規格書が欲しい」を一緒にするなよ。
前者の人が規格策定行為に直接金払わないのは当たり前。
385 :
デフォルトの名無しさん:2013/12/18(水) 23:32:58.20
江添さんが金くれってごねてるの?
>>377 どうでも良いことだが
江添は長音表記が通産省労害派(JIS Z 8301)じゃなくて
内閣府1991告示二号派だから別人
・コンパイラー
・コンピューター
・メンバー関数
・コンストラクター
>>385 江添はFDIS推奨らしいから違うだろ?
【重要】
落ち武者ネタは禁止します、使用しないでください。
万が一 アスペ落ち武者ネタが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
※ スレタイと
>>1をよく読んで下さい
388 :
デフォルトの名無しさん:2013/12/18(水) 23:50:35.22
落ち武者ネタって何?
エゾたんのことか?
スレに沿う話題ソースにも非常に有益な御仁だし、話題から外すのは反対だな
偏屈ジジイなのは否定せんけど、アスペ落ち武者呼ばわりされるほど恨み持たれるような事してるのか?w
まーああいう人が浪人してて金に困ってる、って時点で盛り下がってるんだな〜とは思う。
本来なら引く手あまたじゃなきゃまずいと。
ああいう人は金に困ってなきゃおかしいです。
好きなことしかやらないんだから。
どちらにも同意できて困る
もし江添を雇うならエウ゛ァンジェリストとしてだろうな。
ああいうのは本人が面白そうにやってると説得力があるからな。
不自由な製品はお断りだからな
あいつはpdfに親でも殺されたのか
偏屈ジジイっておまえなあ、江添くんまだ20代だぞ
あんな自由に縛られた奴が20代なわけないだろ
>>383 JISやISOは企業で使うために制定してるもの
趣味で作る分には規格書不要、コンパイラ付属のマニュアルでも読んどけ
見てて面白いから良いだろ
>>378 他のISOに関わったことあるけど、手弁当でした。海外出張年4回と普段のも。規格をネタに解説書書いて出版しましたが、マイナーな規格なので、予想通り初版5000部で絶版しましたし。
>>378 2005年くらいまでは会社から支給があったけど、
今はもう持ち出しですよ
普通の勉強会の方が交通費が出ることもあるくらい
江添とか IT 成金企業が飼っときゃいいのに。
なんで企業が金にもならんキチガイ雇わにゃならんのよ
>>401 それは援助金を集める担当者がサボっているのが原因に間違いない
>>403 話題にはなるんじゃ
忘年会に集まるような怪しい連中じゃ無理だろ
知り合いにやね某やえぴなんとかさんみたいな身の振り方上手い人がいくらでもいるのにどうしてこうなったんだろう
えぴなんとかはともかく、その例だと知り合いが悪いんじゃねえの。
誰か江○添を食わせてやれ
→俺は金出さないけど
→どこかの成金企業は金持ってるだろ
この思考がヤバい
409 :
デフォルトの名無しさん:2013/12/19(木) 18:39:57.38
やねさんと江添さんて知り合いだっけ?
というかさ、C++関係で専業の人間なんていないだろ
えぴさんにしろ、若手だとBoost勉強会の人にしろ、本業は別にあるわけだしさ
C++の専業伝道師のロールモデルなんてないわけで
それでも副業するのが嫌なら、苦労するしかないわいな
えぴさんの本業ってなんなの?
直接仕事取ってこれるタイプのIT土方
いんちき競馬予想ソフト書かされて
いやになったんじゃなかったっけ
Will Code HTML for Food
仕事で使うのはC++のみって奴ってどれぐらいいるんだ
仕事では他の言語が主でC++が副って奴が多いんじゃないか
専業ってなんだよ
シープラプラなんて既に
天ぷらオナニー用言語だろ
趣味でやるのが正しい使い方
趣味なら余計にこんな糞言語使いたくねえ
むしろそれがいい
右辺値山椒だけでご飯3杯はイケる
web言語の方が御飯たべれる
と、ここまでITドカタで御飯食べるのが精一杯な人間の世界観
えぴさん、普段はとってもわかりやすい文を書く方なのにどうして本にするとわかりにくいの?
ファンとして悲しい‥
その程度の能力だからなんだろ
誰だか知らんがソイツは
読んだ直後は分かったような気になるけど、暫く経ってよくよく考えてみると実は全然分かってない。
リピーターを生み出す良い本とはそういうものだ!w
>>422 マは底辺・低脳者の職種だから、全然分かってないが当たり前だよ
日本語ができない奴でもOKな職だし
422のような馬鹿な信者が湧くことから
当人のレベルの低さが伺える
けれど、皆さん、日本語は話せないけれど英語は読み書き出来るんでしょ?
なぜ、c++のWeb Frameworkは流行らないのか
危ないから
>>427 何それ。emscripten?
サーバー側の話?
>>379 コンパイラに金を払ってりゃコンパイラのマニュアル読んでりゃ問題なくね。
gccとかclangとかはそれらが規格に準拠してて欲しいと思う個人や企業が身銭を切る。
ただ、規格に準拠してて欲しいと思う個人や企業ってのが、
規格に興味のない個人や企業が生んだ非互換のゴミに悩まされた被害者だと考えるといろいろとアレだけどな。
>>429 CppCMS, Wt, Tree Frog
>コンパイラのマニュアル読んでりゃ問題なくね
間違いではないんだが、独自の方言が普遍的と勘違い
する人を量産してしまう罪は重い
sdkjla;hjklfdjl
>コンパイラのマニュアル
文法の説明が無いくせに方言まみれのG++は
どうしようもないUNKOという訳ですね。
規格への準拠を期待して騙され続けているG++ユーザーは不憫です。
規格書に金出せないアマチュアなんだからそれで問題無い
プロは目的と手段を混同したりしない
こういうこと言う奴に限って混同したプロ崩れのクズ。
特長は「いつも他人からみて幸せそうには見えず、
愚痴ばかりこぼしている」タイプ
439 :
デフォルトの名無しさん:2013/12/20(金) 20:01:16.90
おまえのことかw
440 :
デフォルトの名無しさん:2013/12/20(金) 20:11:14.74
プロはプロを自称しない。
おまいら、コンパイラやインタプリタの企画書なんて読むの?
442 :
デフォルトの名無しさん:2013/12/20(金) 20:28:13.35
【新 企 画】
新 宿 コ ン パ 2 0 1 3
ホ ゲ ホ ゲ 株 式 会 社
企画など読む気も無いし読む必要も無い
言語の規格とコンパイラーの説明だけでok
おまいら、規格書を元に修正要望とかバグパッチ書いたりするの?
規格書はム板でアホを叩くために必携
上司「今年のコンパの企画書を明日までに提出しなさい」
俺「承知しました」
↓
「開催の趣旨が薄れたため 今年度は開催しない」
☆★★
449 :
デフォルトの名無しさん:2013/12/20(金) 21:42:23.42
同音(本当は同音じゃないけど)異義語が、いつまで経っても痛いね
>>444 MSにバグレポート出してるよ
別のチームはOSS向けのパッチ書いたりしてる
言語の規格でなくコンパイラー/インタープリターの規格
に相当するものと言ったらJavaか?
読んでない
>>431 > 規格に準拠してて欲しいと思う個人や企業
いやいやw
俺は金を出さないけどお前らは出せって意味じゃね
gccやclangが規格に準拠して無くても構わないから規格購入費とか知ったこっちゃねーです。
VSは金払って買ってるから準拠してて欲しいと思うが金は払ったからあとはMSさん宜しくです。
VisualStudioから入って、どうやってプログラムが書けるようになるのか謎杉
文法を覚えたばかりで小説を読んだことのない小学生に、
小説を書けって言ってるようなもの
スレ違い&釣りはスルー
458 :
デフォルトの名無しさん:2013/12/22(日) 21:10:21.66
言語の規格から入って、どうやってプログラムが書けるようになるのか謎杉
文法を覚えたばかりで小説を読んだことのない小学生に、
小説を書けって言ってるようなもの
460 :
デフォルトの名無しさん:2013/12/23(月) 02:23:24.83
規格にはコード例が載っているじゃないか。
規格は仕様の背景や考え方の説明が乏しいので
初心者の学習には不向きです
禿にウザい信者が湧くのにはそれなりの理由がある
462 :
デフォルトの名無しさん:2013/12/23(月) 11:05:02.18
規格は文法だけじゃなくて用例も少し載ってるから
>>459はちょっと違うね。
463 :
デフォルトの名無しさん:2013/12/23(月) 11:06:19.83
そういやANSI C, ISO C++の規格に用例が多いのはK&Rの影響かね。
規格に載ってるサンプルはあくまで規格を説明するためのもので、適切な使用例というわけではないよ。
むしろ変な例が多い気がする
規格の落とし穴や注意点を説明するような例が多いしな
むしろルールを仕様として書かずに
例が仕様となっているクソ説明
469 :
デフォルトの名無しさん:2013/12/23(月) 21:04:22.02
いやいや。
471 :
デフォルトの名無しさん:2014/01/11(土) 16:47:14.70
誘導されてきました。
14のジェネリックlambdaが待ち遠しいんですけど、デフォルト引数を与えたりできますか?
fn を例えば2変数のファンクタとして、
[fn](auto x = 8) { return fn(1, x); }; みたいな。
よろしくお願いします。
無理
473 :
デフォルトの名無しさん:2014/01/11(土) 22:15:52.14
無理ですか・・・。
じゃあ仕方ないですね。
どうもありがとう。
可変長引数使うとか。
475 :
デフォルトの名無しさん:2014/01/12(日) 09:09:35.68
>>474 [fn](auto x、...) { return fn(1, x 〜
という形で、〜の部分を自分で埋めてくってことですよね。
可変長引数はできるんですか?
C++でfopen_sが使えるようなるのはいつですか?
477 :
デフォルトの名無しさん:2014/01/13(月) 02:56:51.06
_s系には何も期待していない
_s系の関数なんてつかってる人いるの?
あれって、存在の必要性をまるで感じないんだけど。
個人的には、iosteamくらいいらない子
それより、snprintfがほしい。
>>478 std::stringstreamとかstd::istream_iteratorとか捨てたもんじゃないと思う。
でもprintfは欲しいよなぁ・・・
sprintf_sでいいじゃん
iosteamに対して使いたいんだよ!
スチーム?
Boost.Formatを使うかstd::putfが標準に入るのを待つか
484 :
475:2014/01/13(月) 09:56:30.21
失礼しました。ドラフト見たら明確にできることが書いてました。(5.1.2p5)
ラムダにリプレースできるツールの候補があるんで、これ使ってデフォルト引数が実現できるか考えてみます。
485 :
481:2014/01/13(月) 16:06:08.12
>>482 タイポしたら嫌だから478からコピペしたらこれだよ!
よく見てコピペするんだった・・・
>>484 何がしたいのかよくわからないよ。
デフォルト引数がしたいのか、可変長引数がしたいのか、何?
>>486 >>471にある通り
ファンクタ fn に対して
[fn](auto x, auto y = 8) { return fn(1, x, y); }; //yにデフォルト値あり
ということがしたい。
自作のbindモドキをラムダにリプレースできないか検討中。
bind(fn, 1, _1, _2 = 8);
ということをやっているので、ラムダ引数でのautoの使用とデフォルト値が必要になる。
なければ他の手段でできないか、ということです。
C++14なら完全対応してるclangがあるんだからそれ使えばいいやん
いままでのあらすじ
ジェネリックΛ期待。デフォルト引数もok?
↓
それはダメ
↓
他の手段で無い?
↓
C++14ならclang使えば? ←話が理解できないバカ
ラムダ式って言語レベルの話じゃん?
それをライブラリで何とかしようとするのがおかしい
boostになければ諦めろって
>>490 まあそうなんですけどね。
今使ってるライブラリのデフォルト引数機能が便利なので、
ラムダで同じことができるようになるならリプレース
そうじゃないなら継続利用(レベルアップ含む)
のどっちに行くべきか見きわめたくなって。
できないっぽいので後者で行くことになるかな。
>>491 んーと、今現在
bind(fn, 1, _1, _2 = 8);
というのを実現してるってこと?
>>492 そうですよ。
関数名とプレースホルダはちょっと変えてるけど。
関数ポインタとかラムダにオーバーロードがあればいいのに
一体何をオーバーロードする気だ
まああれだ、C++14でラムダ式にジェネリックが入るというのは必要だからだろう
多分もっとSTLが最適化出来る
とりあえずboostのoverloaded_functionつかっとけい
STL?
15年ぐらい前にそんなのあったな
まだ使ってるなんて化石も甚だしい
使える化石だからな
C#に超便利なLINQがあるだろうが
C++11ももっとSTLとかラムダ式を柔軟にしないと性能はともかくユーザー層で負ける
いいからお前は黙ってC#使ってろよ
>ユーザー層で負ける
アイドルの人気投票じゃないんだからw
STL?
15年ぐらい前にそんなのあったな
そんなメンテもされていない化石をまだ使ってるなんて
ふーん
algorithm系って何にリプレースすればいいの?
>>497 ちょっと苛めてみた
boost::overloaded_function<int(int),
int(int*),
int(int**),
int(int***),
int(int****),
int(int*****),
int(int******),
int(int*******),
int(int********),
int(int*********),
int(int**********),
nt(int***********),
int(int************),
int(int*************),
int(int**************)
>mem(int a) const;
error 'boost::overloaded_function' : テンプレート 引数の数が多すぎます
>>502 おいalgorithm系は何にリプレースすればいいんだよ?
STLじゃなくてC++標準ライブラリを使えってことだろ。
何を言っているんだオマエは。
<algorithm>はSLTだろうが。
何を言ってるんだオマエは。
それともコンテナとイテレータだけだとでも言うつもりか?
×SLT
○STL
定義を明確にせず否定も肯定もできないと思います。
>>508 STL?
そんなものがISO/IEC 14882:2011のどこに書いてあるのですか?
SGIかステパンと勘違いしてるのでは?
・STLは標準化前の遺物派
・コンテナ、イテレーター、アルゴ、ファンクタのみSTL派(string含まず)
・stringもSTL派(iostream含まず)
・テンプレートは全てSTL派
・C++の標準ライブラリは全てSTL派
・なんとなくライブラリは全てSTL派
厳密に正しいのは最初で他は誤り
>>511 だったら「STLなどというものは初めからありません」と言わなきゃつじつまが合わんだろ。
STLという言葉を使った以上、その定義や守備範囲を自分の中に持っているはずだ。
「15年くらい前にあったな」というからには、その当時は存在していたわけだ。
<algorithm>がSTLでなくC++標準ライブラリだというなら、どこかの時点で定義なり認識が変わったわけだろ。
その根拠を出せ。
根拠なんてあるわけないだろ。
差別化のネタにしたいだけなんだから。
>>513 >「15年くらい前にあったな」というからには、その当時は存在していたわけだ。
それがSGIとかステパノフなんだろ。
>>512のコピペとか見ろよ
・STLは標準化前の遺物派
が正しいとしても、そのSTLの範囲がなんだったかについては何も語ってないだろ。
だから2番目以降の選択肢の正誤なんてわかりっこない。
どうでもいい争いなんだからヤメトケ。
>STLは標準化前の遺物派
このコピペは修正が必要だな。
「STLは標準化前の遺物派(ステパノフのアレ、もしくはSGIのアレ)」
・STLは標準化前の遺物派
(ステパノフのアレ、もしくはSGIのアレ)
・コンテナ、イテレーター、アルゴ、ファンクタ
のみSTL派(string含まず)
・stringもSTL派(iostream含まず)
・テンプレートは全てSTL派
・C++の標準ライブラリは全てSTL派
・なんとなくライブラリは全てSTL派
STLという用語の根拠があるのは最初のみで
他はコンセンサスの得られない脳内定義
まーた始まった
>>519 なるほど用語に根拠があるのですね。
で、その内容が「STLは標準化前の遺物派」ということだと。
STLが髪の伸びたOTLに見えてなりません
502「(標準化される前の)STLなんて化石をまだ使ってるなんて」
503,506「(俗称としての)STLを置換するライブラリってなんだよ」
507「(標準化される前の)STLじゃなくて(標準化された)C++標準ライブラリを使えってことだろ」
508「(俗称としての)(コンテナ以外も含む)STLは現役のライブラリだろ」
おまえらわざとやってるだろ。
なんか「プログラミング言語C」または「C」は名称として正しいが
「C言語」は只の俗称・通称の類に過ぎないってネタとそっくりだ
それを言うなら
「OSって何ですか?IBMが何故関係?」
昔STLは確かに存在したのだから
voidみたいな芸風はやめろよ。
A:写メ送って!
B:今時写メとは化石ですか?
A:じゃあ写メに変わる物は?
B:普通にスマホで写真撮って送れ
B:写メは2001年にJフォンが〜
A:だったら写メなどというものはありませんと言え
当時は存在していたわけだ
B:だからそれがJフォンの
> 昔STLは確かに存在したのだから
> 当時は存在していたわけだ
化石って認めてる発言だよねコレ。
化石いうても標準コンテナの基本的な部分だよな
話が理解できていない
>>529が哀れ
「化石のSTLは標準ライブラリのコンテナの基礎となった」
が正しい。
標準ライブラリには「ここはSTL」という説明はなく
また化石STLと標準ライブラリの類似部分とは完全に一致でもない
3文字の略称をつけないコミッティーの責任
それが名付けられるまでSTLを使って構わない
>>530 横からサンクス、やっと話題を理解できた
Cのcnd_timedwaitにPOSIXの略称を付けないのは委員会の責任
名付けられるまでは<pthread.h>のcond_timedwaitも
<thread.h>のcnd_timedwaitのどちらも
POSIXと呼んで構わない
キチガイの発想ではこうなるんだろうな
そんなに標準ライブラリのなかのやつをSTLとは呼ばないって主張が重要ならこんな所で吠えてないでWikipediaの記事修正してきたら?
言語数多いけど頑張ってね。
予想される展開1
「標準ライブラリーにはSTLという言葉がない」
「じゃあWikipedia直せよ」
「オマエが直せ」
予想される展開2
「標準ライブラリーにはSTLという言葉がない」
「じゃあWikipedia直せよ」
「オマエが規格を直すのが筋」
すでにあった展開
「標準ライブラリーにはSTLという言葉がない」
「(531)なので規格のもSTL」←??
今は、テンプレートを使って作られた標準ライブラリー、でSLTになっているから注意な
はいはい、中国人の真似した糞レスはいらない
ああん、お前、どこ中の張魯よ?!
ワタシ、離珠と申します
14っていつ出るの?
委員会ドラフトが出てから久しいのだけれど
WG21は無能なので あと5年は出ません
一番待たれてる機能ってなに?ジェネリックラムダ?
戻り値の型推論が無いとλが使いにくい
コンセプト
Concept連日鬼のように議論されてるけどなかなか仕様が固まらないな
ジェネリックラムダは簡単に入りそうだけど
というかClangでは使える
コンセプトは要らないな。
メンバー関数ごとに要件が違うんだから
メンバー関数内にstatic_assert(is_xxw::value)
をたくさん書いてくれりゃいいわ。
テンプレートの話じゃないのか
テンプレートのインタフェースみたなものという理解でいいのかな
550 :
デフォルトの名無しさん:2014/01/29(水) 00:01:14.41
ジェネリックラムダと、constexprの制約緩和でいいよもう
来る将来、片っ端からconstexprを付けることに
コンパイル時レイトレーシングができるんだ。
出荷時に処理が終わっている製品とか、夢が広がリングww
それよくわかってない門外漢の質問で済みませんが、単にコンパイル時にレイトレ計算完了してるって理解でいいの?
コンパイル後にシーンやモデルの入力替えることが出来ないのであれば、プロダクトとしての価値がよくわかりません
解像度上げたら十分時間かかってるようだし
>>554 さすがにレイトレ完了までやってしまうのはネタだけど、
部分的にでも出来れば全体として高速化が出来る部分が増えるってことだ。
わかりやすいのは、sqrtやsin/cosなどの演算目的の関数だろうか
あるいは、ビットマスクのようなものとか
>>554 その理解でいい
特に価値は無い
PostScriptでレイトレと似たようなもんだな
「プリンタがレイトレしてやがるwwwおせぇwww」
「コンパイラがレイトレしてやがるwwwwおせぇwww」
「Webブラウザが仮想PCホストしてやがるwwwwおせぇwww」
あるいはメガデモ的な面白さ
mailing来てるのに全く話題に出てないのな
やっぱりswap演算子はボツか
本はよ
本は要らんから isoははよ規格出せ
>>555-557 解説どもです、スッキリしました
変態的で興味が募ったのでちょいぐぐって情報の海に溺れてきます
簡単なhackで引数に明示的な型しかとらない指定ってできませんかね?
int a[1];
func( bool ); func( a ); // たまに起こるミス、型チェックを通ってしまう
たとえば
func( explicit bool ); ←こんなキーワード
func( true / false / bool(a) ); // OK
func( a ); // 暗黙の変換はエラー
あとはbool引数を取るexplicitコンストラクタを持つクラスをつくって
それをfuncの引数にすると二重の暗黙変換はできないからfunc(explicit_bool_type);に直接intを渡せなくなる。
568 :
563:2014/02/14(金) 08:31:22.51
>>564-567 ありがとうございます
暗黙の変換が行われる前にテンプレート関数で引き受けて=delete宣言するのですね
目から鱗が落ちました
>>563 T で受け取って戻り値 std::enable_if<std ::is_same<T,bool>::value>::type
SFINAE サイコー
static_assert(std::is_same<T,bool>::value, "申し訳ないがbool以外はNG");
本当に成金企業がやって吹いたw
とりあえずおめ。
>>569 Tで受け取って、なら大丈夫だけど一般にはT&&とすることも多いから is_same は要注意だよな。
>>572 そそ
なんかうまく呼ばれねーとなって remove_cv とかゴテゴテと追加
オレはこうしてるw
template<typename T>
struct remove_ref_cv {
typedef typename std::remove_reference<typename std::remove_cv<T>::type>::type type;
};
575 :
393:2014/02/15(土) 04:06:39.49
俺の予想が当たった!
なんか言語機能が弱すぎて書き方が多様化するperlっぽくなってるな
オナニー化はダメな流れだわ
C/C++より強力と言える言語はアセンブラしかないが
オブジェクト指向アセンブラマダー?
むかしむかし、SAPPというアセンブラが川に洗濯に行って流されてしもうた
なんで、アセンブラと同程度の実行速度を保ちつつモダンな書き方のできる言語が登場しないのかね?
Dじゃダメなの
Dはどうも万年ベータ版な印象
584 :
デフォルトの名無しさん:2014/02/16(日) 20:36:52.85
C/C++が一番それっぽいといえばそれっぽいが、そもそもモダンな書き方ってなによ。
C#みたいなやつ
プロパティとかテンプレートとか
c++11でも充分よくやってるとは思うけどな
でもランタイムで逃げてる言語ほどラクにはならんよなあ
ふと今c++にオプション的なランタイムと糖衣構文追加のような形で、LLっぽい共存とかできないのかなと着想したんだけど、Obj-Cがまさしくそれだと気付いて絶望した
javaより古いルーツの言語にいちゃもんつけるのもあれだが、あの言語もうちょっと記法レベルでなんとかならんもんなのかな
Obj-Cは動的言語面の実装自体はいい線行ってるから、c++のパフォーマンスを有効活用できるプリプロセッサなんか面白いかもな
Obj-C++ with Lightweight
ここまで没
^が生理的に受け付けないんだが
^^
c++ は何が悪いんだろうなあ
一から再構築したらうまく行くもんかねぇ?
何も悪いところなんて見当たらないが?
C++はよくやってる部類のはずだが、
低水準から高水準までカバーしつつマルチパラダイムをサポートするという時点で
そもそも言語に与えられた問題領域が複雑すぎる部分はあると思う
594 :
デフォルトの名無しさん:2014/02/17(月) 08:03:03.39
C++11とか使える奴はいいよな。過去のコードや古い環境があるから使いたくても使えん。boostはインストールが面倒だし。時間がない。結局家でコードを書くときしか使えんから、学習曲線が緩やか。
関数ポインタの表記が分かりにくい
今はusingがあるじゃない
typedef さんの出番を取りやがって...
> 何も悪いところなんて見当たらないが?
テンプレートとかどう?
コンパイルがクソ遅かったり
クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり
テンプレートでミスるとわけのわからないコンパイラエラーにおそわれたり
っていうのは改善されたの?
>クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり
他の言語でもかわらなくね
>テンプレートでミスるとわけのわからないコンパイラエラーにおそわれたり
コンセプトさんが何とかしてくれる
コンパイル遅いのは我慢しろ
>>599 > クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり
それはそういうルールでコード書くことを選択したプログラマの責任だろ。
他から参照しないならヘッダファイルなんぞいらんし、なんならヘッダに全部書いてろよ。
>>600 > コンセプトさんが何とかしてくれる
それ10年以上言い続けてるんだけど・・・
次はその表現がまるまる自分に跳ね返ってくるって予想できない?
何かを間抜けって貶すなら自分が貶される覚悟もしておこうよ・・・・
605 :
デフォルトの名無しさん:2014/02/17(月) 21:28:09.39
>>601 そういえば、いつも.hと.cppのファイルごとコピーしてプログラム書くから
後になってcppの中身カラじゃねーか(最初からいらなかった)と気がついたりすることあるな。
ほかにもクラスをテンプレートに変えて、面倒だから全部ヘッダーに書いてcppいらなくなったとか
でもプロジェクトに追加してるからほったらかしで意味ないcppが何個も
schemeあたりでコード生成する方がはやいのではないか
c++って、どのぐらいまで仕様を把握したら足を撃たないのか一向に分からない
>>607 makeheaders とかでいいんじゃないの。
>>609 学生の頃、いつもc++のヘッダーファイルを手で書いてたよ
ヘッダとかドキュメント生成系のソフト有るけど、
マクロ使ってちょっとソースで変わったことすると、すぐ汚い結果吐くんだよね。
言語レベルでヘッダ/ドキュメント生成のためのルールを規定すれば、
Clangとかが綺麗なのを吐いてくれるようになると思うんだが。
>>611 その着想で腰を上げたとして、委員会が完璧な仕様を決めるまで十何年かかるかが問題だなw
生成系ツールや俺俺ルールでお茶濁すくらいが現実解だと思う
>>608 足を撃つ、ってどんなレベルのことを言ってるのかで答えは変わる。
意外とやってみれば、コンセプトさんより先に決まるかも。
constexpr より強い、comptexpr (compile time expr) が欲しい。
>>608 仕様に由来しないところで幾らでも足を吹っ飛ばせるから考えるだけ無駄
・・・とか言い出すと言語に寄らずバグらせ放題ってことになるけどな
616 :
デフォルトの名無しさん:2014/02/20(木) 11:45:50.04
>>608 C++はミドルウェアより下のレイヤーで使う言語だから、
分かる人だけ使えばいいんじゃないかな。
エリートさんたちがプログラミングする世界だから。
619 :
デフォルトの名無しさん:2014/02/20(木) 12:04:24.13
>>617 Cが主戦力であることは否定しないけど、
iOSはデバドラにサブセットC++
WebKITもC++
gccもC++
と増えてきてる。
新しいボード等が出ても、コンパイラがcしか対応してないって、ばっちゃが言ってた
そのコンパイラを作って動作保障するのは誰だと思っているんだっ
×保障
○保証
現れては消える高級言語を使うよりC++のが楽じゃない?
C++1yってC++14の次だと思ってたけど、もしかして14のこと?
C++17を目指してる次のやつのことであってる
626 :
デフォルトの名無しさん:2014/03/06(木) 01:45:01.20
gcc4.8.1で下のコードでエスケープできないってエラー吐く
#include <regex>
std::regex re("\\[(an|pan|man)\\]");
VC++では動いてたんだが
[ってどうやってエスケープするんだ?
regexの仕様知らずにいうけど、それでエスケープされないならコードを打ち込む段階で
U+005C(REVERSE SOLIDUS)じゃなくてU+00A5(YEN SIGN)に変換してしまったってことはないか?
まぁ最悪\xhhとかで代用すればいい
>>626 VCで動くなら使っているGCCのバグか
>>629だろ
GCCなんて使わないでClang使ったほうが良いんじゃないか
そりゃあヒーローはエスケープなんてしないもんよ
そんなときはRAWリテラルでも
633 :
626:2014/03/07(金) 00:10:48.35
>>627 http://stackoverflow.com/questions/15059162/c11-regex-matching 見つけたわダメみたいだね
>>628 std::regex re("\\[");
std::regex re("\[");
std::regex re("\0x5c[");
std::regex re("\\0x5b");
全部ダメだった
>>629 /usr/include/c++/bits/regex_compiler.h:467:50
__throw_regex_error(regex_constants::error_escape);
ここで死んでしまう
>>629 実装されていないんだな
>>630 テストコードでは動いたー!
インラインアセンブラとかgcc依存プリプロセッサ
使いまくってるメインプロジェクトですんなり使えるだろうか
>>632 std::regex re( R"(\[)");
std::regex re( "\\Q[\\E");
これもだめだった
とりあえずclangに移行進めます、C++11はスレチだったみたいでスマソ
>>633 stackoverflowのレスみると
C++ standard library(GCC用?)がなんか駄目なんだな。
Clangでこれ使っているならClangでも駄目。で、Boost regex使えか
std::threadってどれくらい使える?
普通に使える
C++11 <regex> support [2013-10-03]
Regular expression support in libstdc++-v3 is now available.
だから、GCCは超最近のものでないと動かんのだな
regexくらいPOSIXの方でいいじゃんと思ってしまう。
というか、エラーになるということはもしかして、std系って、POSIX関数のラッパーじゃなくてものによっては独自実装しているってことなのか。
知らんかった。
>639
std::regex は ECMAScript の正規表現対応だからまず間違いなく独自実装だが。
何も指定しないとECMAになるだけだろ。
バギーな動作するよりは既定でgrepになってた方がまだマシ。
642 :
デフォルトの名無しさん:2014/03/10(月) 17:05:49.31
egrepですらないとか正気か?
それともGNU grepとかBSD grepのことか?
基本正規表現も拡張正規表現も書式が違うだけでできることにたいした違いはないでしょ
わざわざ実装するとかどうしてそんなことになったんだろ。
キャプチャの問題?
644 :
デフォルトの名無しさん:2014/03/10(月) 21:57:51.80
どのライブラリ実装も実装は別にやるに決まってるだろw
定数をconstexprにするメリットってあんの?
>>645 コンパイル時に決定できないとき教えてくれるからバグを防げる
普通の定数でも決定できないとエラーになるんじゃね
>>648 ならないよ。そのスコープに入るときに計算されるだけ。
>>648 constだと const int x = rand(); みたいなことが普通に出来る。constexprでは不可。
>>650を書いてから思ったけど、C++14ならコンパイル時乱数ってのもそれほど難しくないよなw
>>650 ああ、そうだ
const を使った時にエラーになるだけだった
(コンパイル時定数でないといけない所に使うと)
>>651 コンパイルのたびに変わられてもなあw
デバッグ担当者に恨みがあるときに有用か
これは素晴らしいコード
よく覚えておこう
江添より始めよ
ドワンゴの会長が江添に、C++プログラマを招く方法を相談したところ、
「まず自分のような優秀でない者を優遇してください。
そうすれば、もっと優れたC++プログラマが次々に集まってくるだろう」と言ったという故事から。
ホワイトボードにくだらねえコード書かせる
面接やめりゃいいんじゃないの
あれは萎える
なにそれ
あーここ文法エラーですねーご縁なかったですねー
みたいなことでもやってんのかい
>>655 何かと思ったら江添氏ドワンゴニ就職してたんだな。そりゃ妬ましいですなあ。
ドワンゴに就職してからアンチ増えた気がするね。
大抵655みたいな下らない奴なんだけど
ドワンゴとかいうブラック企業に入ったらご愁傷様としか思わん
仮にブラックだとしても、裁量労働制でノルマもないんだから羨ましいことはあっても不憫には思えないな。
C++14っていつ頃の予定になってんの
14年ごろ
664 :
デフォルトの名無しさん:2014/03/20(木) 00:18:22.53 ID:1Y22wDAD
実際のところ皆はもう案件でC++11使ってる?
うちはまだダメだ。boostもダメ。
>>664 実案件はまだでしょ、自分で使うツールとかで実験的に使い始めたところ
範囲ベースの for とかめちゃ便利だわ
666 :
デフォルトの名無しさん:2014/03/20(木) 22:58:12.94 ID:N5eLnApK
納入とかない仕事なんでC++1yでさえ使ってる。
小規模iOSアプリで使い始めてるけど特になんの問題もない
先んじて、月単位の独自研究の成果を各自持ち寄った結果でもあるので仕事場の空気レベルで特殊な例だと思うが
>>664 2011年開始の案件以降、環境がVC2010になったからVCの機能の範囲で使いまくってる。
もうautoなしなんて考えられん。
vs2012だからゴリゴリ使ってる
boostも使える
range based forとauto無しでは生きられん
>>669 > range based forとauto無しでは生きられん
range based for って、cbegin( ) 呼んでくれないんだけど、そう言うケースはどうしてる?
うちでは、その部分は従来の書き方してる。
すごくいい機能だけど、それだけにちょっとガッカリ感がハンパない。
const auto& にすれば?
>>670 for_each使うかconst auto&だなー
template<typename T>
const T& const_wrap(const T& v) { return v; }
for(auto &i : const_wrap(v))
要するにconstへキャストしとけばいいんだろ?
>>671 cbegin( ) 使ってくれる?
VS 2013 だとダメだったんだが
>>672 for_each ならいけるの?
いま出先だから、あとでちょっと試してみる
>>673 今んところこれが定番みたいなんだけど、無理矢理感ハンパない
for_each(const auto& i : const v) みたいな構文で使えればいいんだけどね
>>674 cbegin()を使ってくれなくてもiがconstになっていれば文句ないけどね。
>>675 v がメンバーだと const なメンバー関数で begin( ) 使うと怒られるんよ
て言うか、そのための cbegin( ) なんだが...
>>676 あなたの使ってるコンパイラのライブラリのコンテナ群はconst付いてるbegin endが定義されてないの?
>>676 そういうときはconst付きのオーバーロードが自動的に選ばれるんじゃないの・・・
って、
>>677に先に言われたか。
>>679 const付きのbegin(),end()はC++11でも削除されてないし、C++14で削除される予定もないよ。
新機能じゃないじゃん
range based for に問題があるって話に対して、いやそれは問題じゃないよって話をしてるんだろ
まぁrange based for自体が新機能じゃないな。
foreach みたいなものだろ
>>677-678 え゛っ、const 付きの begin( ) にしとけば使ってくれるんか?
マジで知らんかったわ。
VS 2013 で使えるか、やってみよ。
686 :
デフォルトの名無しさん:2014/03/21(金) 18:38:14.12 ID:lD60fRJj
使ってくれるんか?
↑
方言かい。関西弁としてもけったいな言い方だな。
つこてくれるんケ?
これが方言に見える地方って・・・・
頭悪そうな文体ではあるけど
>>688 だって土民は自分が使っている言葉が標準語
そして、それ以外すべてど方言なんですよ
>>686 > 方言かい。関西弁としてもけったいな言い方だな。
気色悪い関西弁やめてんか
691 :
デフォルトの名無しさん:2014/03/21(金) 20:56:25.66 ID:lD60fRJj
begin( ) にしとけば使ってくれるんか?
あのな、主語が何なのか聞いてるんだけど。それとも「使えるんか?」
を「使ってくれるんか?」と言うのかい。
まあ、言葉の使い方おかしいんじゃないかと言ってるのに
おい、
>>689。お前は自分では何にも言えないくせに、後ろ
からキャンキャン吠えている女みてえな糞野郎だ。
>>690 それがそいつの標準語だよ。基地土民のね
693 :
デフォルトの名無しさん:2014/03/21(金) 21:15:25.97 ID:lD60fRJj
はいはい、弱い犬ちゃんw
土民は
>方言かい。関西弁としてもけったいな言い方だな。
で、主語が何なのか聞いていたのか? 土民じゃないと土民標準語理解できないからな
695 :
デフォルトの名無しさん:2014/03/21(金) 21:19:33.78 ID:lD60fRJj
もう、馬鹿はほっとこ。じゃあね
>>685 この流れの所為で
> const 付きの begin( ) にしとけば
がツッコまれていない件について
begin()にconstつけないだろ
>>698 意味わからん
どっから使う時なんて発想が出てきたんだ?
700 :
デフォルトの名無しさん:2014/03/21(金) 22:36:41.76 ID:yZ2dHoTg
constありのbeginの戻り値をconst_iteratorにして、constなしのbeginの戻り値をただのiteratorにして、
beginは両方多重定義しておけばいいじゃん。使うときは
インスタンスがconst付きかどうかで自動的に選択されるじゃん。
今度はじゃんか。ニダよりは良いよね
>>680 それはそうだけど
>>674をエスパーすると
c++11で追加された型推論ではautoにconst付けないと
constのbeginが呼ばれないって話でしょ
完全にautoを無視した話してたからいつの時代の話してるんだと思っただけ
for (const auto &i : v) と書けばいいよ、といえばすむ話だったのか。
それでは済まないしautoも関係ない話だと思ってたが
そう考えてたやつもいるんだな
>autoにconst付けないと
>constのbeginが呼ばれない
まるで、constを付けるとauto begin()const->const_iterator
が呼ばれるかのような発言だな。
constで受けてもbegin()constの方が呼ばれないのは解ってんだけどそれが問題になるのどんなとき?
上の方でそれで済まないとか書いてあるからさ。
もしかして自作コンテナで cbegin に別な意味を持たせてる?
自作コンテナで非constのbegin()およびそのイテレータの
デリファレンスにコストのかかる処理があるときは問題となる
const付きbeginとcbeginの処理が異なっているなんて規格上許されるのか?
711 :
710:2014/03/22(土) 19:32:49.47 ID:ZdExmIEg
ああすまん、自作コンテナの話か。
自作コンテナの話の方はbeginのconst付きと付いてないの実装の差異だと思うけど。
ただあんまりそんな実装しないよね。
パッと思いつくのrwlockでconst付きはrlock、const無しはwlock するようなコンテナとか?
でもconst有りと無しで問題になる程パフォーマンス変わるようなコンテナは逆に使いづらいと思うのよね。
>>709 そういう問題の解決をcbeginに求めようとしているのだな?
不適切なやり方なのかもしれないし、そうでないかもしれない。
文盲が多いな
constと非constの違いの話だと思うのだけれど
どうしてcbeginとbeginの違いの話だと妄想したがるのか
混乱するから誰かまとめて
717 :
デフォルトの名無しさん:2014/03/23(日) 11:36:21.59 ID:sV6DQ8Cb
template <class T1, class T2>
auto operator + (T1 x, T2 y) -> decltype(x+y)
{
return x+y;
}
上のところで、
error: template instantiation depth exceeds maximum of 900・・・
recursively required by substitution of 'template<class T1, class T2> decltype ((x + y)) operator+(T1, T2) [with T1 = std::complex<double>; T2 = double]
みたいなエラーがでます(gcc4.8.1)。これって、decltype(x+y)のところで、operator+が再帰的に呼ばれているということですか?
719 :
デフォルトの名無しさん:2014/03/23(日) 11:46:12.34 ID:sV6DQ8Cb
まあ、auto, decltypeの練習で試しにやってみたんですけど。
再帰だろうね
演算子+(T1 x,T2 y)の返値の型は
演算子+(T1 x,T2 y)の返値の型と定義しているようなものなのでは
C++1yならそもそも -> から先要らないよね
下請けに丸投げ
下請けに投げたと思ったら、自分の会社に投げていたでござる
decltype以前に無限再帰じゃん
コンパイル時に見つかるだけいいんじゃね
template <class T1, class T2>
auto operator + (T1 x, T2 y) -> decltype(auto)
{
return y ? (++x)+(--y) : x;
}
726 :
デフォルトの名無しさん:2014/03/23(日) 21:55:13.61 ID:sV6DQ8Cb
#include <complex>
...
complex<double> z(0,1);
cout<<1+z<<endl;
をコンパイルすると「複素数と整数の演算+は定義されていない」旨のエラーがでます。ところが
template <class T>
struct double_trait {
typedef T type;
};
template <class T>
using Dtype=typename double_trait<T>::type;
template <class T>
std::complex<T> operator + (Dtype<T> c, const std::complex<T>& z)
{
return c+z;
}
をmain()関数の前に定義すると、今度はビルド実行できます。わからないのはintの場合の特殊化
をしてないのになぜビルド実行できるかです。
※complex<double>とintの単純な演算子オーバーロードを使わなかったのは
オペランドがchar, unsignedなどの場合にも対応させるためです。それと
int iとcomplex<double> zに対して単純にreturn i+z;とするとなぜか実行時
エラーが出ます(TDM gcc4.8.1)。
727 :
デフォルトの名無しさん:2014/03/23(日) 22:06:19.15 ID:sV6DQ8Cb
あ・・・ operator+の定義内でreturn i+z; とやるとまた再帰的にw
728 :
デフォルトの名無しさん:2014/03/23(日) 22:56:26.24 ID:sV6DQ8Cb
あ・・・。
template <class T>
std::complex<T> operator + (Dtype<T> c, const std::complex<T>& z)
は実体化される時に
std::complex<double> operator + (double c, const std::complex<double>& z)
となり、intやchar型の実パラメータが渡されるときに暗黙の型変換が適用されるのか?
template <class T>
std::complex<T> operator + (T c, const std::complex<T>& z)
でもokでした。traitsは関係なしと。お騒がせしました。
今日はもう寝ます。
729 :
デフォルトの名無しさん:2014/03/23(日) 23:05:46.93 ID:sV6DQ8Cb
あれえ?もう一回やったらokじゃない。小保方さんのSTAP細胞みたいに
なっちまった。寝る。
C++11でもOKって、C+1yで使えるならCの質問でもOKスレってことだよね
そういやC11スレって無いな
そもそも環境あるのか?
スマホとMac
735 :
デフォルトの名無しさん:2014/03/24(月) 22:27:29.45 ID:uHELE/QG
VC++2013を未だインストールしてないので、次のコード動くか確かめてもらえないでしょうか?
#include "stdafx.h"
template <class T>
struct double_trait {
typedef T type;
};
template <class T>
using dtype=typename double_trait<T>::type;
template <class T>
std::complex<T> operator + (dtype<T> c, const std::complex<T>& z) //@
{
return c+z;
}
int main()
{
using namespace std;
complex<double> z(0,1);
char c=-1;
cout<<c+z<<endl;
cin.get();
return 0;
}
736 :
デフォルトの名無しさん:2014/03/24(月) 22:46:48.96 ID:uHELE/QG
あ・・・。stdafx.hの中に次の2行が必要です。
#include <iostream>
#include <complex>
>>735の@の引数を直接double cにすると、「多重定義であいまい(ambiguous)」のエラーが出て
しまいます。floatにするとコンパイルエラーは出ませんが、無限再帰に陥るのか実行時エラー
が出ます。dtype<T> c の場合は、T=doubleなので実質dtype<T>=doubleとなるのになのに、
コンパイラはエラーを出さません。また、正常に実行されます。どうも、コンパイラを欺く
トリックではないかと。
※ 1.0+zと書けばすむ話ですが、数学の教科書では普通にz+1とか、1+zとか書きますよね。
しかし、プログラムでうっかりz+1と書いてしまうと、分けのわからないエラーがベラベラと
出てきて初心者はとまどいます。それで、
>>735 みたいな手の込んだことをするわけです。
でも、複素数と整数の混合演算を簡単にできる方法ないですかね。
737 :
デフォルトの名無しさん:2014/03/24(月) 22:48:12.05 ID:uHELE/QG
T=doubleなので実質dtype<T>=doubleとなるのになのに、コンパイラはエラーを出さません。
↓
T=doubleなので実質dtype<T>=doubleとなるのに、コンパイラはエラーを出しません。
>次のコード動くか確かめてもらえないでしょうか
おまえ御命令だ。やれよ
もはやただのテンプレートの話で11,14関係ないだろ
でもひとついっとくとすでに標準に
template<class T> complex<T> operator+(const complex<T>&, const T&);
template<class T> complex<T> operator+(const T&, const complex<T>&);
はあるから
>
>>735の@の引数を直接double cにすると、「多重定義であいまい(ambiguous)」のエラーが出て
> しまいます。
はそのせいだろ
>>739-740 俺には?だが、原因が分かるってレベル高いんだな
g++にはdemangleする関数あるのか、メモメモ(AA略)
742 :
デフォルトの名無しさん:2014/03/25(火) 01:03:54.21 ID:dLACqsrm
>>740 ありがとうございます。
私は、多重定義のチェックと実体化のタイミングの問題かな?と考えました。
となると、コンパイルによってはダメかもしれないと考え、VC++ではどうなるんだろ?
と思った次第です。
>dtype<T>は関係無い。
そうですか。私は「double_trait<T>::typeで包むことによってコンパイラ
の多重定義のチェックから逃れているが、最終的にはdouble型の引数を
もった関数が実体化され、実パラメータがcharやintの時に暗黙の型変換
が働いている。」と解釈していました。
この考えは間違いですかね。
743 :
デフォルトの名無しさん:2014/03/25(火) 01:08:25.46 ID:dLACqsrm
解釈していました。
↓
>>740 さんを読んで解釈しました。
で、どの辺がC++14なの?
現行規格の質問は現行規格スレでやれ
745 :
デフォルトの名無しさん:2014/03/25(火) 09:56:38.99 ID:aIELEUmN
ああ、C+11/C++14じゃなかったんですね。失礼しました。
C+11ってC++11とC11のどっちだ
C+11 = C+1一 = C++ = C++
>>740 そのmelponてとこで手持ちのコードを走らせてみたらclang 3.4では通るもののgcc 4.8.1ではコンパイルエラー。
念のためideone(gcc 4.8.1になってる)でやってみるとコンパイル成功して実行もできる。
vc(2010, 2013)でも問題なし。
なんか変だな???
>>748 呼称はwandboxがよいと思う
ソースによるけど新しい機能についてはコンパイラにバグがある可能性もある、またはオプションの関係とかも
詳しいところは実際のソースを見なければわからない
>>749 ソースすら出さないであーだこーだって、独り言(俺日記)カキコしてもって感じだよね
>>750 そう言われてもね。
ソース垂れ流しても迷惑だし、ちゃんとポイントを絞って提示するのは難しい。
無能なのね
うん。
そのwandboxってやつのgccエラーを読んでもわからないので、抽出できない。
「 'v' は type 'int(int)' であってメンバーポインタじゃねーよ!」と言ってるらしいんだけど、
その行の近辺に 'v' なんて無いし・・・
auto変数が分からないと飯が食えなくなる?STLでかなり危ないが
釣りなら初心者スレでどうぞ
756 :
デフォルトの名無しさん:2014/03/27(木) 16:12:52.97 ID:6aYzX2Zx
飯がどうとかいう話は次元が違うからマ板でやれ。
757 :
デフォルトの名無しさん:2014/04/01(火) 20:42:02.69 ID:gKhRKamL
>>755 >>756 馬鹿のくせにエラそうに言うから誰も書き込まんだろ。
もう、お前ら来るな。陰菌じゃなかった、陰気臭い。
「俺、auto使えないんだ」と自己紹介乙
アウト!
auto が使える子になったというのに一向に使えないおまいらワロスw
C++11以降の書籍がほしいお
>>757 > 馬鹿のくせにエラそうに言うから誰も書き込まんだろ。
馬鹿が書き込む必要はないからこれでよい。
過疎板で無理にすれ違い板違い場違いネタ雑談でスレを伸ばす必要はない。
VC++2010でauto使うとたまにコンパイラがエラー吐く
規格が改訂される前に出荷されたコンパイラーに文句言うなよ
2013使えよ
constメンバ関数内で特定のメンバ変数を(自己責任で安全に)書き換える許可を与えるのってなんでしたっけ
mutable
サンクス
>>761 まだ外書レベルのようですね.kindle 経由で iPhone でしこしこ読んでいるけど結構厳しい(よる年波で近眼がつらい‥‥)
770 :
デフォルトの名無しさん:2014/04/02(水) 20:50:01.60 ID:Oc3JiJZr
というか、何でスレタイが
C++14/C++1yなんだよ。
C++11だって使いこなせていない奴いるのに。
771 :
デフォルトの名無しさん:2014/04/02(水) 20:51:57.60 ID:Oc3JiJZr
>>762 じゃあ、お前が書き込むなよ。お前、ウザいんだよ。
職場でも嫌われ者だろ
現行を使いこなせてないとか次期C++スレで言われても
可哀想な子なの。触らないで
C++を理解していない奴がいる
↓
C++の改定予定の次期規格のスレに物申す
この発想がキチガイ
ID:Oc3JiJZrって必死にぐぐりながらカキコしてんだろうなw
いちいち支離滅裂だもんw
776 :
デフォルトの名無しさん:2014/04/02(水) 22:12:14.42 ID:Oc3JiJZr
馬鹿の妄想w
人類史上c++を使いこなした人はいません
じゃあ俺が最初人間だったんだ
はじめ人間ぎゃーとるず
780 :
デフォルトの名無しさん:2014/04/08(火) 20:23:35.09 ID:vxIM531p
使いこなせなくたっていいじゃないの。この言語。
俺は好きだけど
おまいらオートというよりマニュアルがないとなにもできないマニュアル人間だもんなw
ラーメン作る時も水を計量し茹で時間もぴったりでないと気が済まないマニュアル人間
計量もせず料理してんのか
自分で食うだけならいいけど迷惑だから人に振る舞うなよ
>>783 目分量を「アート」とか言っちゃう人かな?
787 :
デフォルトの名無しさん:2014/05/01(木) 06:16:27.89 ID:jnur+x0Z
Programming: Principles and Practice Using C++ (2nd Edition)がもうすぐ出るな
788 :
デフォルトの名無しさん:2014/05/02(金) 21:31:40.17 ID:IMg3w3Zx
ここはツイッターじゃねぇ
意味不明なクソレスすんな
790 :
デフォルトの名無しさん:2014/05/04(日) 15:47:12.32 ID:fKxZYvEo
Clangのは最新のC++規格のサポートが進んでいる
そうか。
進んでるっていうかC++14既に対応してるな
>Clangのは最新のC++規格のサポートが進んでいる
ここはツイッターじゃねぇ
意味不明なクソレスすんな
完成していない規格に対応とはこれ如何に
Intelは相変わらずノロマだなw
796 :
デフォルトの名無しさん:2014/05/04(日) 17:50:41.76 ID:j7xk1fk5
>>793 おまえのどこがえらいのかさっぱりわからん
for(true)
{
1500行くらい・・・
}
キチガイですよね?
犯罪行為といっていい
>>795 Intelは科学計算や高速金融取引が主要顧客だろうから、
無理して新規格に追従しなくてもいいんじゃね?
プログラマ視点で考えるとコードの生産性が重視されるけど、ユーザー視点
だと実行速度になるからなあ。
C++の最新規格を積極的に取り入れたいならClangだろうけど、実行速度を
考えるとインテルコンパイラなんだよ。コンパイラだけで数倍変わるケースも
あるからなあ。まあ、科学技術計算のところは往々にしてC++11すら必要な
いからなあ。
あなたの言うところの科学技術計算とは?
大風呂敷広げずに答えよ
未だにFortranが使われているような領域だよ。スパコンなんかgcc4.2とかが未だに
現役なんだよ。スパコン向けのコードを書くときに、規格の問題でコンパイルに苦労
することがある。また、科学技術計算では線形問題を扱うことが多いので、Lapackや
MKLが使われるし、自前でコアな部分を書くときはインラインアセンブラだから、
今のところC++11が必要とされないんだよ。最も科学技術計算を行う研究者がC++11
とかに興味がないんだろうけどね。本質じゃないから。個人的には使ってもらいたい
と思うんだけどね。
現実はいろいろってことやね
過去の資源にてこ入れできればいちばんよいのだけれどな
コンパイラのソースなんてGPLでもなければまず公開されていないと思われ
Fortran77は氏ね
>>803 研究者ならC++11覚えるより、研究にはげめだろ
本職、プログラマじゃないしな
今でもFortranのコードは高速に実行される訳だから無理に変える必要も無いわな
自動ベクトル化への対応とかを考えると
下手にプラグマとかが足されていないC/C++で書くよりも
Fortranコードは高速かもしれない
門外漢だけど1954年生まれの言語が未だに速度でアドバンテージ持ってるってすごいな
と思ってググって覗いて見ると、言語としてはとくに面白さがないようで。。
科学技術計算向けDSLみたいな立ち位置なのかしら
fortranのコードってCからも呼べるが、
標準では配列のインデクスの先頭が1なのが面倒。
fortranが速いのって、各関数で配列のサイズが明示されるからだと思うけど、違うのかな?
エイリアスの問題はfortranでも生じると思うので、ここは関係ないと思うけど。
>fortranのコードってCからも呼べる
そんな、処理系依存の機能を
さも普遍的であるかのように語られても
>>810 lisp族もがむばっているようだ、ロートルはあなどれない
現代でも特定分野でアドバンテージをもって使用されているコボルってすごいな
年配のエキスパート職の人に愛されているエキスパート向け言語
>>811 > fortranのコードってCからも呼べるが、標準では配列のインデクスの先頭が1なのが面倒。
Fortran って多次元配列のインデックスの付け方が他の言語と違うんじゃなかったっけ?
> fortranが速いのって、各関数で配列のサイズが明示されるからだと思うけど、違うのかな?
それは違うでしょ、C でも多次元なら明示しないとダメだし、一次元ならサイズは範囲外アクセスのチェックにしか使わないから。
Fortran のアドバンテージは主にベクトル化の作り込みとか、ライブラリとか、最適化のためのツールとかが充実してることだと思う。
>>812 いまどき、できない処理系なんてあるのか?
Cだとrestrictや処理系依存の属性を付けて回らないといけないような最適化がFortranだとデフォでできるってのもある
理研の研究者曰く、Fortranを使う理由としては自動ベクトル化の
恩恵にあやかれるのが一番大きいと言っていた。昔のスパコンは
ベクトル機が主流だったからなあ。
>>803 スパコン向けだとコンパイラがそのスパコン作った所の自作ってこともあるからな
C++11がそもそも使えなかったり
>>816 表現能力が高くない言語だから、最適化がしやすいんだよな
>>818 自作っつーても1から作ってる訳じゃないし、要望ないから対応してないだけでしょ。
Fortianってcall by referenceじゃなかったっけ
restrict相当のことができんの?
汎用言語が特化型言語にその分野で勝てるなどと本気で思っているのか
>>821 そりゃぁ、できるでしょ
規格にエイリアスが起こるような引数で呼出をしちゃダメって書くだけだから
でそれを知らずに使うと結果がおかしな事になるだけ
824 :
デフォルトの名無しさん:2014/05/12(月) 19:30:19.95 ID:iANYuL+Z
>>824 だけであれば、コンパイル済みライブラリを呼び出し規約だけ合わせて持ってくればC/C++で同等の効果が得られるはずだが。
827 :
デフォルトの名無しさん:2014/05/12(月) 23:46:56.67 ID:vVaOlzqd
829 :
デフォルトの名無しさん:2014/05/13(火) 00:21:54.82 ID:zyf+D5WO
そんなんスパコン向けのCでもpragmaで記述可能。
FORTRAN屋のリソースが一番重要。
最近のC/C++コンパイラとFORTRANコンパイラの性能比較ってあんまり聞かないけど、
まあほぼ差ないよね?
831 :
デフォルトの名無しさん:2014/05/13(火) 01:24:02.00 ID:zyf+D5WO
それはプラットフォームに寄るけど、例えばIntel製のx64コンパイラなら大差ない。x86の時代から。
行列計算ガリガリやるような場合は、fortranの並列化が良く出る
cでもコードが綺麗でintelコンパイラがしっかり並列化してくれるなら同じくらい
833 :
デフォルトの名無しさん:2014/05/13(火) 01:31:49.46 ID:zyf+D5WO
Crayの時代から言語仕様の差は殆ど無いよ。アホらしい。
ところでこの流れ、C++14/1yと関係ありますかね?
SIMD命令をどう扱うか、あるいは最適化とのバランスをどう取るかは
古くて新しい問題なので関連がないとは言えない……かもしれない
過去にはFortranよりも別名の解析が難しすぎて性能出せないからrestrictが入ったりした
いずれIntelのCilk Plus拡張みたいなのがC++にも入ったりするんだろうか
>>833 範囲指定で演算出来るのとできないのじゃ全然違うだろ
a(4:16) = b(4:16) + c(4:16)
C++の言語仕様じゃこんな事出来ん。
C++で対抗するならCompiler依存の最適化に頼ってvalarray使うしかない。
839 :
デフォルトの名無しさん:2014/06/11(水) 09:27:46.69 ID:PJoRkmgD
つstd::transform
840 :
デフォルトの名無しさん:2014/06/11(水) 11:50:08.04 ID:01hDVrAo
>>838 FORTRAN2008でも並列化されるかどうかは実装依存だろw
>>840 実装依存じゃあるが、std::valarrayは常用されないんで、
殆どのvalarrayを使わない外部のLibraryを
持ち込んだりすると大きな差が出る。
842 :
デフォルトの名無しさん:2014/06/12(木) 01:25:23.15 ID:gBR3iv8w
autoが入ってから面白いコトが出来るようになったな。
struct Some{};
struct One
{
static int Some(void);
};
template<class Type> Moon(void)
{
auto someone = Type::Some();
}
Moon<Some>();
Moon<One>();
コムパイルエラーを見るのが楽しいの?
auto は超の昔からあるのだが…
仕様変更のことなのかこのバカが言いたいのは
845 :
デフォルトの名無しさん:2014/06/12(木) 19:43:58.13 ID:pL3eo2ak
>>843 Moonの戻り値型書き忘れたけど戻り値の型と各関数の実装書いとけばCompileは通るだろうよ。
面白いのは、static関数の代わりにConstructorが使える事。
autoの仕様が変わる以前もstatic関数の代わりにConstructorを使えたが、
戻り値の型がConstructorと違う場合は不便だった。
846 :
デフォルトの名無しさん:2014/06/12(木) 20:00:01.48 ID:by0Erjmi
struct Hello
{
static ::std::string string(void)
{
return "Hello";
}
};
template<class factory> void Print(void)
{
auto message = factory::string();
std::cout << message << std::endl;
}
Print<Hello>();
Print<std::string>();
>>845 無知ですまんが それがどの仕様によるものなのか
教えてもらえないだろうか
static int Some(void);
ってコンストラクタじゃなくて関数宣言じゃね
>>848 そっちじゃなくて
struct Some{}; に対して
var x = Some{}; だけでなく
var x = Some::Some{}; ができるらしい
ということじゃ
850 :
デフォルトの名無しさん:2014/06/12(木) 22:37:52.20 ID:cQg3VuKd
>>848 Constructorって言ってんのははSomeのデフォコン
>>849 それ俺も不思議に思った。
出来ないよね?
>>851 出来ないと思ったけどVC++(CTP)で通ったのでマジかと思った
見るとこ間違えてたか
と思ったけどgcc 4.9.0でSome::Some{}が通らない
n3936の5.1.1p13と5.2.3あたりを読んだが
それらしい記述が見つけられんかった
>>845の解説をキボンヌ
855 :
デフォルトの名無しさん:2014/06/12(木) 23:11:57.71 ID:a0qy1iPO
VCなら行けたな
さっちんが先走りしただけじゃね?
>>849 それはできない。
3.4.3.1 [class.qual] p2 (N3936)
> ... Such a constructor name shall be used only in the declarator-id of
> a declaration that names a constructor or in a using-declaration. ...
規格に準拠しきってないコンパイラなんて珍しくも無いと思うが
特にVC++とかな
861 :
デフォルトの名無しさん:2014/06/13(金) 10:43:02.97 ID:9I0XJZWT
他にはVC++とかね
あとVC++もだな
863 :
デフォルトの名無しさん:2014/06/13(金) 20:11:13.22 ID:UDg2skpP
それとMicrosoft C/C++ Optimizing Compilerとかな
うんこgccよりはマシかな
規格に準拠しきってるコンパイラなんて存在しないだろ…
だったら何のための規格なんだろうな
実装の目安にして他との互換性を気持ち上げておく為?
完全準拠してますと謳えば花丸がもらえるんだからそれなりの価値はある
昔の言語には実際に規格の無いのがあったが
その結果、方言と言う名の全く別の言語が大量に生まれた
ある環境で書いたコードが他の環境で動くよう意識すれば、ある程度書ける
それは規格あってこそだと思う
プログラミング言語の規格ともなれば、テストスイートとしてサンプルプログラム集があって
それを例えば99.5%動かせないと規格準拠を名乗れないとか決まってるもんじゃないの?
>>870 そんな規格は見たことがない
ただ誰もマトモにフル実装できない糞言語も珍しい
規格化されている言語でフル実装(?)されている言語て何があるの?
>>871 FortranにはU_F95_TS、AdaにはACATSなんかのテストスイートがあるけど
AdaとかFortranは軍事用で客が強い
さすがプログラム板
0か1、100%じゃないと意味が無いってやつが居るな
エイダ ラブレスさんの母親の名前は
アナ ベラ ミル バンク
879 :
デフォルトの名無しさん:2014/06/15(日) 20:28:12.01 ID:+/6EDhQc
clangでC++14満たしてない機能ってなにがあるっけ?
なんだこいつ
ググればわかる質問を他人に答えてもらってお礼もないとは性根が座っている。立派立派。
ググれば分かる質問をわざわざ答えるとはおまえはブァフリンか?
こうやっていつものようにスレは埋まっていく
C++14まだー?
winさんとこ以外はもう来てるらしいよ
ISOは殿様商売なので
出版を人並みに急ぐとか
そういうことはしません
888 :
デフォルトの名無しさん:2014/06/18(水) 22:52:04.43 ID:ZMMbatdC
出版はめっさ早いが。ドラフトも駄々漏れだし。
仕様策定には当たり前だが時間かけているけど。
今ISOはc++14に向けてなにやってるの
まだきょうぎちゅうなの?
890 :
デフォルトの名無しさん:2014/06/19(木) 12:39:01.26 ID:EXEtiHUa
papers読め
INVOKEってどうなるの?
実行される
インボケって何?
T.M.Revolutionかな?
マジしとくとINVOKEはbindとかの関数ラッパーの動作を定義する規格内の用語・抽象概念
C++14かそれ以降では具体的なapplyテンプレートの仕様に吸収・再定義されてINVOKE自体は消滅する予定
そりはn3932の20.9.2のINVOKEが無くなるということ?
2014年年内に間に合うんかね
897 :
891:2014/06/24(火) 19:53:37.36 ID:6rG++Vto
898 :
896:2014/06/29(日) 09:25:12.32 ID:1IB6jm7Z
>>897 亀レスだけど3936の間違いだったすまん
std::integer_sequence ってC++14で組み込まれるそうで、手で展開するのと違って限界が特にないのかな。
、と思って実験してみたら80万弱で頭打ちだった。
Wandbox上の[C++] clang HEAD 3.5.0 で terminate called after throwing an instance of 'std::bad_alloc' だと。
手で適当に展開したやつだと65536ぐらいだからずっといいけど。
>>900 そうだろうけど、コンパイラ・マジックでなんとかするのかと思ってた。
20、30ならともかく
6万80万っていうのは何がしたいんだ
現時点で具体的な目的はない。
再帰深度の問題かと思ったがそうじゃないみたい。
単に2つのindex_tupleをつなげるだけで大きさの限界にひっかかるね。
32768 + 32768 だとOKで 32767 + 32767 だとダメだとか。
間違えた
32769 + 32769 だとOKで 32770 + 32770 だとダメだとか。
>>900 目盛りは最低でも20cmはほしいよな。
VC2013のCTP全然期待外れだ
>>905 お前なら 10cm で十分だろ、見栄張るなよ (w
>>906 constexpr はダメだね。
constexpr であるべきところに「constexpr」と書くことができるようになった、ってだけでまともに活用できない。
C++14までで
int ar[n]はできるようになったのに
array<int, n> arはできないのか?
可変長配列は別物の機能なので…
>>909 >C++14までで int ar[n]はできるようになったのに
ソースは?
>>912 gccはC++03以前から独自拡張で、
可変長配列実装してたろ。
てか14のヤツはアレのフィードバックなんだよな。
規格に実装から取り入れられた機能が入るのはそう珍しい事じゃない、
というか複数の既存実装の足並み揃える為に規格化したりするわけで…
>既存実装の足並み揃える為に規格化
GCC「でもマイクロソフトが起源の関数は実装しません(キリッ)」
そらMSは他のOSの事を考えてねぇからな。
つまり規格なんてクソ食らえ
おまえの中ではそうなんだろうな。
↑コミュニケーション障害者
>>920 どういう結果を求めてる?
shortとintでその引数では推論出来ないでしょ。
>>921 test(dummy1<4,3,2,1>{})
test(dummy2<4,3,2,1>{})
というように、実引数だけで呼び出せることを求めてます。
dummy1 とか dummy2 という名前は明示的に与えてるんだし、曖昧になる要素ありますかね?
>>922 あ、すまん。
スマホで見てたんだけど、右端のコードが切れてて、適当に書いたサンプルコードだと思って、脊髄反応してしまった。
確かにぱっと見は曖昧さなさそうだねー。
>>920 推論されないのはそういうルールだからじゃないか。variadicになっても同じことだろう
14.8.2 Template argument deduction
...
13 A template type argument cannot be deduced from the type of a non-type template-argument.
14 [ Example:
template<class T, T i> void f(double a[10][i]);
int v[10][20];
f(v); // error: argument for template-parameter T cannot be deduced
? end example ]
>>925 なるほど。
勉強になったわ。
型パラじゃない(整数)パラメータの場合、その整数自体の型推論は行われないと、規格で定められていたのか。
そんな重箱のスミに見えるようなところまで文書化されているとは…スゴイなあ。
最近の Haskell なんかだと型をもうひとつメタなレベル (種; kind) に持ち上げて型レベル計算できたりするんだけど、
C++ でもいずれそのレベルの抽象化が可能になったりするかな?
それがconceptなのでは。なんだか誘導尋問っぽいな。
template< class, class > struct Cell;
template< class > struct Car;
template< class car, class cdr > struct Car< Cell< car, cdr > >
{
typedef car Cell;
};
template< class > struct Cdr;
template< class car, class cdr > struct Cdr< Cell< car, cdr > >
{
typedef cdr Cell;
};
Car< Cdr< Cell< int, void > >::Cell >::Cell( 0 );
こういうのは昔から出来たけど。
>>927 基本を勘違いしてる
複数のテンプレート引数の導出はそれぞれ独立して行われてあとで結果が合成される
例の場合testの呼び出しでcherry=dummy1、それに伴い間接的にE=shortと導出されても
それはelemの導出には影響せず、elem単独では既出の理由で導出できない