- 1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ]
- The C++ Standards Committee
www.open-std.org/JTC1/SC22/WG21/ Wikipedia https://en.wikipedia.org/wiki/C%2B%2B14 C++11/C++1y 18 toro.2ch.net/test/read.cgi/tech/1365073520/
- 554 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 00:35:24.21 ]
- それよくわかってない門外漢の質問で済みませんが、単にコンパイル時にレイトレ計算完了してるって理解でいいの?
コンパイル後にシーンやモデルの入力替えることが出来ないのであれば、プロダクトとしての価値がよくわかりません 解像度上げたら十分時間かかってるようだし
- 555 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 00:45:19.98 ]
- >>554
さすがにレイトレ完了までやってしまうのはネタだけど、 部分的にでも出来れば全体として高速化が出来る部分が増えるってことだ。
- 556 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 00:49:50.51 ]
- わかりやすいのは、sqrtやsin/cosなどの演算目的の関数だろうか
あるいは、ビットマスクのようなものとか
- 557 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 00:58:42.44 ]
- >>554
その理解でいい 特に価値は無い PostScriptでレイトレと似たようなもんだな 「プリンタがレイトレしてやがるwwwおせぇwww」 「コンパイラがレイトレしてやがるwwwwおせぇwww」 「Webブラウザが仮想PCホストしてやがるwwwwおせぇwww」 あるいはメガデモ的な面白さ
- 558 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 03:05:47.24 ]
- mailing来てるのに全く話題に出てないのな
やっぱりswap演算子はボツか
- 559 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 06:24:26.17 ]
- 本はよ
- 560 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 21:51:33.29 ]
- 本は要らんから isoははよ規格出せ
- 561 名前:デフォルトの名無しさん mailto:sage [2014/01/29(水) 23:22:02.65 ]
- >>557
本はよ
- 562 名前:デフォルトの名無しさん mailto:sage [2014/01/30(木) 00:58:06.43 ]
- >>555-557
解説どもです、スッキリしました 変態的で興味が募ったのでちょいぐぐって情報の海に溺れてきます
- 563 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 05:45:58.14 ]
- 簡単なhackで引数に明示的な型しかとらない指定ってできませんかね?
int a[1]; func( bool ); func( a ); // たまに起こるミス、型チェックを通ってしまう たとえば func( explicit bool ); ←こんなキーワード func( true / false / bool(a) ); // OK func( a ); // 暗黙の変換はエラー
- 564 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 06:27:40.45 ]
- >>563
こういうのはtemplateが役に立つ ideone.com/eFtKnq
- 565 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 06:34:30.65 ]
- あとはbool引数を取るexplicitコンストラクタを持つクラスをつくって
それをfuncの引数にすると二重の暗黙変換はできないからfunc(explicit_bool_type);に直接intを渡せなくなる。
- 566 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 06:36:30.97 ]
- ideone.com/PqUkNh
- 567 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 06:41:43.77 ]
- >>565は間違いだった。すまん。
- 568 名前:563 mailto:sage [2014/02/14(金) 08:31:22.51 ]
- >>564-567
ありがとうございます 暗黙の変換が行われる前にテンプレート関数で引き受けて=delete宣言するのですね 目から鱗が落ちました
- 569 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 08:39:30.06 ]
- >>563
T で受け取って戻り値 std::enable_if<std ::is_same<T,bool>::value>::type SFINAE サイコー
- 570 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 13:52:59.31 ]
- static_assert(std::is_same<T,bool>::value, "申し訳ないがbool以外はNG");
- 571 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 14:11:25.48 ]
- 本当に成金企業がやって吹いたw
とりあえずおめ。
- 572 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 21:15:51.96 ]
- >>569
Tで受け取って、なら大丈夫だけど一般にはT&&とすることも多いから is_same は要注意だよな。
- 573 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 21:33:33.45 ]
- >>572
そそ なんかうまく呼ばれねーとなって remove_cv とかゴテゴテと追加
- 574 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 21:38:06.90 ]
- オレはこうしてるw
template<typename T> struct remove_ref_cv { typedef typename std::remove_reference<typename std::remove_cv<T>::type>::type type; };
- 575 名前:393 mailto:sage [2014/02/15(土) 04:06:39.49 ]
- 俺の予想が当たった!
- 576 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 05:06:04.15 ]
- なんか言語機能が弱すぎて書き方が多様化するperlっぽくなってるな
オナニー化はダメな流れだわ
- 577 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 07:14:28.55 ]
- C/C++より強力と言える言語はアセンブラしかないが
- 578 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 13:07:36.64 ]
- >>577
言語「機能」っていってるじゃん
- 579 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 13:40:57.63 ]
- オブジェクト指向アセンブラマダー?
- 580 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 16:56:16.42 ]
- むかしむかし、SAPPというアセンブラが川に洗濯に行って流されてしもうた
- 581 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 18:42:32.62 ]
- なんで、アセンブラと同程度の実行速度を保ちつつモダンな書き方のできる言語が登場しないのかね?
- 582 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 19:40:01.06 ]
- Dじゃダメなの
- 583 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 19:43:32.33 ]
- Dはどうも万年ベータ版な印象
- 584 名前:デフォルトの名無しさん [2014/02/16(日) 20:36:52.85 ]
- >>581
童貞度というか HDL はry
- 585 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 21:09:46.62 ]
- C/C++が一番それっぽいといえばそれっぽいが、そもそもモダンな書き方ってなによ。
- 586 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 21:13:25.43 ]
- C#みたいなやつ
プロパティとかテンプレートとか
- 587 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 21:51:56.13 ]
- >>581
お前が作って公開すればいいんじゃね?
- 588 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 23:30:49.27 ]
- c++11でも充分よくやってるとは思うけどな
でもランタイムで逃げてる言語ほどラクにはならんよなあ ふと今c++にオプション的なランタイムと糖衣構文追加のような形で、LLっぽい共存とかできないのかなと着想したんだけど、Obj-Cがまさしくそれだと気付いて絶望した javaより古いルーツの言語にいちゃもんつけるのもあれだが、あの言語もうちょっと記法レベルでなんとかならんもんなのかな Obj-Cは動的言語面の実装自体はいい線行ってるから、c++のパフォーマンスを有効活用できるプリプロセッサなんか面白いかもな Obj-C++ with Lightweight ここまで没
- 589 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 23:35:13.76 ]
- ^が生理的に受け付けないんだが
- 590 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 23:36:54.80 ]
- ^^
- 591 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 00:58:30.07 ]
- c++ は何が悪いんだろうなあ
一から再構築したらうまく行くもんかねぇ?
- 592 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 01:12:08.24 ]
- 何も悪いところなんて見当たらないが?
- 593 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 01:13:19.95 ]
- C++はよくやってる部類のはずだが、
低水準から高水準までカバーしつつマルチパラダイムをサポートするという時点で そもそも言語に与えられた問題領域が複雑すぎる部分はあると思う
- 594 名前:デフォルトの名無しさん [2014/02/17(月) 08:03:03.39 ]
- C++11とか使える奴はいいよな。過去のコードや古い環境があるから使いたくても使えん。boostはインストールが面倒だし。時間がない。結局家でコードを書くときしか使えんから、学習曲線が緩やか。
- 595 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 08:03:45.48 ]
- 関数ポインタの表記が分かりにくい
- 596 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 08:49:21.69 ]
- 今はusingがあるじゃない
- 597 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 09:03:56.85 ]
- typedef さんの出番を取りやがって...
- 598 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 14:16:06.87 ]
- > 何も悪いところなんて見当たらないが?
テンプレートとかどう?
- 599 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 14:19:29.25 ]
- コンパイルがクソ遅かったり
クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり テンプレートでミスるとわけのわからないコンパイラエラーにおそわれたり っていうのは改善されたの?
- 600 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 14:29:00.81 ]
- >クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり
他の言語でもかわらなくね >テンプレートでミスるとわけのわからないコンパイラエラーにおそわれたり コンセプトさんが何とかしてくれる コンパイル遅いのは我慢しろ
- 601 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 17:20:08.30 ]
- >>599
> クラス増やすたびにいちいちヘッダファイルを書くとか言う間抜けなことを強いられたり それはそういうルールでコード書くことを選択したプログラマの責任だろ。 他から参照しないならヘッダファイルなんぞいらんし、なんならヘッダに全部書いてろよ。
- 602 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 17:50:41.13 ]
- >>601=キチガイアスペ
- 603 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 18:28:57.40 ]
- >>600
> コンセプトさんが何とかしてくれる それ10年以上言い続けてるんだけど・・・
- 604 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 18:31:17.01 ]
- 次はその表現がまるまる自分に跳ね返ってくるって予想できない?
何かを間抜けって貶すなら自分が貶される覚悟もしておこうよ・・・・
- 605 名前:デフォルトの名無しさん [2014/02/17(月) 21:28:09.39 ]
- >>601
そういえば、いつも.hと.cppのファイルごとコピーしてプログラム書くから 後になってcppの中身カラじゃねーか(最初からいらなかった)と気がついたりすることあるな。 ほかにもクラスをテンプレートに変えて、面倒だから全部ヘッダーに書いてcppいらなくなったとか でもプロジェクトに追加してるからほったらかしで意味ないcppが何個も
- 606 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:34:39.70 ]
- >>598
凄く便利だけど?
- 607 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:40:16.67 ]
- schemeあたりでコード生成する方がはやいのではないか
- 608 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:45:02.43 ]
- c++って、どのぐらいまで仕様を把握したら足を撃たないのか一向に分からない
- 609 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:46:39.42 ]
- >>607
makeheaders とかでいいんじゃないの。
- 610 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:49:09.20 ]
- >>609
学生の頃、いつもc++のヘッダーファイルを手で書いてたよ
- 611 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:59:25.26 ]
- ヘッダとかドキュメント生成系のソフト有るけど、
マクロ使ってちょっとソースで変わったことすると、すぐ汚い結果吐くんだよね。 言語レベルでヘッダ/ドキュメント生成のためのルールを規定すれば、 Clangとかが綺麗なのを吐いてくれるようになると思うんだが。
- 612 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:35:09.02 ]
- >>611
その着想で腰を上げたとして、委員会が完璧な仕様を決めるまで十何年かかるかが問題だなw 生成系ツールや俺俺ルールでお茶濁すくらいが現実解だと思う
- 613 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:43:49.78 ]
- >>608
足を撃つ、ってどんなレベルのことを言ってるのかで答えは変わる。
- 614 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:44:59.29 ]
- 意外とやってみれば、コンセプトさんより先に決まるかも。
constexpr より強い、comptexpr (compile time expr) が欲しい。
- 615 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 22:14:17.07 ]
- >>608
仕様に由来しないところで幾らでも足を吹っ飛ばせるから考えるだけ無駄 ・・・とか言い出すと言語に寄らずバグらせ放題ってことになるけどな
- 616 名前:デフォルトの名無しさん [2014/02/20(木) 11:45:50.04 ]
- >>608
C++はミドルウェアより下のレイヤーで使う言語だから、 分かる人だけ使えばいいんじゃないかな。 エリートさんたちがプログラミングする世界だから。
- 617 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 11:52:47.95 ]
- >>616
そのポジションはCじゃね?
- 618 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 12:03:10.74 ]
- >>608
ja.m.wikibooks.org/wiki/More_C%2B%2B_Idioms 言語仕様は↑これを完璧に理解出来る程度に分かっていれば良い
- 619 名前:デフォルトの名無しさん [2014/02/20(木) 12:04:24.13 ]
- >>617
Cが主戦力であることは否定しないけど、 iOSはデバドラにサブセットC++ WebKITもC++ gccもC++ と増えてきてる。
- 620 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 12:19:46.28 ]
- 新しいボード等が出ても、コンパイラがcしか対応してないって、ばっちゃが言ってた
- 621 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 14:30:13.50 ]
- そのコンパイラを作って動作保障するのは誰だと思っているんだっ
- 622 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 14:38:29.56 ]
- ×保障
○保証
- 623 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 17:58:43.05 ]
- 現れては消える高級言語を使うよりC++のが楽じゃない?
- 624 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 19:02:16.04 ]
- C++1yってC++14の次だと思ってたけど、もしかして14のこと?
- 625 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 19:43:55.90 ]
- C++17を目指してる次のやつのことであってる
- 626 名前:デフォルトの名無しさん [2014/03/06(木) 01:45:01.20 ]
- gcc4.8.1で下のコードでエスケープできないってエラー吐く
#include <regex> std::regex re("\\[(an|pan|man)\\]"); VC++では動いてたんだが [ってどうやってエスケープするんだ?
- 627 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 02:13:16.87 ]
- >>626
つ Google
- 628 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 03:15:02.53 ]
- regexの仕様知らずにいうけど、それでエスケープされないならコードを打ち込む段階で
U+005C(REVERSE SOLIDUS)じゃなくてU+00A5(YEN SIGN)に変換してしまったってことはないか? まぁ最悪\xhhとかで代用すればいい
- 629 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 04:43:28.41 ]
- >>626
エラーメッセージは本当にエスケープできないって出るの? gcc4.8.1は<regex>の実装がまだ不十分な段階にあるんだが。 gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
- 630 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 18:35:52.72 ]
- >>626
VCで動くなら使っているGCCのバグか>>629だろ GCCなんて使わないでClang使ったほうが良いんじゃないか
- 631 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 19:16:53.76 ]
- そりゃあヒーローはエスケープなんてしないもんよ
- 632 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 19:30:39.21 ]
- そんなときはRAWリテラルでも
- 633 名前:626 [2014/03/07(金) 00:10:48.35 ]
- >>627
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はスレチだったみたいでスマソ
- 634 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 00:18:47.68 ]
- >>633
あ、うんうん
- 635 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 00:59:17.51 ]
- >>633
stackoverflowのレスみると C++ standard library(GCC用?)がなんか駄目なんだな。 Clangでこれ使っているならClangでも駄目。で、Boost regex使えか
- 636 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 08:40:30.61 ]
- std::threadってどれくらい使える?
- 637 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 09:38:35.43 ]
- 普通に使える
- 638 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 19:48:53.99 ]
- C++11 <regex> support [2013-10-03]
Regular expression support in libstdc++-v3 is now available. だから、GCCは超最近のものでないと動かんのだな
- 639 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 01:36:43.59 ]
- regexくらいPOSIXの方でいいじゃんと思ってしまう。
というか、エラーになるということはもしかして、std系って、POSIX関数のラッパーじゃなくてものによっては独自実装しているってことなのか。 知らんかった。
- 640 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 02:06:43.17 ]
- >639
std::regex は ECMAScript の正規表現対応だからまず間違いなく独自実装だが。
- 641 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 02:33:58.47 ]
- 何も指定しないとECMAになるだけだろ。
バギーな動作するよりは既定でgrepになってた方がまだマシ。
- 642 名前:デフォルトの名無しさん [2014/03/10(月) 17:05:49.31 ]
- egrepですらないとか正気か?
それともGNU grepとかBSD grepのことか?
- 643 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 21:38:10.28 ]
- 基本正規表現も拡張正規表現も書式が違うだけでできることにたいした違いはないでしょ
わざわざ実装するとかどうしてそんなことになったんだろ。 キャプチャの問題?
- 644 名前:デフォルトの名無しさん [2014/03/10(月) 21:57:51.80 ]
- どのライブラリ実装も実装は別にやるに決まってるだろw
- 645 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 05:23:11.47 ]
- 定数をconstexprにするメリットってあんの?
- 646 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 23:39:44.52 ID:fXwBZvGt]
- >>645
コンパイル時に決定できないとき教えてくれるからバグを防げる
- 647 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 05:31:43.20 ID:zulvYP1L]
- >>646
なるほど
- 648 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:03:46.54 ID:81wfXhZd]
- 普通の定数でも決定できないとエラーになるんじゃね
- 649 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:14:49.29 ID:+lIKaSU4]
- >>648
ならないよ。そのスコープに入るときに計算されるだけ。
- 650 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:32:07.93 ID:nfV6YhIZ]
- >>648
constだと const int x = rand(); みたいなことが普通に出来る。constexprでは不可。
- 651 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:41:03.39 ID:nfV6YhIZ]
- >>650を書いてから思ったけど、C++14ならコンパイル時乱数ってのもそれほど難しくないよなw
- 652 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 19:47:59.08 ID:81wfXhZd]
- >>650
ああ、そうだ const を使った時にエラーになるだけだった (コンパイル時定数でないといけない所に使うと)
- 653 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 21:31:28.19 ID:gZyvGjeH]
- >>651
コンパイルのたびに変わられてもなあw デバッグ担当者に恨みがあるときに有用か
- 654 名前:デフォルトの名無しさん mailto:sage [2014/03/14(金) 00:55:48.19 ID:8ZkUtZ7A]
- これは素晴らしいコード
よく覚えておこう
|

|