C++14/C++1z 20
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2014/09/11(木) 06:02:04.60ID:qJWLxxewhttp://www.open-std.org/JTC1/SC22/WG21/
Wikipedia
https://en.wikipedia.org/wiki/C%2B%2B14
※前スレ
C++14/C++1y
http://peace.2ch.net/test/read.cgi/tech/1382889622/
0002デフォルトの名無しさん
2014/09/11(木) 16:43:25.38ID:ojbvfKZR0003デフォルトの名無しさん
2014/09/11(木) 18:33:13.97ID:K0+B6Pp20004デフォルトの名無しさん
2014/09/13(土) 09:46:33.10ID:qZU1LPcz0005デフォルトの名無しさん
2014/09/13(土) 20:25:43.97ID:Y+GSO1Mi0006デフォルトの名無しさん
2014/09/16(火) 10:52:42.11ID:zSFpHmgt0007デフォルトの名無しさん
2014/09/16(火) 19:23:26.19ID:iJ2KM/M6先月のプレビュー版ではthread_localが入ったし
このままならconstexprは入りそうではある
https://h70tha.dm2302.livefilestore.com/y2pO_T96yqnsay4tnPVnyTEENlK3YRiIV0uKLAaDg8O1qSB5bjhnYKyUlDm2ZOU8a6rXgqV9dZGU2sHOpN3ziLXEPLJCIVH0dWYLbhJ_jGrCAs/cppconform.png?psid=1
0008デフォルトの名無しさん
2014/09/17(水) 02:34:32.03ID:epONY4U2costexpr完全に入ったらしばらくバージョンアップしないつもり
0009デフォルトの名無しさん
2014/09/17(水) 19:49:48.85ID:LDo1pzJu0010デフォルトの名無しさん
2014/09/18(木) 13:10:26.54ID:/Tic6iSdVS14は割と楽しみだが、VC++だけでもそろそろポータブルにしてくれんかな?
0011デフォルトの名無しさん
2014/09/18(木) 13:21:54.31ID:ITm6la/oポータブル化したとして何GBになるんですかね……?
と言うか何気に環境変数とか管理者権限云々で開発環境のポータブル化難しくね?
0012デフォルトの名無しさん
2014/09/18(木) 13:29:31.28ID:kxzq7V590013デフォルトの名無しさん
2014/09/18(木) 23:05:37.14ID:jPU85ALVサイズはそんなに大きくないはず
実は丸ごとコピーして開発者コマンドプロンプトの環境変数を設定したら動くんじゃないの?
0014デフォルトの名無しさん
2014/09/19(金) 01:41:57.82ID:UwNOujrpThe Microsoft Keyboard Layout Creatorのver1.3.4073 4.6 MBやver14 10.1MB
をインストールするとCL ver14のサブセットがbinフォルダにインストールされます。
コイツは恐ろしいことに、このツールはレイアウト情報からソースコードを生成して、
(といってもグローバル変数の初期値を書き換えるだけでコードは全て同じだが)
CLでコンパイルしてキーボードレイアウトDLLを生成するというシロモノなのだ。
なんというか、CLの無駄遣い感が半端ないぞマイクロソフトォッ!
MSKLCはインストールタイプのアプリケーションだけど、
インストール先のフォルダをコピーすれば普通にポータブルに動いた気がする。
>>13
動くんじゃないの?というか動かなかったらちょっとびっくりする。
0015デフォルトの名無しさん
2014/09/19(金) 06:29:36.75ID:POGo0wF3.netかcliで作られてるから.netインストール必須でそのバージョン入ってない環境へのポータブル化無理かな
0016デフォルトの名無しさん
2014/09/19(金) 22:07:04.33ID:NULeqarn試してみた。MSKLC(Version 1.4)を適当なツールで解凍した後、USBメモリに
コピーして32bitWin7機(開発環境は入れていない)で動作させてみると、
「cl : Command line error D8027 : cannot execute 'c1xx'」って言われますた(´・ω・`)
適当にc1xx.dll(from VS2013)を突っ込んでも
「cl : Command line error D8027 : cannot execute 'E:\MSKLC\bin\i386\c1xx.dll'」に変わるだけだし
ちなみにclコマンドだけだと
「Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.220 for 80x86」と返ってくる
(x64版とia64版もある)
まあmsvcr80.dllとかもあるし、中身はVC2005かな?
0017デフォルトの名無しさん
2014/09/20(土) 22:33:38.82ID:en7FecTiXP上にインストールした1.3.4073をWin8.1(64bit)に持ってったら動いたけどなぁ…
ちなみにcl.exe(Version 14.00.31008.15 for 80x86)に渡るコマンドラインは
cl.exe -nologo -IC:\PROGRA~1\MICROS~1\inc -DNOGDICAPMASKS -DNOWINMESSAGES -DNOWINSTYLES -DNOSYSMETRICS -DNOMENUS -DNOICONS
-DNOSYSCOMMANDS -DNORASTEROPS -DNOSHOWWINDOW -DOEMRESOURCE -DNOATOM -DNOCLIPBOARD -DNOCOLOR -DNOCTLMGR -DNODRAWTEXT -DNOGDI
-DNOKERNEL -DNONLS -DNOMB -DNOMEMMGR -DNOMETAFILE -DNOMINMAX -DNOMSG -DNOOPENFILE -DNOSCROLL -DNOSERVICE -DNOSOUND -DNOTEXTMETRIC
-DNOWINOFFSETS -DNOWH -DNOCOMM -DNOKANJI -DNOHELP -DNOPROFILER -DNODEFERWINDOWPOS -DNOMCX -DWIN32_LEAN_AND_MEAN -DRoster -DSTD_CALL
-D_WIN32_WINNT=0x0501 /c /Zel /Zp8 /Gy /W3 /WX /Gz /Gi- /Gm- /GX- /GR- /GF -Z7 /Oxs Layout01.c
…オプション多すぎてロクにAPIも呼べないが、下手にオプションを削るとインクルードファイルが足りなかったorz
0018デフォルトの名無しさん
2014/09/23(火) 20:12:30.04ID:49Grt2TR0019デフォルトの名無しさん
2014/09/26(金) 19:11:59.86ID:5FN85gvw0020デフォルトの名無しさん
2014/10/06(月) 18:12:27.11ID:lAgiFd+Y0021デフォルトの名無しさん
2014/10/06(月) 21:54:37.57ID:2jlCLSza0022デフォルトの名無しさん
2014/10/07(火) 07:46:59.59ID:Ty8b7rWwhttp://isocpp.org/blog/2014/08/we-have-cpp14
clangは実装終わってるし、-std=c++1yじゃなくて-std=c++14オプションも付いてる
http://clang.llvm.org/cxx_status.html
gccはまだ
https://gcc.gnu.org/projects/cxx1y.html
MSVCは腹を切って死ぬべきだ
http://blogs.msdn.com/b/vcblog/archive/2014/06/11/c-11-14-feature-tables-for-visual-studio-14-ctp1.aspx
0023デフォルトの名無しさん
2014/10/07(火) 07:56:10.18ID:8ffJrscyプログラミングに携わるべきではないな
0024デフォルトの名無しさん
2014/10/19(日) 17:09:22.99ID:/f9ejQX40025デフォルトの名無しさん
2014/10/20(月) 00:56:30.98ID:95VZotEp0026デフォルトの名無しさん
2014/10/25(土) 21:51:58.38ID:se+g30wO関数の戻り値に使えたりコピーが便利なくらい?
0027デフォルトの名無しさん
2014/10/25(土) 21:56:38.97ID:dFV7jCVh今はstd::begin,endあるけど
0028デフォルトの名無しさん
2014/10/25(土) 22:05:50.92ID:vC010Lkoalgorithmとbeginは関係無くね?
それにarrayとstd::beginは両方とも11で追加されたはず
0029デフォルトの名無しさん
2014/10/25(土) 22:28:46.56ID:JcXeoZEWstd::array<int, 4> a = {1,2,3,4};
std::array<int, 4> b = {1,2,3,4};
std::cout << std::boolalpha << ( a == b ) << "\n";
a.fill( 42 );
std::cout << std::get<1>( a ) << "\n";
0030デフォルトの名無しさん
2014/10/26(日) 05:29:02.67ID:avQ7NUoDhttp://cpplover.blogspot.jp/2014/09/c14-lambda.html
↑の途中に出てくる
struct X
{
int data = 0 ;
void get_lambda()
{ // コピーキャプチャーしているつもり
return [=](){ return data ; }
}
} ;
って、
戻り値がvoid宣言なのにラムダ返しているのなんで?
0031デフォルトの名無しさん
2014/10/26(日) 05:34:24.13ID:yJlRO0wF0032デフォルトの名無しさん
2014/10/26(日) 07:18:34.73ID:x2QWGOO7ドワンゴ広告ウッゼーw
0033デフォルトの名無しさん
2014/10/26(日) 09:13:32.77ID:YG7wtUNO型消去使うとdynamic_castが使えない場面が出てくる
any_castがダウンキャストサポートできないのもその絡みもあるようだし
0034デフォルトの名無しさん
2014/10/26(日) 09:24:43.71ID:rLkTHiAHその時はそれに対応したコンパイラなかったのか
それとも、脳内コンパイラで確認したってことかな
0035デフォルトの名無しさん
2014/10/26(日) 16:25:33.68ID:GFqFczi9なお理想コンパイラはよく間違えるもよう
0036デフォルトの名無しさん
2014/10/26(日) 20:53:19.66ID:4u3Xx+E7朝から晩までコード見る度に規格と照らし合わせてると
脳内コンパイルが出来るようになって
ネイティブスピーカーの域に達した感覚になるんだわ。
それまでとは比べものにならない速さで読み書きできるようになる。
0037デフォルトの名無しさん
2014/10/27(月) 13:54:57.02ID:MTe62n5jなんて、さっちゃんが言い出した
0038デフォルトの名無しさん
2014/10/27(月) 21:25:43.77ID:4ApD5/+I0039デフォルトの名無しさん
2014/10/27(月) 22:51:33.32ID:xtFW0vyktemplate<typename E>
class initializer_list_base;
template<typename E, int N>
class initializer_list : initializer_list_base<E>;
があったらよくね?
0040デフォルトの名無しさん
2014/11/04(火) 12:36:41.71ID:SSMCKloWinitializer_list が constexpr 対応なら size メソッドで取得して、必要なサイズと合致しなければ static_assert するという方法で対応できる。
0041デフォルトの名無しさん
2014/11/04(火) 14:16:39.79ID:TAxFdUHz基本的なことですまないけど
size()がconstexprってどういうことなん?
template<typename T>
void f(std::initializer_list<T> data) {
data.size(); //constexpr?
}
呼び出し側の実引数によってsize()は変わるから
定数じゃないと思ったのだけれど
0042デフォルトの名無しさん
2014/11/04(火) 15:57:15.50ID:4Av9OkMR無いようならコンパイル時に決定できるのでは (C++14)
0043デフォルトの名無しさん
2014/11/04(火) 16:19:26.58ID:dNiQr+8C0044デフォルトの名無しさん
2014/11/04(火) 16:51:59.88ID:SSMCKloWコンパイル時に値が作成されるような値の呼び名ってあるの?
なんとなく >>41 みたいな場合で「定数」っていう言葉を使うとちょっと微妙だなと思ったので。
004540
2014/11/04(火) 17:42:59.22ID:SSMCKloWスマソ。 constexpr 関数内で static_assert は呼べないらしい。
http://boleros.hateblo.jp/entry/20130319/1363719366
でもまあ他のなんだかんだの方法で検出することは出来る程度にコンパイル時に確定してるのは間違いない。
0046デフォルトの名無しさん
2014/11/04(火) 23:48:12.39ID:Rug3DE9Lconstexpr関数はメタ関数に使えるから
template < int N >
struct meta_dosomething
{
0047デフォルトの名無しさん
2014/11/04(火) 23:50:19.37ID:Rug3DE9Lstatic_assert( !value, "error!" );
};
途中で送信して泣きそう
0048デフォルトの名無しさん
2014/11/05(水) 10:33:08.72ID:J65JsdQfそれだけでも進歩だよ
0049デフォルトの名無しさん
2014/11/14(金) 17:54:24.74ID:6MnqTsm2{ return true; }
の二つ目のautoって何のためにあるんですか?
書かなきゃいいだけに思えるんです。
0050デフォルトの名無しさん
2014/11/14(金) 18:06:11.70ID:G/YaetuK0051デフォルトの名無しさん
2014/11/15(土) 08:01:50.93ID:TdH6O9+D{ return true; }
※1 型は->を見てくれ。->が無かったらreturnから推論して
※2 気が変わった。やっぱ型はreturnから推論して
0052デフォルトの名無しさん
2014/11/19(水) 13:52:09.82ID:meW/TIzhhttp://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
0053デフォルトの名無しさん
2014/11/19(水) 20:06:17.55ID:oXOCRAV5ようやく constexpr が入るのか
わくわく
0054デフォルトの名無しさん
2014/11/19(水) 20:08:37.37ID:lJVSEwou0055デフォルトの名無しさん
2014/11/19(水) 21:46:53.07ID:10cdBpQx実用性があるかしらんが楽しそう
0056デフォルトの名無しさん
2014/11/20(木) 15:46:34.87ID:4NRJHvjM"x=%02X, y=%02X\n"_format % x % y
と書けたら少し嬉しい
0057デフォルトの名無しさん
2014/11/20(木) 15:48:08.32ID:4NRJHvjMstd::this_thread::sleep_for(5 * 1000ms)
と書けるのがすばらしい
0058デフォルトの名無しさん
2014/11/20(木) 17:49:09.58ID:VEbq8foD胸が熱くなるな
0059デフォルトの名無しさん
2014/11/20(木) 18:15:07.02ID:SrHOb8b0ダメな引数を与えられたときとかに。
0060デフォルトの名無しさん
2014/11/20(木) 18:59:33.77ID:xKb9FhzG0061デフォルトの名無しさん
2014/11/20(木) 21:31:43.81ID:W3wU8KPK0062デフォルトの名無しさん
2014/11/21(金) 20:42:02.83ID:e1i4D7moconstexpr int foo( int x, int y ){
return x * y;
}
template <int N>
struct constant_int {
enum { value = N };
};
int main()
{
//int x = 10; // ダメ
// 適当にどっちか
const int x = 10;
constexpr int y = 20;
std::cout << foo( constant_int<x>::value, constant_int<y>::value ) << std::endl; // 200!!
}
・・・ないな。これは酷い
0063デフォルトの名無しさん
2014/11/22(土) 07:15:18.84ID:OKQ5CsFIdecltype ( (bool const)false )
がbool const型でなくboolになってしまうようなのですが何故でしょうか?
clangです
0064デフォルトの名無しさん
2014/11/22(土) 08:44:23.42ID:nSOp3wBm0065デフォルトの名無しさん
2014/11/22(土) 11:15:48.83ID:vkM9bADjそういうもんだから
3.10 Lvalues and rvalues
p4 Class prvalues can have cv-qualified types; non-class prvalues always have cv-unqualified types. (略)
5.2.9 Static cast
p1 The result of the expression static_cast<T>(v) is the result of converting the expression v to type T. If T
is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if T is an rvalue
reference to object type, the result is an xvalue; otherwise, the result is a prvalue. (略)
0066デフォルトの名無しさん
2014/11/22(土) 11:43:35.39ID:07mFrfCYdecltype()の中が式なので変換されるのか
decltypeに宣言の型と式の型の両方の
機能を持たせるなんて糞文法だな
0067デフォルトの名無しさん
2014/11/22(土) 12:06:41.75ID:18N8Upowdecltype(x) y; // 特定の型として使用
[](auto p){} // ジェネリックラムダです
auto y=x; // xから察して
decltype(auto) y=x; // decltype(x)から推論
auto f() -> int {} // 型の定義は後ろを見て
auto f() -> decltype(auto) {} //returnから推論
0068デフォルトの名無しさん
2014/11/22(土) 14:01:49.41ID:uFJdFI2z4つめだけが用途思いつかないなあ。
0069デフォルトの名無しさん
2014/11/22(土) 19:10:51.70ID:G0qqsEhR4番目の意味を教えて。3番目とは違うの?
0070デフォルトの名無しさん
2014/11/22(土) 19:17:06.08ID:ROyo8ZjH0071デフォルトの名無しさん
2014/11/22(土) 19:41:44.85ID:18N8Upowdecltype(x)は
1.xが識別子っぽい時、その宣言をコピペ
2.識別子でないけどlvalue/rvalueの時はT&/T&&
3.それ以外は式xの型T
↓こんな感じ。
const struct A {
int &&v;
} obj;
auto v2= obj.v; // int
decltype(obj.v) v2; //1に該当。int&&
decltype((obj.v)) v2;//カッコが付いて識別子でないので2に該当。const int &
int &f();
auto v2=f();//int
decltype( f() ); v2=f();//lvalueなので2に該当。int &
decltype( make_str() ) s=...; // prvalueなので3に該当。string
decltype( (const std::string)make_str() ) s=...; // 3に該当。const string
0072デフォルトの名無しさん
2014/11/22(土) 19:42:51.01ID:18N8Upow誤
識別子でないけどlvalue/rvalueの時はT&/T&&
正
識別子でないけどlvalue/xvalueの時はT&/T&&
0073デフォルトの名無しさん
2014/11/22(土) 19:59:50.92ID:18N8Upowvoid f(int && v) {
auto v1 = v; // int
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
decltype(auto) v3 = (v); //式(v)は左辺値なのでint &
}
0074デフォルトの名無しさん
2014/11/22(土) 22:32:21.86ID:DmPVZ8JC0075デフォルトの名無しさん
2014/11/23(日) 00:07:36.68ID:zh3m6fa70076デフォルトの名無しさん
2014/11/23(日) 06:28:56.41ID:uAltGaNhとおもったらvectorは()じゃないと初期化できないな
0077デフォルトの名無しさん
2014/11/23(日) 06:32:20.14ID:gLhfEvRo{}使えるじゃん
0078デフォルトの名無しさん
2014/11/23(日) 06:38:14.38ID:uAltGaNh0079デフォルトの名無しさん
2014/11/23(日) 06:39:50.75ID:fVyePvWVstd::move(v)しなくても左辺値として認識されんの?
0080デフォルトの名無しさん
2014/11/23(日) 06:42:57.74ID:gLhfEvRottp://ideone.com/lbUj0K
使えるけど
0081デフォルトの名無しさん
2014/11/23(日) 07:08:27.11ID:lS9ATFcQ0082デフォルトの名無しさん
2014/11/23(日) 07:10:41.45ID:uAltGaNh0083デフォルトの名無しさん
2014/11/23(日) 07:58:34.18ID:5M0zvydY何が言いたいんだ?
0084デフォルトの名無しさん
2014/11/23(日) 08:05:53.99ID:dIaKKb39stringとかvectorとかを{...}で初期化しようとしたら型変換のコンパイルエラーが出たな
感覚では、{...}だとinitializer_listを引数にしたコンストラクタとして解釈されてるっぽい挙動だった
VS特有の不具合なのか言語で規定された振る舞いなのかは調べてないから知らない
0085デフォルトの名無しさん
2014/11/23(日) 08:07:01.55ID:vlSDqlqi他のコンストラクターを呼び出すのに
{}じゃなく()にしないといけなくなってマヌケになるってことだろ。
0086デフォルトの名無しさん
2014/11/23(日) 08:09:10.84ID:vlSDqlqi初期化についてはVCはバグが結構あるし
MSも認識してたはず。たぶんVC固有
0087デフォルトの名無しさん
2014/11/23(日) 08:09:10.85ID:uAltGaNh0088デフォルトの名無しさん
2014/11/23(日) 08:11:37.59ID:5M0zvydYttp://ideone.com/mI9C26
なんなんだこの流れ
0089デフォルトの名無しさん
2014/11/23(日) 08:17:46.56ID:vlSDqlqiもともと void f(A &&a); のaはでxvalueであって
式「a」はmoveしない限り左辺値として振る舞うぞ。
例:
void g(A &a);
void g(A &&a);
void f(A &&a) {
g(a); // g(A &)を呼び出す
}
0090デフォルトの名無しさん
2014/11/23(日) 08:33:51.05ID:vlSDqlqiarray<int, 3> a = {1,2,3};
この初期化は単なるCの構造体や配列の期化構文だぞ
0091デフォルトの名無しさん
2014/11/23(日) 08:42:30.96ID:87V1WXhZ0092デフォルトの名無しさん
2014/11/23(日) 09:03:38.65ID:vlSDqlqiVisual C++は非静的メンバーの初期化にunkoなバグがあってこれが通らない。
struct x {
std::string s;
x() : s{""} {} // error:C2797
};
http://blogs.msdn.com/b/vcblog/archive/2014/08/19/the-future-of-non-static-data-member-initialization.aspx
では次の2015で直すらしい。
Preview版では直ってないがアルファ版ではようやく直ってた
http://webcompiler.cloudapp.net/
0093デフォルトの名無しさん
2014/11/23(日) 09:25:15.48ID:ov3z4yP9次スレが立つまでには出て欲しい
C++15になってしまう
0094デフォルトの名無しさん
2014/11/23(日) 09:49:38.07ID:fVyePvWVあごめん右辺値と左辺値間違えた
>>73で
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
とあったからvはint &&と認識されるのかなと
0095KUSO KOTE ◆unko./w.Osri
2014/11/23(日) 10:17:38.46ID:tffEMZrqdecltypeはその名の通り式の値に基づくのでなく
expression対象のもともとの宣言を流用するものゆえ。
0096デフォルトの名無しさん
2014/11/23(日) 10:25:22.27ID:fVyePvWVdecltypeの有用性感じた
0097デフォルトの名無しさん
2014/11/23(日) 10:38:38.74ID:t4LQPotvdecltype(f()):一応、関数fの宣言の戻り値の型
decltype((i)):もはや宣言(decl)と関係無い便利テクニック
((i))ってなんだよ。糞すぎる
0098デフォルトの名無しさん
2014/11/23(日) 10:51:28.01ID:uAltGaNh0099デフォルトの名無しさん
2014/11/23(日) 10:59:16.48ID:85Qt5X9k0100デフォルトの名無しさん
2014/11/24(月) 00:31:00.09ID:QorXfa9A引数が2つのとき
0101デフォルトの名無しさん
2014/11/24(月) 06:15:49.50ID:J9vWCCABするのは自由だけどあるとつけなければならない気分になって
負担が増すばかりだな
0102デフォルトの名無しさん
2014/11/24(月) 08:16:33.34ID:0/XZ1dPCint main(int c, char *v[])
{
return safe_main(c, v);
}
int const safe_main(int const, char const *const *const argv) noexcept; // これで安心(^^)
0103デフォルトの名無しさん
2014/11/24(月) 10:16:36.98ID:XbvFM8cR> つけなければならない気分になって
付けとけば安心できるので負担と思ったことないわ
まあ、おっちょこちょいだからそれだけ痛い目にあってるだけだけど w
0104デフォルトの名無しさん
2014/11/24(月) 11:28:14.71ID:fPPxYid8struct A final {
double x, y;
};
class D final : public B {
inline virtual void Test() const noexcept final override;
};
0105デフォルトの名無しさん
2014/11/24(月) 12:06:03.69ID:+w/djoduclass X final
func() const &
func() final
func() override
class X [[deprecated]];
ポインタもconstが後ろだよな
ptr-operator:
*attribute-specifier-seq cv-qualifier-seq
これだとconst X&じゃなくてX const&と書くべき?
0106デフォルトの名無しさん
2014/11/24(月) 12:22:04.44ID:XZf3PEWH0107デフォルトの名無しさん
2014/11/24(月) 16:06:27.96ID:pb79/BSnどう違うの?
0108デフォルトの名無しさん
2014/11/24(月) 16:10:01.64ID:EXpXIrWI0109デフォルトの名無しさん
2014/11/24(月) 16:32:29.34ID:Z8R6fzqgっstd:back_inserter
0110デフォルトの名無しさん
2014/11/29(土) 13:27:56.54ID:Ppi1W3oY規格や論文に目通してるわけ?
0111デフォルトの名無しさん
2014/12/01(月) 00:27:33.95ID:gRrDjFp+const X &x;
X const &x;
0112デフォルトの名無しさん
2014/12/01(月) 00:38:01.68ID:gRrDjFp+const X *x;
X const *x;
++x; // 可能.
// xが指し示す先の値は書き換えられる。ポインタは書き換えられない.
X *const x;
// ++x; // アカンで.
x->value_change_func(); // 書き換える処理。おっけー
// 指し示す先の値は書き換えられないし、ポインタも書き換えられない.
X const *const x;
// ++x; // ダメなのぉっっ・・・.
// x->value_change_func(); // こっちもらめぇぇぇ!!.
0113デフォルトの名無しさん
2014/12/01(月) 07:46:20.98ID:wjupjIrr0114デフォルトの名無しさん
2014/12/01(月) 16:04:09.98ID:3AzrNbDE言語仕様知るのに論文読まんて
どうせ規格化されたものしか共通仕様じゃないし
#pragma once除く
0115デフォルトの名無しさん
2014/12/01(月) 23:59:15.29ID:TejZMH/vint main()
{
DeviceConnect(); // アカンで.
DeviceConnect(); // ダメなのぉっっ・・・.
DeviceConnect(); // こっちもらめぇぇぇ!!.
DeviceConnect(); // もう堪忍して・・
}
0116デフォルトの名無しさん
2014/12/02(火) 18:22:33.87ID:hrM51f0Jで検索すると出てくるやつには
そんなコメントは無かった
0117デフォルトの名無しさん
2014/12/02(火) 19:50:53.67ID:4lPIVtOy0118デフォルトの名無しさん
2014/12/02(火) 21:55:39.93ID:Emi9Jogjサンプルコードに
std::printf("おちんぽじゅぽじゅぽ");
とかよく見かける
0119デフォルトの名無しさん
2014/12/03(水) 07:04:37.92ID:SnuHs4CFttp://homepage2.nifty.com/kujira_niku/okayu/misa.html
>>116
これ元ネタが有ったのか
0120デフォルトの名無しさん
2014/12/03(水) 13:32:05.22ID:mmPYJ3230121デフォルトの名無しさん
2014/12/03(水) 17:35:36.46ID:8JkTKL6jそろそろdeprecatedでしょ
0122デフォルトの名無しさん
2014/12/06(土) 12:27:42.47ID:JxChFgy6template<typename T>
using type = T;
使い方はいろいろ。
auto p = type<char const *>{nullptr};
operator type<char const *>();
typedef type<int(void*)> my_func;
便利じゃね?
0123デフォルトの名無しさん
2014/12/06(土) 13:19:08.05ID:4TWdKRQe昔からあって何度か標準入りの機会がありながらその都度拒否されている可哀想な子
0124デフォルトの名無しさん
2014/12/08(月) 19:34:17.46ID:dG3YdRcjsigned int a = 10;
std::cout << "out a value : " << a << std::endl;
return a;
}();
って、実はC++11では違法だったんだな・・・何も意識せずに使ってたから気付かなかったわ
0125デフォルトの名無しさん
2014/12/08(月) 21:58:03.79ID:QJRTZs6aどのへんが問題なのよ?
0126デフォルトの名無しさん
2014/12/09(火) 11:42:33.43ID:hZR3cOBJ戻り値の型推論は、ラムダの処理内容が
{
return expression;
}
の時にしか働かないはず。C++11では
C++14では全てのreturn文で曖昧さの無い同一の型を戻す場合は推論されるはず
0127デフォルトの名無しさん
2014/12/09(火) 12:50:20.18ID:g1fAS7xT0128デフォルトの名無しさん
2014/12/09(火) 21:00:52.11ID:jBcG0R180129デフォルトの名無しさん
2014/12/10(水) 22:56:47.16ID:nZE7xrpC0130デフォルトの名無しさん
2014/12/11(木) 06:36:43.52ID:dxPi+MRxこの提案通ってほしいな (若干の修正はあるとしても)
式の評価順序をいつまでも未規定のままにしてはいけない
0131デフォルトの名無しさん
2014/12/11(木) 12:10:37.25ID:u+WFZ3/N0132デフォルトの名無しさん
2014/12/11(木) 13:05:12.88ID:3INmN49U特に呼び出し規約がややこしい、かつ、レジスタ数の少ないマシンで
規定するとしても最近のCPUに合わせた規定になるだろうし
0133デフォルトの名無しさん
2014/12/12(金) 20:26:39.09ID:5deZ+VYw最適化は魔法じゃない
(たとえ静的なものでも)無駄な機能の濫用は抑えてコードはシンプルにして、
クリティカルなとこはアセンブリ見てチェックする以外にないのよね
0134デフォルトの名無しさん
2014/12/12(金) 20:27:30.99ID:5deZ+VYw0135デフォルトの名無しさん
2014/12/13(土) 07:20:21.79ID:/fUpqDZF計算してpushして、という流れを阻害するとゴネる奴が出てくる
0136デフォルトの名無しさん
2014/12/13(土) 08:34:29.93ID:NHM062eU他は未規定でいいだろ
0137デフォルトの名無しさん
2014/12/13(土) 09:20:03.10ID:HH3VwBsv構文レベルでさ
func(REEO_LEFT(a++,a,a)); // func(0,1,1);
func(REEO_RIGHT(a++,a,a));// func(0,0,0);
0138デフォルトの名無しさん
2014/12/13(土) 10:02:59.79ID:ysyQzUOY名前はstrict_order_funcでいいだろう。文法はこうだ
inline virtual auto f() const & noexcept strict_order_func [[noreturn]] -> void final override;
属性でもいい。
inline virtual auto f() const & noexcept [[strict_order_func]] -> void final override;
>>137はfuckとの評価順序が指定できないので却下
0139名無しさん@そうだ選挙に行こう
2014/12/13(土) 12:28:19.76ID:UaeG+OzW0140名無しさん@そうだ選挙に行こう
2014/12/13(土) 14:56:17.33ID:i/Znjmf4[[eo_left_to_right]] void f();//この関数内の式は左から右
みたいに明示的に使う文法にしないと荒れる。
0141名無しさん@そうだ選挙に行こう
2014/12/13(土) 15:08:42.62ID:YsPzxHkX> 順序が未規定なのがツマラン罠になってるから
警告出せるようにできないもんだろうか...
0142名無しさん@そうだ選挙に行こう
2014/12/13(土) 15:11:30.40ID:rg/f35yI0143名無しさん@そうだ選挙に行こう
2014/12/13(土) 15:51:02.17ID:c0Duqkeafunc [[eo_left_to_right]] (a++, a, a);;
みたいな
0144名無しさん@そうだ選挙に行こう
2014/12/13(土) 15:55:04.14ID:UaeG+OzWひとつの式の中で同じ変数の変更と参照を行ってると警告、としても
a = a + 1; すら引っかかるだろうからなあ
実用的な警告の規定はそれはそれで難しそう
0145名無しさん@そうだ選挙に行こう
2014/12/13(土) 16:19:57.39ID:UaeG+OzWa = a + 1; //aの値のロード、+1、aのアドレスのロード、ストア(operator =)の順
func (a++, a, a); //aの値のロード、後ろ2つの引数のpush、a++、最初の引数のpushの順
で、ひとつの式で2回左辺値参照を取ると警告
a = a++; //=と++の両方が左辺値参照を要求するので警告
とかだろうか……
二つ目の例は>>143の意図と逆だけど、operator=で左辺は後から評価したいだろうから
0146名無しさん@そうだ選挙に行こう
2014/12/13(土) 17:04:11.57ID:bSC9qJa5一応規格はあるし、単純なケースならチェックはできると思う
https://www.jpcert.or.jp/sc-rules/c-exp30-c.html
0147名無しさん@そうだ選挙に行こう
2014/12/13(土) 17:13:14.33ID:Ib3n5uTGi = i + 1;』
「このルール」とやらを読んでも
そのような結論が導き出せないのだが
0148名無しさん@そうだ選挙に行こう
2014/12/13(土) 17:22:33.54ID:UaeG+OzWCERT(やMISRA他)ルールを守る必要がある気はしないが……
operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう
でも、式だのなんだの適当に書かずに「副作用完了点」は意識するべきだったと反省。そこはありがとう
0149名無しさん@そうだ選挙に行こう
2014/12/13(土) 17:24:35.73ID:eB2azqJA最近規格から消されてるのは何故なんだぜ
0150名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:18:21.96ID:FMvzTkOT> operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう
それ副作用が発生しないから警告しちゃダメ
0151名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:37:44.24ID:UaeG+OzWC++には演算子オーバーロードという機能があってな……
0152名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:51:29.60ID:U8eX8arB0153名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:03:29.25ID:54ajxy39単純なケースならと書いたはずだが?
0154デフォルトの名無しさん
2014/12/14(日) 01:44:04.31ID:3jNKm1INならこの単純なケースはどうなの
f(g1(), g2());
0155名無しさん@そうだ選挙に行こう
2014/12/14(日) 03:26:06.21ID:Twa9q4idそれ意識してたら順番になる
bool func(〜, bool& bValue);
bool bValue =fase;
if(func(〜, bValue) && bValue) ...
は最適化でbValueの変化キャッチできないケースがあった
0156名無しさん@そうだ選挙に行こう
2014/12/14(日) 03:54:35.97ID:ahXhAHEb最近は馬鹿真面目にpushせずに、最初にスタックポインタをずらしておいて後から値をぶち込む最適化も使ってくるので
cdeclだからって必ずしも右から評価されるわけでもない
あとそのbValueの例は単なるバグでしょ
0157名無しさん@そうだ選挙に行こう
2014/12/14(日) 06:41:43.26ID:DVcU1Dgzそれ単純じゃないでしょ
コンパイル時点では、g1( ), g2( ) の中身わからないから原理的に静的チェックできない
0158名無しさん@そうだ選挙に行こう
2014/12/14(日) 10:06:22.09ID:1gbAaHF6お前はアスペか。
チェックできないからと言ってこの程度で警告
出しまくられたら困るだろうというのが
>>148,>>154のレスな訳だが
0159名無しさん@そうだ選挙に行こう
2014/12/14(日) 10:26:30.70ID:niKTVHiJチェックできないから警告出すと言う設計するおバカさん乙
0160名無しさん@そうだ選挙に行こう
2014/12/14(日) 10:51:40.60ID:ahXhAHEbさて、intをラップしてint同様に振る舞うライブラリも多くあるのに、そういうので警告出せないのもな
警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ
妥協点としては、constexpr関数なら副作用無しと推定、そうじゃなければ副作用有りと推定して
推定込みで副作用の順序が未規定に触れるようだと警告する、ぐらいかなあ
それでも要らん警告まみれになりそうだけど
0161名無しさん@そうだ選挙に行こう
2014/12/14(日) 11:18:59.09ID:uiX6InFoC/C++だけ中世の言語仕様というのはいただけない
0162名無しさん@そうだ選挙に行こう
2014/12/14(日) 11:29:17.24ID:niKTVHiJ> 警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ
なんでそんな結論になるんだよ w
0163名無しさん@そうだ選挙に行こう
2014/12/14(日) 16:19:39.08ID:8tq+4KOg0164名無しさん@そうだ選挙に行こう
2014/12/14(日) 17:19:20.11ID:DVcU1Dgzアホは割り込んでくるなよ...
0165名無しさん@そうだ選挙に行こう
2014/12/14(日) 19:53:46.71ID:IDQMN66Tどこかでダンソロードできない?
0166デフォルトの名無しさん
2014/12/14(日) 22:06:12.70ID:PxebKEww0167デフォルトの名無しさん
2014/12/14(日) 22:11:10.92ID:iaqWif0b0168デフォルトの名無しさん
2014/12/15(月) 14:50:37.08ID:nf/x2oQo0169デフォルトの名無しさん
2014/12/15(月) 18:27:03.70ID:OL+lbztuもはやC++14じゃなくなった。C++15
0170デフォルトの名無しさん
2014/12/16(火) 22:12:16.41ID:Xf7YD5Lpでも既に完全実装品が出回ってるC++14
0171デフォルトの名無しさん
2014/12/17(水) 10:40:42.42ID:KoA4/QGg0172デフォルトの名無しさん
2014/12/17(水) 14:02:17.61ID:W7CBukf00173デフォルトの名無しさん
2014/12/17(水) 22:54:44.52ID:hVqOiBaG0174デフォルトの名無しさん
2014/12/18(木) 21:50:07.53ID:s0aNM13b0175デフォルトの名無しさん
2014/12/18(木) 22:10:37.68ID:1U1dQxOa今年じゅうに出るか?
0176デフォルトの名無しさん
2014/12/23(火) 12:01:02.82ID:BQnh9/V+さっさとUTF8とかUTF16とか指定出来るようにしろよ
0177デフォルトの名無しさん
2014/12/23(火) 13:23:17.91ID:ZJtK38Zjユニコードは文字集合であって、localeはまた別の話なんだよなぁ。
「スペイン語ではchを1文字として扱い、ソート順はcの後」が望まれ、英語圏とは両立できない。
まぁ、WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢。
かといって、glibcはエラーにならないだけで、まともに実装されていないが。
0178デフォルトの名無しさん
2014/12/23(火) 13:47:13.09ID:GcvQJyK40179デフォルトの名無しさん
2014/12/23(火) 14:14:38.23ID:WKIgJwyI>WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢
MS「CライブラリじゃなくてWindows本体が
マルチバイトを最大2文字固定で作り込んで
修復不能だったわw すまんww
0180デフォルトの名無しさん
2014/12/23(火) 14:56:52.46ID:ATuB6kuL0181デフォルトの名無しさん
2014/12/23(火) 15:03:48.81ID:egk/n0nz0182デフォルトの名無しさん
2014/12/25(木) 11:26:51.22ID:Y5il8ylRさすがに絵文字にも文字コード振られる時代がくるとは予想出来なかった
0183デフォルトの名無しさん
2014/12/25(木) 11:27:28.16ID:Y5il8ylR>>180
0184デフォルトの名無しさん
2014/12/28(日) 13:53:45.48ID:6AHAC7RL0185デフォルトの名無しさん
2014/12/28(日) 14:21:29.61ID:yfmtRvIy0186デフォルトの名無しさん
2014/12/30(火) 01:06:36.02ID:3lD+Q1+/結局2014年には出ずにC++15か
C++17もC++18に改名した方がいい
0187デフォルトの名無しさん
2014/12/30(火) 05:43:08.42ID:+7B8jKAW0188デフォルトの名無しさん
2014/12/30(火) 05:47:25.52ID:h/Ey9oea0189デフォルトの名無しさん
2014/12/30(火) 06:00:16.82ID:engT/SqQつまり36進数ってこった
0190デフォルトの名無しさん
2014/12/30(火) 06:09:05.64ID:JWtJz6A10191デフォルトの名無しさん
2014/12/30(火) 22:18:02.74ID:M4h+pRm4すっごく不自由なんだけど
0192KUSO KOTE ◆unko./w.Osri
2014/12/30(火) 22:33:19.84ID:TpS86nB6書き忘れたのでは。次の改定では可能になる予定。
というか、そろそろ出るはずなのだけれど。
0193デフォルトの名無しさん
2014/12/30(火) 23:57:42.32ID:1zc8xpv9それはC++1xの次ってだけじゃね。なんでxだったのかは知らない
0194デフォルトの名無しさん
2014/12/31(水) 03:25:07.13ID:50Uir9+t検索もしにくいし、いいとこないじゃん?
0195デフォルトの名無しさん
2014/12/31(水) 03:30:15.82ID:Imw1KDaA普通に11の情報が出てくるけど
0196デフォルトの名無しさん
2014/12/31(水) 03:31:48.23ID:n+VO5zpK0197デフォルトの名無しさん
2014/12/31(水) 04:54:36.46ID:69RlDRjx0198デフォルトの名無しさん
2014/12/31(水) 06:27:41.62ID:pQziN1CJ2012年に出版する文書に2011の名前を使うなってことでしょ。
でも規格の文書番号は「ISO/IEC 14882:2011(E)」で
ISO 9001的には文書が2011/9/1に承認されたことになっているらしい
0199デフォルトの名無しさん
2015/01/04(日) 20:30:12.79ID:8eyhX8Ev0200デフォルトの名無しさん
2015/01/05(月) 05:56:26.02ID:yIG755cC0201デフォルトの名無しさん
2015/01/09(金) 04:16:20.68ID:vwXS0V2o0202デフォルトの名無しさん
2015/01/11(日) 18:39:31.70ID:FnSQDCUV0203KUSO KOTE ◆unko./w.Osri
2015/01/15(木) 13:15:46.99ID:84hdTpR+ちょっと買ってくる。
0204デフォルトの名無しさん
2015/01/15(木) 18:41:24.66ID:cjiwWuZ5普通にC+++でいいと思う。
0205KUSO KOTE ◆unko./w.Osri
2015/01/15(木) 20:06:34.62ID:vTD+rm7S中身は「ISO/IEC 14882:2014」と書いてあったでござる。
ISOが文書の版管理もできないとは。。
0206デフォルトの名無しさん
2015/01/15(木) 22:37:23.13ID:ih50NDRCそれはC#
0207デフォルトの名無しさん
2015/01/16(金) 01:20:10.69ID:4LKVySGb0208デフォルトの名無しさん
2015/01/16(金) 01:40:07.04ID:PwhGSXRH0209デフォルトの名無しさん
2015/01/16(金) 01:46:55.97ID:AShWB8/elambda式の拡張(キャプチャ・ジェネリック)と普通の関数の返却値型導出
加えてもっと踏み込んだプログラマにとっては
constexprの制限緩和と変数テンプレート
かな
0210デフォルトの名無しさん
2015/01/16(金) 02:03:05.04ID:4LKVySGbサンキュ。
変数テンプレートだけ知らないなー。
ちょっとggってくるわ。
0211デフォルトの名無しさん
2015/01/16(金) 10:32:52.46ID:uUQ5rBcg0212デフォルトの名無しさん
2015/01/16(金) 17:13:30.72ID:xOuiDA1SVS2015はSTLのconstexpr化しないんだっけ?
0213デフォルトの名無しさん
2015/01/16(金) 22:06:52.40ID:u6SuX1CK今から出荷される製品にそんな過去の異物はありません
0214デフォルトの名無しさん
2015/01/16(金) 23:09:14.83ID:WOASOGM60215デフォルトの名無しさん
2015/01/16(金) 23:36:00.91ID:ggG599Ak○遺物
0216デフォルトの名無しさん
2015/01/17(土) 09:55:56.25ID:zXscvdzs先日またプレビュー版が出たんだっけ。
インスコしてみるか
0217デフォルトの名無しさん
2015/02/11(水) 22:46:08.24ID:/ZRaoi8o0218デフォルトの名無しさん
2015/02/11(水) 22:53:08.37ID:5YrTgD1ZC++を書く必要のある人間は減るだろうが、
そういった人間の使う環境の足回りはどうしたって C/C++ だぞ
0219デフォルトの名無しさん
2015/02/12(木) 02:11:41.54ID:Cso7caDU流石に>>218は言い訳にしか聞こえん
Rustが成熟するのを待たなくたって、最近のFortranなんか
生ポインタが触れて、ネイティブを吐けて、GC無くて
モジュールがあって、OOPLで、可変長配列あって、並列処理も超充実してるぞ
0220デフォルトの名無しさん
2015/02/12(木) 08:21:16.90ID:hBWmgXOx俺は別に他に良い言語あれば乗り換えるクチだ
Forranは流石に冗談だろうが、
Rustなら処理系自体もRustで書かれているようだし、代替にはなりうるんじゃないか?
ただ、成熟するためには、まずは大手スポンサーが付く、しかも複数付く必要がある
このご時勢だと、マルチプラットフォームに対応し、オープンソースの実装があることも必要だろう
そのレベルまで達している足回り用言語を探すと、なかなかに代替品はみつからない
0221デフォルトの名無しさん
2015/02/12(木) 09:50:30.77ID:Cso7caDUIntelをはじめ複数の大手スポンサーが付いてるし、対応プラットフォームも広くてオープンソースの実装もある
古い言語だからケチはいくらでも付いてるが、悪い点をあげつらう勝負ならC++のほうがずっと酷いしな
Pascalも最近はDelphiはまるでダメだが、代わりにOxygenやNimが台頭してるし上記条件は満たすだろう
規格が無く言語仕様がメーカーごとにまちまちなのでその点はC++やFortranからはだいぶ落ちるが
そこを重視するならRustなんて使えたもんじゃない
RustやD言語をもてはやす連中は何故かこの辺の言語群をスルーするんだよなあ
0222デフォルトの名無しさん
2015/02/12(木) 10:16:36.80ID:OHdOpWYkまあその解決方法が綺麗なやり方とは限らないけど、現実は汚ないものなので新しい言語が頑張って解決してもやっぱりそれほど綺麗にはならないのが世の常というもので。
0223デフォルトの名無しさん
2015/02/12(木) 13:26:42.76ID:vrOhEijb0224デフォルトの名無しさん
2015/02/12(木) 15:40:07.09ID:w7TqvLPeとりあえず各アーキテクチャで動くbusybox程度のシステム実装が実用レベルになってからの話だ。
0225デフォルトの名無しさん
2015/02/12(木) 17:41:21.74ID:OHdOpWYk0226デフォルトの名無しさん
2015/02/12(木) 19:26:06.25ID:fhFtYAtR0227デフォルトの名無しさん
2015/02/12(木) 20:49:10.91ID:/UHnUpd+あんなクソ言語書く研究者とかどうかしてるわ。
0228デフォルトの名無しさん
2015/02/12(木) 20:58:08.38ID:69w0QsPUそれ以降のFortranの新機能なんて全然枯れてない可能性が高い
0229デフォルトの名無しさん
2015/02/12(木) 21:57:25.92ID:kkCjf0Ugあと、Fortranに行主順のオプションがあるのには笑ったわ。C言語、C++に
合わせたのねw そりゃあ、列主順よりも行主順の方が自然だと思うわなw
しかし,C++も終わりだね。C++16なんて勝手にやってろ。糞どもが。
C#を発展させたらええ。C++の問題点を巧みに避けてね。もう禿の時代は終わったんだ。
あきらめろ
0230デフォルトの名無しさん
2015/02/12(木) 22:49:44.88ID:1NeWkOve0231デフォルトの名無しさん
2015/02/13(金) 12:22:49.21ID:+PsHKEaxFortranで書いたカーネルVMとかねえだろ。
0232デフォルトの名無しさん
2015/02/13(金) 12:25:55.80ID:dpVVOxpY0233デフォルトの名無しさん
2015/02/13(金) 13:13:31.16ID:yEU7o13ZHPCでパフォーマンスだすには配列のループアクセスしかない。
C、C++みたいに間接参照に頼りがち、エイリアス問題がでやすい言語はだめなんよ。
オブジェクト志向も論外。
ランダムアクセスでペナルティの少ないメモリシステムが出来ない限り
数値解析でFORTRANの地位は揺るがない。
0234デフォルトの名無しさん
2015/02/13(金) 14:56:38.50ID:O4tzh+w4探せばあるだろ、相当古い物に限られるだろうけど
なんせFortranは唯一の高級言語だった時期が結構長い
0235デフォルトの名無しさん
2015/02/13(金) 15:25:45.23ID:gZGS2CAMいつの話だよ。
最近のスパコンはほとんどFortran、C、C++のコンパイラはフロントエンド以外は共通だし、
その他ミドルウェアだって、例えばOpenMPのコンパイラやライブラリ、C/C++で書かれてるだろ。
0236デフォルトの名無しさん
2015/02/13(金) 15:27:49.52ID:gZGS2CAM0237デフォルトの名無しさん
2015/02/13(金) 15:36:50.43ID:O4tzh+w4そうでもない
コンパイラが最適化のために仮定できることに差があるからな
勿論バックエンドが同じだから同じコードを吐かせることもできるが、拡張キーワード付けまくりーのオプション付けまくりーのになる
0238デフォルトの名無しさん
2015/02/13(金) 15:48:43.47ID:O4tzh+w4並列化もOpenMPの反省を踏まえてco-arrayにシフトしてきてるしな
0239デフォルトの名無しさん
2015/02/13(金) 15:52:19.29ID:kSt7Ebtt貧民数値計算には言語仕様も重要だと思うが。
0240デフォルトの名無しさん
2015/02/13(金) 17:23:50.08ID:gRsKeB2mC/C++の代替を目指すD/Rustの代わりにFortranとか言われても笑うしかない。
0241デフォルトの名無しさん
2015/02/13(金) 17:25:15.80ID:GLFZ3lKoそれない言語はつまんない
0242デフォルトの名無しさん
2015/02/13(金) 17:40:32.87ID:WPBSIOvr>HPCでパフォーマンスだすには配列のループアクセスしかない。
C/C++でHPCやる場合は(素人プログラマ以外は)コンパイラにベクトル化させるんじゃなくて
最適化されたベクトル/行列演算ライブラリを直接使うんだよ
0243デフォルトの名無しさん
2015/02/13(金) 17:46:44.32ID:WPBSIOvrできるが、OpenMPを含め、そういうのはプログラマとしては素人な数学屋さんとか
物理屋さん向けのもの
0244デフォルトの名無しさん
2015/02/13(金) 17:52:50.31ID:qJaCJPEr0245デフォルトの名無しさん
2015/02/13(金) 17:59:40.77ID:yEU7o13Zそれこそ素人じゃん。
0246デフォルトの名無しさん
2015/02/13(金) 18:11:21.96ID:yEU7o13Z言語仕様としてaliasをみとめてて、restrictもないC++がバックエンドが同じであろうが最適化阻害してるの当たり前だろうが。
0247デフォルトの名無しさん
2015/02/13(金) 19:44:33.65ID:nAr45dUn0248デフォルトの名無しさん
2015/02/13(金) 21:28:07.17ID:wdSxf+0q0249デフォルトの名無しさん
2015/02/13(金) 22:07:44.06ID:1kPxT1Pp0250デフォルトの名無しさん
2015/02/13(金) 23:23:44.12ID:yZ9EvJNI0251デフォルトの名無しさん
2015/02/13(金) 23:39:20.41ID:O4tzh+w4Fortranは77のイメージしか持ってない奴多過ぎて、話も最適化の方面にしか行かんな
0252デフォルトの名無しさん
2015/02/14(土) 00:06:03.44ID:4tVx2rNF0253デフォルトの名無しさん
2015/02/14(土) 06:39:08.56ID:Tkxk4fdMBLASとかLAPACKとか良くCのアプリからも使われてるの知らんか?これも計算用だけど
0254デフォルトの名無しさん
2015/02/14(土) 07:07:35.83ID:6cAGLKLO0255デフォルトの名無しさん
2015/02/14(土) 08:52:31.27ID:4tVx2rNF0256デフォルトの名無しさん
2015/02/14(土) 10:23:07.10ID:jdFzeg2B0257デフォルトの名無しさん
2015/02/14(土) 10:33:53.37ID:KJLqYxlYB: ホントかよ。マジなら数値計算以外でマトモなライブラリあるだろ?あんの?
A: 無いよ
B: じゃあやっぱりDSLじゃねーか。C/C++の代わりとしては認められねーな
A: 認められなくても何の問題も無い
0258デフォルトの名無しさん
2015/02/14(土) 10:35:40.49ID:Coc8XA/tお時間を取らせてしまって申し訳有りませんでした。
でもボクにとってはFortranは人生です
0259デフォルトの名無しさん
2015/02/14(土) 11:10:26.04ID:Ffdv9gIpここはC++のスレですのでくだすれFortranのスレに移動をお願いします
0260デフォルトの名無しさん
2015/02/14(土) 18:46:45.09ID:sFHU6bVnでもC++専用スレで他言語が人生とか語られても片腹痛い
0261デフォルトの名無しさん
2015/02/14(土) 19:16:58.38ID:hv/hxM1qあんな予約語時代遅れでしょ
restrict修飾なくても同様の最適化は自動で可能
0262デフォルトの名無しさん
2015/02/14(土) 19:44:53.46ID:X7Vdi7/j0263デフォルトの名無しさん
2015/02/14(土) 19:57:58.87ID:0HcNv3Vt0264デフォルトの名無しさん
2015/02/14(土) 20:00:30.71ID:c5GE7VHu0265デフォルトの名無しさん
2015/02/14(土) 21:00:12.31ID:+Y8SOq6f明らかに不可能なことを
もっともらしい用語を並べて
スレを荒らすな
0266デフォルトの名無しさん
2015/02/14(土) 21:11:08.48ID:vNjYGoXz最近は LTO という仕組みがあるんやで。
リンカが中間構文木をコンパイラに戻してあらためて最適化したりする。
渡されるポインタ (配列) の範囲がかぶるかどうか看破することは可能。
0267デフォルトの名無しさん
2015/02/14(土) 21:13:51.65ID:KJLqYxlY停止判定問題も解けるぞ
新事実だな頑張れ
0268デフォルトの名無しさん
2015/02/15(日) 01:22:06.02ID:UOWPKbNm頭悪
最適化のことを最適解を見つけ出すと勘違いしてる阿呆並。
0269デフォルトの名無しさん
2015/02/15(日) 01:31:58.99ID:pg1XKTVq実際、主要なC++コンパイラに__restrict__拡張があるくらい有効
0270デフォルトの名無しさん
2015/02/15(日) 08:52:17.00ID:PHrUZGDg同時にrestrict修飾を行わなくとも自動で最適化できるコードも存在する。
安易なrestrict修飾はわかりにくいバグを埋め込む原因にもなる場合があるし、
手動でrestrictしなければ最適化できないコードは書くべきではない。
inline修飾並に時代遅れだし、inline修飾以上に害悪。
0271デフォルトの名無しさん
2015/02/15(日) 08:59:29.60ID:PHrUZGDg最適化は常にプログラムの動作を全て最適なものにする処理ではない。
効用の増加に伴い準指数時間超で解析に掛かる時間が増えていくので通常は途中で打ち切る。
restrictに関わらず、最適化の余地を残さず処理を施すのであれば、それはどれも停止判定問題に属する。
0272デフォルトの名無しさん
2015/02/15(日) 09:02:13.84ID:PHrUZGDg__restrict__拡張の目的はコンパイラの判定に関わらずメモリの重複がないとプログラマが強制的に宣言するもの。
その需要はforce inlineの位置に近い。
0273デフォルトの名無しさん
2015/02/15(日) 09:05:05.63ID:PHrUZGDg0274デフォルトの名無しさん
2015/02/15(日) 09:14:35.52ID:vlkDTTJ8デメリット→わかりにくいバグを埋め込む
メリット→都合が悪いので触れず。時代遅れでごまかす
これがrestrict否定派の主張のすべて
0275デフォルトの名無しさん
2015/02/15(日) 09:17:24.08ID:PHrUZGDg0276デフォルトの名無しさん
2015/02/15(日) 09:36:30.07ID:k13A89i2環境依存とはいっても、実在のコンパイラはほぼ間違いなく対応しているから移植性の問題もないし、例え対応していない環境でも遅くなるだけでdefine一つでなかったことにできる。
それが有効な場面でrestrictを知っていて書かないとかないし、ライブラリ側がそうなっていれば使う側は無意識に恩恵にあずかることが可能
0277デフォルトの名無しさん
2015/02/15(日) 09:46:56.34ID:Mzsi91Ysだからさっさと標準化しろって話なんだけど?
0278デフォルトの名無しさん
2015/02/15(日) 12:49:01.38ID:0lwrVYis0279デフォルトの名無しさん
2015/02/15(日) 12:56:05.36ID:k+aSZwci昔入ったものはともかく新しいものを無駄に嫌う。
alignasとか糞キーワード増やしてないで[[restrict]]入れとけっての
0280デフォルトの名無しさん
2015/02/15(日) 17:03:20.38ID:lDLakZlT共有ライブラリもリンク時最適化できるの?
0281デフォルトの名無しさん
2015/02/15(日) 17:12:19.38ID:m7R4D9qI0282デフォルトの名無しさん
2015/02/16(月) 12:58:07.83ID:3pQJG7SSalias出来ないポインタとか新しい概念でコンパイラ側が頑張る仕様にしないと。
0283デフォルトの名無しさん
2015/02/16(月) 14:22:43.29ID:Uy9DHC+Aそれがrestrict修飾されたポインタなのでは?
C++のobjectに対するrestrictの意味を考えるのは、労ある割には益が少ない。
けどないと、Cのライブラリを呼び出す時は不便だよな。
extern "C" の時だけ使えれば十分では?
0284デフォルトの名無しさん
2015/02/16(月) 14:59:40.87ID:3pQJG7SS違う。
restrictはプログラマ側にエイリアスないつもりでいくから、ちゃんとしとけよという
プログラマ側への強制だったりする。
一方、コンパイラとしては、restrictはアグレッシブな最適化をしてもよいという許可であって
最適化しないでするーしてもいい。
0285デフォルトの名無しさん
2015/02/16(月) 15:11:47.88ID:yzFhOePDmemcpyとmemmoveの違いを例で目にするが、restrictされるのはポインタが指す領域なのか?
指す領域のバイト数が第3引数というのはどこから読み取ればいいんだ?
たまたまmemcpyだから第3引数はバイト数だと知っているが、
他の名前の関数で、例えば第3引数の2倍のバイト数が領域の場合はどう表現するんだ?
MicrosoftのSAL拡張ほどの表現力があれば、まだ動作のイメージはできるんだが……
0286デフォルトの名無しさん
2015/02/16(月) 15:43:32.79ID:eXIsD5sfrestrictなんて仕組みが必要なかったんじゃないか?
0287デフォルトの名無しさん
2015/02/16(月) 15:55:45.78ID:iU8n1Okpトラブルの元になって使い物にならない。
どうでもいい細かい仕様を得意げに書いてる馬鹿がいるが、こいつらは
上司からも部下からも馬鹿にされていることに気づいていない
0288デフォルトの名無しさん
2015/02/16(月) 18:44:41.92ID:wAVd4uvSrestrict ポインターの指す領域や
restrictポインターに加減算して得られたアドレスの領域が
他の引数由来の領域とかぶらないってだけじゃないの
明確じゃないか
0289デフォルトの名無しさん
2015/02/16(月) 19:18:57.00ID:yzFhOePDそういう、ふんわりとした意図はわかるんだけど、
char mem[30];
memcpy(mem, mem + 10, 10); // ← OK
memcpy(mem, mem + 10, 20); // ← NG
なわけでしょ? 第3引数で意味が変わるから、専用の型を持てず、コンパイルエラーも出せないんじゃないの?
memcpyの提供側は、restrictの有無に関わらず被らない前提で実装するだろうし、
memcpyを使う側は、restrictがあるからといって使い方のミスをコンパイラに教えてもらえる保証がない。
ドキュメントやコメントに「被らせるなよ」と記す以上の効果を提供できるんだろうか?
0290デフォルトの名無しさん
2015/02/16(月) 19:49:09.76ID:9v9OeP8e(ただし被らせてもエラーになるわけではない)
・被ってないこと前提の最適化をコンパイラが出来るようになる
ということ
0291デフォルトの名無しさん
2015/02/16(月) 20:31:52.18ID:JjLEtIMdただし、プログラマ側にはエイリアスがないことを保障する義務がある。
めんどうくさいだけで効果があるかどうかわからないという。
やっぱ言語仕様としてfortranのようにポインタではない配列がないと。
複素数も言語仕様レベルで欲しい。
0292デフォルトの名無しさん
2015/02/16(月) 20:38:46.89ID:0bcBlPt40293デフォルトの名無しさん
2015/02/16(月) 20:44:32.41ID:T5MheqpDそんな面倒くさく無い上に効果はあるんですけどね
0294デフォルトの名無しさん
2015/02/16(月) 20:53:08.48ID:yzFhOePDもう一度読み直したら、自分が誤解してた。
その処理内で触る、あるrestrictポインタからの連続した領域と、
他のrestrictポインタからの連続した領域に重なりが無い、と解釈すれば、
実際のサイズが明記されていなくても最適化には役立つんだね。
コンパイラがどうやってメモリ領域のサイズをチェックするのかばかり考えてた。 すまぬ。
0295デフォルトの名無しさん
2015/02/16(月) 21:38:08.15ID:JjLEtIMdそもそも、今時fortranとか言い出したアホが悪い。
使われるには理由がある。
C++はC++らしく使おうとしたら間接参照の嵐になるし、
fortranぽく使おうと思ってもエイリアス問題が出る。
HPC用にはfortranでいいわけで、今時とかそういう話をしてもしゃーないと。
そんだけ。
0296デフォルトの名無しさん
2015/02/16(月) 21:54:17.59ID:H27f7K4Z0297デフォルトの名無しさん
2015/02/16(月) 21:57:55.86ID:sA+mR1LpC、そしてC++も配列型はポインタへ自動変換されるだけで別の型なんだけどな。
関数の引数としても渡せるし。ただし問題はそこではない。
ところでFORTRANは配列は値渡しなの?
そうじゃなきゃC++とエイリアスの問題は同じじゃん。
0298デフォルトの名無しさん
2015/02/16(月) 22:20:05.31ID:8eApH2Qw>関数の引数としても渡せるし
ここだけは違う。引数リスト中で配列のように書いてもポインタになる。
0299デフォルトの名無しさん
2015/02/16(月) 22:24:48.99ID:0bcBlPt40300デフォルトの名無しさん
2015/02/16(月) 22:37:31.33ID:L2tliPgOすみません。よーく読んでみると、意味がわかりません。
配列名を定数ポインタとして使えば良いじゃん。
それとも、テンプレート関係で配列の参照が要るのかよ。めんどくさい言語だよ。
もう、C#とか次世代の言語に任せろよ。MFCくらいに面倒なんだよ。
0301デフォルトの名無しさん
2015/02/16(月) 22:40:04.07ID:L2tliPgO禿もいつ死んでもおかしくない歳だし
0302デフォルトの名無しさん
2015/02/16(月) 22:43:23.90ID:l2mG8606なんでこんな所いんの?
0303デフォルトの名無しさん
2015/02/16(月) 22:43:48.20ID:0bcBlPt40304デフォルトの名無しさん
2015/02/16(月) 22:46:52.78ID:sA+mR1Lpまあでもエイリアスには影響しないよね。
配列の参照渡しも、配列またはスカラーへのポインタだった変数が関数内で変更できても変わらない。
0305デフォルトの名無しさん
2015/02/16(月) 22:48:14.13ID:l2mG86060306デフォルトの名無しさん
2015/02/16(月) 22:57:24.19ID:9v9OeP8e一部の分野で今でもFORTRANが使われてる理由はそんなことじゃないと思うがね
そういう分野では歴史的にFORTRANに慣れてる人や既存のコードが多いからというだけだろ
FORTRANだってHPCするときはスピードネックになるところではBLAS/LAPACKを呼び出すわけだろ?
んでBLAS/LAPACKの高速な実装はCやアセンブラで書かれてるわけだ
0307デフォルトの名無しさん
2015/02/16(月) 23:01:55.79ID:l2mG86060308デフォルトの名無しさん
2015/02/16(月) 23:04:53.44ID:8eApH2QwLAPACKはFortran製だって上にあるじゃんよ
0309デフォルトの名無しさん
2015/02/16(月) 23:06:03.73ID:L2tliPgOMathematicaも使いこなせないw
0310デフォルトの名無しさん
2015/02/16(月) 23:06:23.67ID:VIjVttWA0311デフォルトの名無しさん
2015/02/16(月) 23:09:06.67ID:L2tliPgOわかった。わかった。馬鹿は黙ってろ
0312デフォルトの名無しさん
2015/02/16(月) 23:13:22.46ID:9v9OeP8eもとの実装はね
でも高速化された実装、例えばGotoBLASとかはコア部分はアセンブラで最適化されてる
0313デフォルトの名無しさん
2015/02/16(月) 23:27:40.46ID:l2mG8606配列の参照渡せることも、それのメリットも知ってるけどC言語に同等のものがあるなんて知らなかったよ
0314デフォルトの名無しさん
2015/02/16(月) 23:27:55.96ID:9v9OeP8ehttp://eigen.tuxfamily.org/index.php?title=Benchmark
高速化されていないBLASより遥かに速いし、Intelプロセッサ向けに最適化された
商用のMKLやGotoBLAS2に迫るパフォーマンスを出している
これはFORTRANのコンパイラによる最適化の無力さを表していると思う
0315デフォルトの名無しさん
2015/02/16(月) 23:30:59.52ID:0bcBlPt4配列名の識別子は配列の先頭アドレスを表すことを言いたいんじゃないかな。そもそもC++でいう参照が何か全く理解しないで批判しているものと思われる
0316デフォルトの名無しさん
2015/02/16(月) 23:37:30.57ID:JjLEtIMd原理上行列演算に落とせるからといって、
数値計算で行列演算に落としてBLASまかせにするのがいいとは限らない
0317デフォルトの名無しさん
2015/02/16(月) 23:38:07.00ID:s0ySUBJdいやいや、そんな人間がこんな所に来るわけないじゃないか。
0318デフォルトの名無しさん
2015/02/16(月) 23:41:13.75ID:0bcBlPt40319デフォルトの名無しさん
2015/02/17(火) 00:01:08.91ID:R49GSZUFやっぱりさっさと入れろよこれ……
0320デフォルトの名無しさん
2015/02/17(火) 00:09:47.62ID:pCoLYmoPベクトル化やSIMD化してくれんしな。
とはいえ、restrictやコンパイラ独自pragma持ってても、
コンパイラ様のお気に召すソースの書き方しないと並列化してくれないんだよね。
0321デフォルトの名無しさん
2015/02/17(火) 00:41:43.25ID:PFysqCsoEIGEN_RESTRICTの#defineを見てもコンパイルオプションでEIGEN_DONT_USE_RESTRICT_KEYWORD
が定義されない限り__restrict使うようになってるからね
誰かも言ってたけど実質的にメジャーなコンパイラでは__restrictはサポートされてると思って良いということだろ
0322デフォルトの名無しさん
2015/02/17(火) 00:52:11.85ID:T1al5/bYN3988 (2014-05-23): Towards restrict-like aliasing semantics for C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3988.pdf
0323デフォルトの名無しさん
2015/02/17(火) 00:59:35.61ID:5Y72KlE+0324デフォルトの名無しさん
2015/02/17(火) 22:47:56.75ID:17lLv4axなんだ機能かよw 配列の個数のチェックができるのが利点?呪文みたいな
コード書いて職場で得意になってるんだろ? 馬鹿が。
それともテンプレートテクニックで使うというのかい?
まったく、くだらん機能だ。おタクの糞だけ使ってろ
0325デフォルトの名無しさん
2015/02/17(火) 22:49:52.40ID:17lLv4ax0326デフォルトの名無しさん
2015/02/17(火) 22:59:44.50ID:+XI3A1OA本質的には参照と何も変わらない
int a[10];
int (*a)[10] = &a;
(*a)[0] = 0;
0327デフォルトの名無しさん
2015/02/17(火) 23:00:25.01ID:+XI3A1OAint a[10];
int (*pa)[10] = &a;
(*pa)[0] = 0;
0328デフォルトの名無しさん
2015/02/18(水) 00:38:15.47ID:c/tcZvht0329デフォルトの名無しさん
2015/02/18(水) 08:11:21.33ID:04Uy6nsIusing を使えば多少マシになるか?
0330デフォルトの名無しさん
2015/02/19(木) 14:18:34.76ID:Nf1QZOinCと同じの入れてもC++的にはいまいちだから。
0331デフォルトの名無しさん
2015/02/19(木) 19:42:53.69ID:Qw0v9eHuコンテナ操作にrestrictをどう取り込むかとか難しいわな。
最適化の努力目標であって確約じゃないrestrictのために
restrict_vectorとか作ってもなぁ。
0332デフォルトの名無しさん
2015/02/19(木) 19:43:30.70ID:4dC5fmDk0333デフォルトの名無しさん
2015/02/19(木) 20:01:43.05ID:7oFSdK4O色々決めなきゃいけないことがある訳ですよ
0334デフォルトの名無しさん
2015/02/19(木) 20:04:02.20ID:MJrK0vGEそのままC++に導入したら、restrict付きの型でオーバーロードできることになるけど、
void func(restrict void* a, restrict void* b);
この場合aとbは別のメモリ領域とみなしていい。それは構わない
では、この関数内で
auto c = a;
としたら? cv修飾ならcの型はrestrict void*だ。でも実はaのエイリアスだ。
関数内でしか使用しないローカル変数なら問題ないけど、ほかの関数をaとcを引数にして呼び出すと、restrictなオーバーロードが優先して呼び出される。
実際はメモリ領域が重複してるので、これは未定義動作だ。
という訳で単純にcv修飾として導入できない
0335デフォルトの名無しさん
2015/02/19(木) 20:40:58.69ID:TS7jO9IzC++はCよりウンコってことだね
0336デフォルトの名無しさん
2015/02/19(木) 20:43:12.50ID:MJrK0vGE0337デフォルトの名無しさん
2015/02/19(木) 20:55:46.40ID:YKDWyqEzC++だと用途的には std::valarray もあるし、特定のクラスを特別扱いするような方向で取り込んで欲しい気もする。
0338デフォルトの名無しさん
2015/02/19(木) 21:54:56.98ID:bIU6Qc54C++には属性が有るんだから
restrictはattribute指定子 一択だろ
char * declarator-id [[restrict]]
0339デフォルトの名無しさん
2015/02/19(木) 22:01:58.07ID:Qw0v9eHuunique_ptrに食わした生ポを他が握ってててもいいわけで
やったら死にそうだけど。
0340デフォルトの名無しさん
2015/02/19(木) 22:05:37.58ID:OBGtJlArなんで標準規格の話にSTLみたいな
廃れた過去のものが出てくるのですか?
0341デフォルトの名無しさん
2015/02/19(木) 22:16:30.20ID:MJrK0vGE0342デフォルトの名無しさん
2015/02/19(木) 22:29:06.06ID:7oFSdK4Oに書いてるけど最近はalias_set()っていうattributeにする提案が挙がってる。
流し読みしてみたけどタグとかよくわからんかった
0343デフォルトの名無しさん
2015/02/19(木) 22:54:04.76ID:Qw0v9eHuええええええ
廃れてるのかよ。
moveとかunordered_mapとかc++11で入ってきたのに?!
0344デフォルトの名無しさん
2015/02/19(木) 23:34:23.07ID:3CBExIvY荒らすなボケ
お前みたいな低脳発言する奴がいるから
STLの定義のコンセンサスがどうとか言いだす奴が出てくる
0345デフォルトの名無しさん
2015/02/20(金) 12:03:03.78ID:b77POhTvA Concept Design for the STL
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3351.pdf
0346デフォルトの名無しさん
2015/02/20(金) 15:25:12.54ID:8Is4JBs/URL貼るだけの低脳はどうしようもないな
0347デフォルトの名無しさん
2015/02/20(金) 22:20:22.64ID:zOUglcHa・STLは標準化前の遺物派
(ステパノフのアレ、もしくはSGIのアレ)
・コンテナ、イテレーター、アルゴ、ファンクタ
のみSTL派(string含まず)
・stringもSTL派(iostream含まず)
・テンプレートは全てSTL派
・C++の標準ライブラリは全てSTL派
・なんとなくライブラリは全てSTL派
STLという用語の根拠があるのは最初のみで
他はコンセンサスの得られない脳内定義
530 デフォルトの名無しさん sage 2014/01/16(木) 07:56:19.19
話が理解できていない>>529が哀れ
「化石のSTLは標準ライブラリのコンテナの基礎となった」
が正しい。
標準ライブラリには「ここはSTL」という説明はなく
また化石STLと標準ライブラリの類似部分とは完全に一致でもない
980 デフォルトの名無しさん sage 2014/12/17(水) 22:32:52.23 ID:LL4LS8IO
最近のboostが標準ライブラリに取り込まれている流れと同じなのかな。
STLと呼ばれていたものが、過去に取り込まれたと。
std::threadをboostと呼ぶのか、みたいな議論に聞こえる。
987 デフォルトの名無しさん sage 2014/12/18(木) 07:07:48.12 ID:ZC5ElBjJ
話し手双方の認識がずれているのに
不思議と会話できてしまった気分にさせてしまう魔法の言葉STL。
意味もなく文頭に付けておくのがトレンド👀
0348デフォルトの名無しさん
2015/02/21(土) 06:20:28.27ID:FlDtTMp/0349デフォルトの名無しさん
2015/02/21(土) 06:50:30.28ID:E5FitgPs日本語で書かれたら何らかの特別なものって扱いも出来るだろうが、原文だと混乱するのは当たり前
0350デフォルトの名無しさん
2015/02/21(土) 07:20:13.17ID:5TYZO6lJSTLだと考えてる人も多いようだが
0351デフォルトの名無しさん
2015/02/21(土) 07:38:41.63ID:naHue2Usこれは確かにそうだけど
STL版のiostreamも存在するよね
すごく紛らわしい
0352デフォルトの名無しさん
2015/02/21(土) 08:00:30.33ID:78/Ireu0正直どっちでもいいし、個人的には標準ライブラリとか標準コンテナと呼ぶけど、拘る人の執着っぷりは尋常じゃないのを感じるよね。
広島風お好み焼きを広島焼きいうなっていう広島人と、大阪風お好み焼きのみが唯一無二のお好み焼きだっていう大阪人みたいな。
0353デフォルトの名無しさん
2015/02/21(土) 10:23:37.87ID:hSp51/ZE0354デフォルトの名無しさん
2015/02/21(土) 10:44:41.39ID:b3TAXLfHもちろんテンプレートが無ければSTLは書けないとは思うけど、
STLができるまでテンプレートの存在意義が無かったような?
string も iostream も大昔は非テンプレートだったはずだし
0355デフォルトの名無しさん
2015/02/21(土) 10:50:26.23ID:U+VRYI5S0356デフォルトの名無しさん
2015/02/21(土) 10:50:33.86ID:4hTepQjD国際規格ってのはそういう異論だらけの主張の間に一応形成された合意だよ
むしろ技術者が不正確な用語であるSTLを使う方が不思議
>>354
テンプレートが先でしょ
stringがテンプレートじゃなかったってホント?
0357デフォルトの名無しさん
2015/02/21(土) 10:56:46.75ID:4hTepQjDこういうレスを見ると
コピペもあながち間違いじゃないとは思うわ
『話し手双方の認識がずれているのに
不思議と会話できてしまった気分にさせてしまう魔法の言葉STL』
0358デフォルトの名無しさん
2015/02/21(土) 12:10:24.03ID:5NiNn0Ae用語(term)かどうか見分けられない奴は
プログラミングをやめた方がいい
あとURL貼るだけの低脳も
0359デフォルトの名無しさん
2015/02/21(土) 12:31:39.53ID:d5O+uncj0360デフォルトの名無しさん
2015/02/21(土) 12:34:39.18ID:Qj5PkULS0361デフォルトの名無しさん
2015/02/21(土) 14:49:14.01ID:78/Ireu0標準化WGですらSTLって言葉使ってるのにここでSTLって言葉出しただけでそんな言葉はC++にないって噛みつくやつもどうかと思うけど
”こいつはC++の規格で定められた用語だと思ってSTLって言葉を使ってる”というのを見分けれる力を持ってんの?
0362デフォルトの名無しさん
2015/02/21(土) 15:10:08.37ID:qawIJ4u+0363デフォルトの名無しさん
2015/02/21(土) 15:23:20.38ID:s76k4WVRどうしても必要なら明確に定義して
0364デフォルトの名無しさん
2015/02/21(土) 16:07:45.35ID:FlDtTMp/昔あった"STL"に含まれていたコンテナ・イテレータ・アルゴリズム・ファンクタ
の4つに該当するものを今でもSTLと呼ぶ人が多い
std::stringは含まれない
ただ初心者は、テンプレートは全部STLとかライブラリは全てSTL
と思っている
定義は無い
0365デフォルトの名無しさん
2015/02/21(土) 16:43:47.66ID:78/Ireu0大抵は文脈でアレの事言ってんだろうなって解るだろ
0366デフォルトの名無しさん
2015/02/21(土) 17:22:04.77ID:zlhhs5UVごちゃごちゃ言うやつがいるんだよな
AA板でアスキーアートなんて用語使うなって言ってたキチガイと同じだわ
0367デフォルトの名無しさん
2015/02/21(土) 17:37:21.05ID:oGsLucOX事実すら認めなれない低脳はどうしようもないなヤレヤレ
0368デフォルトの名無しさん
2015/02/21(土) 17:39:59.17ID:Qj5PkULS0369デフォルトの名無しさん
2015/02/21(土) 18:01:31.11ID:78/Ireu0だからお前の中のSTLの定義とか認識とかどうでもいいんだよ
0370デフォルトの名無しさん
2015/02/21(土) 18:10:49.86ID:FlDtTMp/STLを化石と連呼する奴もキチガイ
認識の違いを見ても都合の悪いことはスルーして"わかるだろ"を連呼する奴もキチガイ
0371デフォルトの名無しさん
2015/02/21(土) 18:23:51.19ID:78/Ireu0都合の悪いってどれだよ。
お前の中では一度が連呼になんの?
日本語通じない人と同じ認識持てるとは思えないわ。
0372デフォルトの名無しさん
2015/02/21(土) 18:40:08.39ID:NoRQyCne0373デフォルトの名無しさん
2015/02/21(土) 20:15:34.02ID:vFgxohPdそういう人が、ここにいるんでしょう。
0374デフォルトの名無しさん
2015/02/22(日) 00:45:01.58ID:sAwrKU4yそれでいい。どうでもいいことだろが。
それをゴチャゴチャぬかしやがって、お前らは額に「馬鹿」の字をかいたパリサイ人か!
イスラム国で首切られて来い
0375デフォルトの名無しさん
2015/02/22(日) 05:16:49.04ID:x6orKTOmオペレーティングシステムをOSと呼んでいいかみたいなもので
公式の文書では避けなければならない言葉。
どうでもいいかと言ったらどうでも良くはない
0376デフォルトの名無しさん
2015/02/22(日) 05:44:22.81ID:sOGNk0U/何の話?
Bjarne StroustrupがC++WGの論文でSTLって言葉を使ったことの批判?
0377デフォルトの名無しさん
2015/02/22(日) 06:25:19.07ID:Il9QBtRYいつまで続くんだ
0378デフォルトの名無しさん
2015/02/22(日) 10:05:00.26ID:tyley4te0379デフォルトの名無しさん
2015/02/22(日) 11:13:46.42ID:0JOE1lwgそこのホッチキスとマジック取って
0380デフォルトの名無しさん
2015/02/22(日) 12:15:10.87ID:rIRRZTlZ0381デフォルトの名無しさん
2015/02/22(日) 12:19:52.26ID:0JOE1lwg実のある議論ができない奴ほど形式論を語るしかないのさ。
0382デフォルトの名無しさん
2015/02/22(日) 12:23:34.85ID:VRC+VXQD0383デフォルトの名無しさん
2015/02/22(日) 12:37:52.29ID:TRUNFqhM0384デフォルトの名無しさん
2015/02/22(日) 12:50:30.37ID:I1ETafX4STLは>>352のように範囲の認識が違う人がいるから粘着が湧く
0385デフォルトの名無しさん
2015/02/22(日) 13:47:16.48ID:sOGNk0U/粘着するやつは範囲の問題じゃなく現代のC++にSTLなんて存在しないって主張だから
0386デフォルトの名無しさん
2015/02/22(日) 14:26:18.14ID:mDB3/i8fhttps://www.sgi.com/tech/stl/
ISO/IEC 14882:2014にSTLなんてものが出てこないのは事実ですよ。
事実を認識したり論理的な思考をする能力の低い人は
プログラミングに携わるべきではないですね。
0387デフォルトの名無しさん
2015/02/22(日) 14:32:04.10ID:DVQv7PP40388デフォルトの名無しさん
2015/02/22(日) 14:32:28.03ID:33oFsXprマ、マジックテープは、宇宙でも使えるから
0389デフォルトの名無しさん
2015/02/22(日) 14:37:59.90ID:J+2bP69Kauto f(param_types &&... params) {
return 0 + ... + std::forward<param_types>(params);
}
C++11/14のパック展開が使い物にならない糞なのでようやくマトモになった感じ?
0390デフォルトの名無しさん
2015/02/22(日) 15:16:06.21ID:oKNrTzen0391デフォルトの名無しさん
2015/02/22(日) 15:23:15.40ID:+WCHq4X5... が万能すぎて怖いくらい。 この手の書き方って他の言語で先行例ってあるの?
C++ に似つかわしくないほどやわめな構文で驚いた。
0392デフォルトの名無しさん
2015/02/22(日) 15:54:03.58ID:DVQv7PP4これわざわざコピーしてないか?
0393デフォルトの名無しさん
2015/02/22(日) 16:06:56.71ID:iZtaTVrr0394デフォルトの名無しさん
2015/02/22(日) 16:21:44.43ID:DVQv7PP40395デフォルトの名無しさん
2015/02/22(日) 16:55:44.35ID:uY8y3iUC演算子のルールに従うじゃだめだったのか?
0396デフォルトの名無しさん
2015/02/22(日) 23:10:10.24ID:pTum2WVaCの可変個引数がある
C++ほど色んな所で使えるわけではないけど
あとPerlぐらいの変態言語ならこういうのありそう
0397デフォルトの名無しさん
2015/02/22(日) 23:36:44.34ID:3PxrY4i8絶対後で文法上の問題出るぞ
0398デフォルトの名無しさん
2015/02/23(月) 13:10:36.58ID:9GBuLC9G0399デフォルトの名無しさん
2015/02/23(月) 21:35:46.74ID:AjwZ0bQG_Bool, _Alignas, _Generic, _Static_assert, _Atomic, _Thread_local
0400デフォルトの名無しさん
2015/02/23(月) 21:36:17.11ID:+BeEL7x50401デフォルトの名無しさん
2015/02/23(月) 21:53:31.94ID:zZTzM7Nf0402デフォルトの名無しさん
2015/02/23(月) 22:46:22.93ID:cTqeesdS#include<stdname.h> みたいな宣言で識別子 bool generic等を予約語に昇格そのまま使える状態にして
#include<stdname.h> が無いときは非予約語で相当する予約語は StdC99_Bool StdC11_Generic な用法になる感じで
影響する範囲をinclude入れ子の一段目に限定
例えば"my.h"に #include<stdname.h>があっても"my.h"を includeしたファイルでは StdC99_Boolと書く必要がある
0403デフォルトの名無しさん
2015/02/23(月) 22:55:42.10ID:xos6Ur9w0404デフォルトの名無しさん
2015/02/23(月) 22:59:30.65ID:cTqeesdS0405デフォルトの名無しさん
2015/02/23(月) 23:18:19.23ID:5h1ypUSf自分のソースコードに読み込む分には
勝手にしたらええんやで
0406デフォルトの名無しさん
2015/02/23(月) 23:34:11.39ID:cTqeesdS0407デフォルトの名無しさん
2015/02/23(月) 23:45:54.08ID:5823dt6R0408デフォルトの名無しさん
2015/02/24(火) 21:40:37.78ID:pJ3tHQCB0409デフォルトの名無しさん
2015/02/25(水) 00:14:11.12ID:xC+4K0Zlお前らって女とデートしたことあるの?
お前らって女と手をつないだことあるの?
お前らって女と抱き合ったことあるの?
お前らって女とチスしたことあるの?
お前らって女の父吸ったことあるの?
お前らって女にク○ニしたことあるの?
お前らって女にフラチオされたことあるの?
お前らってDTなの?
お前らってなんで大人の女性とふつうの恋愛できないの?
というか美人で処女で性格もよくお前らにも優しい天使のような女性が現れたとしてどうすんの?
とりあえず声掛けるなりしてメアドでも聞くの?
だって、そんな超優良物件なんだから過去にお前らよりイケメンや金持ちや女性にやさしい男だっ
て言い寄ってただろうに、なお処女なんだよ。
そんな鉄壁防御の女落とせんの?処女マンゲットできんの?
それとも、まさか…まさかとは思うけど、自分は何もせず、相手が勝手にホレてくれて告白でもし
てきてくれるのをじっと待つの?
そんなんあり得なくね?エ口ゲじゃないんだから。自分から動くしかないよ?
0410デフォルトの名無しさん
2015/02/25(水) 08:46:54.97ID:nKN7f0Au0411デフォルトの名無しさん
2015/02/26(木) 20:57:39.53ID:jVM3Cxbiそこが狙いだったのか
0412デフォルトの名無しさん
2015/02/27(金) 21:45:21.33ID:jWIxKLNsムンムキ、ムンムン、ムキムキ、満万戸♪
あーあ,
0413デフォルトの名無しさん
2015/02/27(金) 22:17:54.47ID:Ip5cIlNH0414デフォルトの名無しさん
2015/02/28(土) 15:03:19.62ID:aEcZnvpG0415デフォルトの名無しさん
2015/03/02(月) 23:11:20.10ID:AjrAxNssそれでは皆さんさようなら。
0417デフォルトの名無しさん
2015/03/03(火) 21:57:50.02ID:PB4JLOySとかいうマクロが標準ライブラリにあるんですがそれは
0418デフォルトの名無しさん
2015/03/03(火) 22:34:58.05ID:Bw5+Afu6405は逆だったり間違えたんだろうなってのは見たら解るからわざわざ突っ込むまでもないけど
0419デフォルトの名無しさん
2015/03/04(水) 13:34:51.92ID:p/ReeUopそれはベンダーが提供しているものだから問題ない。
そういう用途のために、アンダースコアから始まり大文字が続くシンボルと、アンダースコアが二つ以上続くシンボルは、処理系のために予約されている。
0420デフォルトの名無しさん
2015/03/04(水) 14:46:58.37ID:5bBOwxE3そういう話じゃねーよ。
そもそも >>417 のようなコードをユーザーが書いても問題ない
処理系が予約してるような名前付けてないんだから。#defineの仕様ぐらい知ってるだろ?
まぁcomplexはぶつかるけど
0421デフォルトの名無しさん
2015/03/04(水) 14:53:24.33ID:4pfVor2U0422デフォルトの名無しさん
2015/03/04(水) 23:52:43.51ID:GFJSAFgJ0423デフォルトの名無しさん
2015/03/07(土) 16:24:41.73ID:xoLws0MDそのコンテキストにおいて予約されている名前を定義あるいは宣言したら動作は未定義。
>>405は問題なし。
0424デフォルトの名無しさん
2015/03/07(土) 16:47:24.15ID:djYSXMQa#defineの使い方ぐらい調べてから知ったかぶろうね。
0425KUSO KOTE ◆unko./w.Osri
2015/03/08(日) 08:00:02.25ID:q4fLP6rFで予約されているけれどそれは翻訳フェーズ7以降であって、
プリプロセスはフェーズ4で終わっているから良いような気もする。
C++でも同様。
2.12 Keywords
The identifiers shown in Table 4 are reserved for use as keywords(that is, they are unconditionally treated as keywords in phase 7)
0426KUSO KOTE ◆unko./w.Osri
2015/03/08(日) 08:33:51.01ID:q4fLP6rFISO/IEC 14882 17.6.4.3.2だと「__」は常に予約だけど、
「_」で始まる名前はグローバル名前空間
(=プリプロセス後)で予約なのでセーフ。
ISO/IEC 9899 7.1.3だと(翻訳フェーズ問わず)
file scopeで予約となっているけど、
file scopeの概念は6.2.1でプリプロセス後と読めるからセーフ?
0427デフォルトの名無しさん
2015/03/08(日) 08:41:18.85ID:AA0BAvq60428デフォルトの名無しさん
2015/03/08(日) 09:25:35.66ID:a1iMakmn0429デフォルトの名無しさん
2015/03/08(日) 09:47:47.85ID:MjKQfbtK新しいのが手元にないので古い規格(1998)だけど、標準ライブラリのインクルードファイルで
で予約されている名前をマクロ定義に使うのはNG。CもC++もライブラリの章に書いてある。
reserved namesとmacro names。
C++だとstdに付け加えるなとかいてあるなあ。これは新しいやつだと変わったんだっけ?
標準ライブラリのインクルードファイルって翻訳フェーズを通さなきゃいけないって
決まってたっけ? NDEBUG定義以外で。
0430デフォルトの名無しさん
2015/03/08(日) 12:04:59.60ID:TmgpNONEstdへの追加禁止は消えてないはず
0431デフォルトの名無しさん
2015/03/09(月) 23:23:29.08ID:DVZhIFmH0432デフォルトの名無しさん
2015/03/10(火) 03:44:34.60ID:O3tT2l2+http://next 2ch.net/tech/1425296203
↑
ツメル
0433デフォルトの名無しさん
2015/04/17(金) 23:39:08.70ID:KeRAGdVvstd::timed_mutex::try_lock_for()はある
何故std::try_lock_for()がないのか?
0434デフォルトの名無しさん
2015/04/17(金) 23:47:43.04ID:pPdceNUI0435デフォルトの名無しさん
2015/04/23(木) 11:35:05.73ID:VMIg3Gos0436デフォルトの名無しさん
2015/05/16(土) 02:14:55.14ID:5vlSH4lzregexでUTF-8を扱える日は来るんだろうか
0437デフォルトの名無しさん
2015/05/16(土) 11:43:54.84ID:Q6oFxN8a0438デフォルトの名無しさん
2015/05/17(日) 12:28:01.90ID:B4HbLI1y0439デフォルトの名無しさん
2015/05/17(日) 21:00:07.19ID:MdVbR0ci0440デフォルトの名無しさん
2015/05/17(日) 21:10:50.48ID:3p4iQKQh0441デフォルトの名無しさん
2015/05/17(日) 21:12:52.92ID:ZJ6cYS77既存の環境との互換がないだけで
0442デフォルトの名無しさん
2015/05/17(日) 23:06:27.88ID:D+ZZ1tPaソースは?
0443デフォルトの名無しさん
2015/05/18(月) 00:17:39.67ID:owFvwpuoビジネスだからね
0444デフォルトの名無しさん
2015/05/18(月) 00:19:44.88ID:GTaXuX3q0445デフォルトの名無しさん
2015/05/18(月) 00:21:05.89ID:/MqUjnzg0446デフォルトの名無しさん
2015/05/18(月) 01:14:56.23ID:QSgWNScG0447デフォルトの名無しさん
2015/05/18(月) 01:28:51.99ID:Cbg5+jca停滞というのか推進役がいないというのか
0448デフォルトの名無しさん
2015/05/18(月) 02:20:15.62ID:K5O9DUWcIEC 80000-13:2008 にあるそうですが、有料みたいですね。
0449デフォルトの名無しさん
2015/05/18(月) 08:54:57.01ID:57s0R/T6そうだよなぁ
昔、1バイトはそのCPUの基本処理単位で
8bit以外にも、32、11、7などがある、、、
なんて習ったのは遠い昔話か
初めて読んだ高級言語の教科書には
文字型は1文字で32bit消費するから、もったいないと思ったらPacked付けて
めもりに詰め込んで使ってねとかも書いてあったな
0450デフォルトの名無しさん
2015/05/18(月) 09:10:55.77ID:708meOe91バイトの前には、1ワードというのがあって、
1短ワードは21ビットで、長ワードは41ビット
なんていうこともあった。
日立のパラメトロン電子計算機HIPAC-101は
こういうようになっていたと思う。
ドラム式記憶装置で短ワードで8kワード、
長ワードで4kワードの記憶容量だった。
0451デフォルトの名無しさん
2015/05/18(月) 11:38:20.70ID:IhfoHK+fC言語の規定を満たさない7はねーだろ
0452デフォルトの名無しさん
2015/05/19(火) 05:30:22.52ID:Ri/mEtfGhttp://www.kmonos.net/alang/d/ctod.html#forwardfunc
0453デフォルトの名無しさん
2015/05/19(火) 08:02:20.21ID:Nw+B6083クラスメンバならできてるのにね
0454デフォルトの名無しさん
2015/05/20(水) 23:47:34.73ID:xjUyMT9vこれって、サイズ不明の巨大バイナリファイルをちまちま読み込むのに便利じゃない?
と思ってループの中で使ってみたら、上手く動かなかった。なぜじゃ?
根本的に使い方を間違ってるのかなぁ?
ループの2回目から1つ目のデータが残ってしまう???
std::ifstream ifs("src/main.cpp");
ifs.unsetf(std::ios::skipws);
std::istream_iterator<char> is(ifs);
const int bufsize=16;
std::string str;
while(ifs) {
str.assign("");
str.reserve(bufsize);
std::copy_n(is, bufsize, back_inserter(str));
std::cout << str << std::endl;
}
0455デフォルトの名無しさん
2015/05/21(木) 00:54:30.76ID:v1+yhA+histreambuf_iterator 使わないとダメなんじゃないの? skipws したら大丈夫なもん?
バイナリ読むなら ios::binary 指定するとか?
copy_n だとファイルサイズがわからないのに必ず指定バイト読みにいっちゃうからやっぱり
根本的にダメかな。
0456デフォルトの名無しさん
2015/05/22(金) 22:43:48.17ID:7DrLyQsZさんきゅ
istreambuf_iterator試してみたけど結果は一緒だった。
バッファの一文字目だけ更新されない
しかもループの二回目から
ってどんだけ器用なんだよ
0457デフォルトの名無しさん
2015/05/22(金) 23:54:21.39ID:3ZbTlDNN値を昇順に保存したい場合、
listだとlower_boundで探してinsertすればいいのだが、
forward_listだとinsert_afterしかないから
lower_boundで発見するiteratorの一つ前のiteratorをとる術がないと…
lower_boundに渡すcompに値ではなくiteratorを渡してくれるならまだなんとかなるが。
自力でlower_bound風のものを実装するのもアホくさいし、結局listを使ってしまう。
0458デフォルトの名無しさん
2015/05/23(土) 20:04:09.70ID:rysQ25130459デフォルトの名無しさん
2015/05/24(日) 14:09:01.84ID:LsP7CBZqRandomAccess以外じゃ遅くて話にならん気が
advanceとdistance特殊化したForwardとか? そんなの無視でええやろ
0460デフォルトの名無しさん
2015/05/24(日) 22:21:42.47ID:kX3rbHqnO(N)だからかろうじて許容
だがリンクリスト構造のデータでバイナリサーチという発想がクレイジー
標準化委員会のオツムがその程度だったんでは
0461デフォルトの名無しさん
2015/05/26(火) 13:20:27.85ID:T4vhUJyc入力イテレータコピーしてインクリメントしたらコピー元のやつはもう使えない
0462デフォルトの名無しさん
2015/05/26(火) 23:34:35.87ID:mR6iTcwDバイナリサーチをするためにはソートされてないといけない。
listではlower_bound等中のadvanceにO(N)かかるとしても、insertがO(1)。
一方、vector, dequeではadvanceにO(1)だけど、insertにO(N)かかる。
サーチのときにコストがかかるか、挿入の時にコストがかかるかの差でしかない。
0463デフォルトの名無しさん
2015/05/27(水) 00:42:21.48ID:ZXJ9GTEN0464デフォルトの名無しさん
2015/05/27(水) 08:53:06.53ID:49WOtAb2さんきゅ、そこには考えがいたってなかった。
書き込み後、copy_n()した後でis++するとうまく動くことに気づいたのですが
copy_n()の仕様で入力側のイテレーターが
インクリメントされるとも保存されるとも言及されてい無いので
Isを再利用すべきでは無いですね
0465デフォルトの名無しさん
2015/05/29(金) 17:53:57.11ID:zv3K9PIp14でも採用されて無いの?
0466デフォルトの名無しさん
2015/05/29(金) 17:59:38.06ID:R5dmPrAY0467デフォルトの名無しさん
2015/05/29(金) 23:45:32.51ID:Gf25n3G0pushとソートを自動でやるだけのvectorにつけた衣じゃん
0468デフォルトの名無しさん
2015/05/30(土) 10:57:10.52ID:qPmgq1NQ0469デフォルトの名無しさん
2015/05/30(土) 12:18:02.36ID:DRtbRWlm一般的にはキューはコンテナで
ISO/IEC 14882:2014もそうなってますよ
0470デフォルトの名無しさん
2015/05/30(土) 15:35:34.13ID:kxccA5tTbegin()end()clear()が無いのは何故ですか?
0471デフォルトの名無しさん
2015/05/30(土) 15:40:24.27ID:UawMEkCG0472デフォルトの名無しさん
2015/05/30(土) 18:06:53.60ID:rz8vUkGO0473デフォルトの名無しさん
2015/05/30(土) 18:15:30.40ID:kxccA5tTキューなら各要素にアクセスしてはいけない、という決まりでもあるんですか?
0474デフォルトの名無しさん
2015/05/30(土) 18:26:08.47ID:qC/pm06Q0475デフォルトの名無しさん
2015/05/30(土) 19:45:16.77ID:CEOL5S8Xstd::queueはイテレーション、途中の要素へのアクセス、clearを禁止してるキューってだけだろ
それで都合が悪いならstd::dequeを直接使えばいいだけの話で
0476デフォルトの名無しさん
2015/05/30(土) 20:01:37.06ID:kxccA5tT0477デフォルトの名無しさん
2015/05/30(土) 23:03:11.77ID:pCUd1Sfk意味不明です
0478デフォルトの名無しさん
2015/05/31(日) 06:34:16.62ID:MBoVzqPEstackとqueueはcontainer adaptorで、他のコンテナのラッパーとして
stackとqueueとして最低限必要な一部メソッド以外を隠すこと自体が目的なんだから
0479デフォルトの名無しさん
2015/05/31(日) 07:15:02.92ID:KGZfLlUn確かそうだよね。
コンテナアダプターとして他のコンテナ(デフォルトでdequeue)にqueueの殻をかぶせるものだと思う
リングバッファのコンテナ作って queueの殻をかぶせる人とか出てきそう
組込みとかだと
0480デフォルトの名無しさん
2015/05/31(日) 07:29:21.31ID:991Qs8BYそれをstd::queueというのでは
0481デフォルトの名無しさん
2015/05/31(日) 08:51:08.10ID:zG1uK5fDhttp://ideone.com/0XGq6C
0482デフォルトの名無しさん
2015/05/31(日) 09:51:58.22ID:KGZfLlUnstd::queueはインターフェースの規定で
リングバッファは実装形態のひとつだと思うよ
少なくともstd::queueのデフォルトはstd::dequeueなので
リングバッファとして実装されてるわけじゃない
0483デフォルトの名無しさん
2015/05/31(日) 14:14:03.84ID:b0F1vqJ9dequeが必ずリングバッファなわけじゃないな
0484デフォルトの名無しさん
2015/05/31(日) 14:49:33.66ID:/H4GzWhn要件満たせないだろ
0485デフォルトの名無しさん
2015/05/31(日) 14:53:46.07ID:vc6Fo5Bihttp://togetter.com/li/36422
__ring_buffer<T*> を使う実装ならあり得るようだ。
0486デフォルトの名無しさん
2015/05/31(日) 14:57:02.09ID:cT9cJREJ0487デフォルトの名無しさん
2015/05/31(日) 15:10:59.51ID:/H4GzWhnなるほどT*のリングバッファか
0488デフォルトの名無しさん
2015/05/31(日) 15:57:00.48ID:XpV9WTjI定数時間で拡張できるリングバッファとか実装できない限り。
0489デフォルトの名無しさん
2015/05/31(日) 16:25:57.32ID:vc6Fo5Biランダムアクセスの要件もあるんだから償却でもない定数時間で
バッファ拡張は無理でしょ?
なお、 C++ 規格で言うところのコンテナの計算量要件は
要素型操作の回数に対するものとされているるので、
T* のリングバッファを拡張する際のコピーの時間は無視して
考えることになる。
23.2.1 [container.requirements.general] p2
> All of the complexity requirements in this Clause are
> stated solely in terms of the number of operations on
> the contained objects.
これによれば vector<T*> を使う実装も可能になる。
0490デフォルトの名無しさん
2015/05/31(日) 20:13:23.31ID:XpV9WTjI確かにただの vector<T*> でも問題なさそう。
0491デフォルトの名無しさん
2015/05/31(日) 22:13:35.94ID:GgyUUQ/3何故そうしたのですか?
begin()end()は参照するだけなので、間違って呼び出しても危険では無いですし、
clear()は危険ですが、あってもよさそうに思いませんか?
この程度の物の使い方を誤るようなユーザー層を想定してC++は設計されているのですか?
0492デフォルトの名無しさん
2015/05/31(日) 22:20:57.41ID:9qmomWkuでもね、リングバッファのbegin()とend()ってどこを示すの?
文字通りリング状に繋いだバッファだから始めも終りも無いと思うの(概念上はね)
でもリングバッファってキューなんだよね
0493デフォルトの名無しさん
2015/05/31(日) 22:31:30.45ID:MBoVzqPE実用的な意味で言うならアダプター自体存在価値無いし。生dequeそのまま使えで困らん
0494デフォルトの名無しさん
2015/05/31(日) 22:49:47.87ID:vc6Fo5Bi標準ライブラリがすべて完璧なんてことは無い。
コンテナアダプタに設計上の不完全さがあるのは認識されている
けども、嫌なら素のコンテナを使えばいいので、急いで何か変更する
必要もないから捨て置かれている、とかそんなところだろう。
N3479 (2012-11-02) Priority Queue, Queue and Stack: Changes and Additions
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3479.pdf
0495デフォルトの名無しさん
2015/06/01(月) 00:00:41.46ID:s3ZcdtNustd::dequeにはbegin()end()があります。
そして>>485には、std::dequeはリングバッファを使う実装もありえると書いてあります。
素人考えでは、リングバッファにbegin()end()を設けることは可能だと感じましたが。
どうしてリングバッファだとbegin()end()の実装が出来ないんですか?
0496デフォルトの名無しさん
2015/06/01(月) 00:02:06.37ID:WxPiUJ33何か勘違いしたんだろ
スルーしろ
0497デフォルトの名無しさん
2015/06/01(月) 08:31:07.82ID:z1J9EcqBこういう時は遅延解決と言うのはどうだ?
実際にオマエがリングバッファを使う/作る必要が出るまで放置しておくのだ。
どうしても気になるなら組込みプログラミングとか、
デバイスドライバープログラミングとか
の教科書が役に立つよ
dequeはdouble ended queueで文字通り両端のあるデータ構造
リングバッファは文字通り端の無いデータ構造
端部の処理を隠蔽して
プログラマーが気にしなくていいように作ったんだよ
0498デフォルトの名無しさん
2015/06/01(月) 10:55:59.28ID:81ggMremいや、ふつうにリングバッファに begin()/end() 作れるからね。
http://www.boost.org/doc/libs/1_58_0/doc/html/circular_buffer.html
バッファの端部の処理を隠蔽するのと、コンテナとしての begin()/end() を
提供するのとは競合しない。
0499デフォルトの名無しさん
2015/06/01(月) 18:17:51.18ID:z1J9EcqB読み出し点がbegin()で書き込み点がend()と言う定義だね
これで便利に使えるんならこれでいいんじゃない?
std::にこだわらなきゃいけない理由もないし
std::queueを定義した人たちはわざわざ隠蔽したから違う意図があったんだろうけど
どういう議論でそこに落ち着いたのかは興味のある所だな
0500デフォルトの名無しさん
2015/06/01(月) 18:34:30.61ID:s3ZcdtNu>どういう議論でそこに落ち着いたのかは興味のある所だな
一週回ってまたもとの話題にたどり着きましたね。
std::dequeにはbegin()end()clear()があるのに、
std::queueにはないのは何故ですか?と。
やっと分かってもらえたようで、とてもうれしいです。
実装的な意味で隠す意味は全くないですよね。なにせstd::dequeには有るのだから。実装可能ですよね。
だから使い勝手の面で考慮して削ったのは明白なわけですが、
有ったほうが便利なのも明白なので、何故削ったか教えてください。
また、コンテナというコンテナにbegin()end()clear()が有るのに、
例外的に省く必要があったのは何故ですか?
std::dequeには有るのに、std::queueにはないのは何故ですか?
0501デフォルトの名無しさん
2015/06/01(月) 18:35:28.27ID:Y92a5RD0リングバッファに格納しているデータには両端がある。
読み出し点とかいう珍妙な定義ではない。
リングバッファも理解できない低能は去れ
0502デフォルトの名無しさん
2015/06/01(月) 18:47:00.78ID:Y92a5RD0削ったんじゃない。必要だと判断する根拠が見いだせなかったから入れなかっただけ
0503デフォルトの名無しさん
2015/06/01(月) 18:54:12.01ID:3aF8jH8E隠す意味が全くないとは言い切れないし、std::queueの設計者はFIFOとしての
必要最低限な機能を提供するアダプターの例として作ったんじゃないの?
こんなアダプタの実装なんてあっという間に出来るんだから必要な機能があるなら
my::queueを作ればいいだけだろ
っかお前さんstd::queueに親でも殺されたのか?
0504デフォルトの名無しさん
2015/06/01(月) 18:55:07.93ID:0D/a6Ypk何回ループするつもりだ
0505デフォルトの名無しさん
2015/06/01(月) 19:00:07.36ID:Y92a5RD0std::queueは「コンテナをprotectedにしておくので派生クラスを定義してくれ」という設計思想
0506デフォルトの名無しさん
2015/06/01(月) 19:00:51.86ID:bL5wj5hB脳みそがリングバッファだから仕方ない
0507デフォルトの名無しさん
2015/06/01(月) 19:10:03.15ID:3aF8jH8E本当だ、コンテナはprotectedになってるんだな
0508デフォルトの名無しさん
2015/06/01(月) 19:20:31.72ID:s3ZcdtNuコンテナアダプタだと、どうしてbegin()end()clear()は要らないのですか?
単純に、queueをdequeのスタック機能禁止版、
stackをdequeのキュー機能禁止版、として実装せず、
あえてbegin()end()clear()を削ったのは何故ですか?
そうすることで何のメリットがありますか?
0509デフォルトの名無しさん
2015/06/01(月) 19:20:33.07ID:SF759XlG俺様理論でよければ(標準化の論議を見てたわけじゃないので)
俺低レベルプログラムの出身だから、キューっていうと
ハードウェアとか、OSとか、別アプリとか、別スレッドとか、そういう時間軸の違うところからのアクセスを受け付けるところというイメージ。
なので、せっかくend()しても、だれか別の人がデータ付け加えたら本当のend()じゃなくなるし
begin()も同じ。
なので、俺がqueueを作るなら、begin()とかend()とか積極的に隠蔽したい。
百害あって一利くらいしかない。
本当に、begin()とかend()とかの必要な人は、初期化する人だから、そういう人は
0510デフォルトの名無しさん
2015/06/01(月) 19:23:42.90ID:s3ZcdtNuではどうしてstd::dequeにはbegin()end()があるのですか?
>俺低レベルプログラムの出身だから
低レベルプログラマの間違いですか?
あなたの文章からは知性が感じられません。
0511デフォルトの名無しさん
2015/06/01(月) 19:51:57.40ID:60FC1uF10512デフォルトの名無しさん
2015/06/01(月) 20:13:04.85ID:Ajumyg1Gなんでなんでなんでなんで
どうでもええやん。
0513デフォルトの名無しさん
2015/06/01(月) 21:39:07.24ID:sxT4bift標準化委員会のオツムはその程度
だから標準ライブラリはカオス
わかったら>>510はもう来るな
0514デフォルトの名無しさん
2015/06/01(月) 22:23:47.35ID:CikCK20O0515デフォルトの名無しさん
2015/06/01(月) 22:35:28.05ID:WzbSrIDwstd::queue は FIFO だお。
末尾に突っ込む事と、先頭から取り出す事に特化したのがFIFOだお。
シーケンシャルアクセスしたいのなら、それはそもそもFIFOを使うべきではないという事だお。
0516デフォルトの名無しさん
2015/06/01(月) 22:39:24.96ID:XMlrS7pLほうほう
では何故、ダブルエンドなキューがbegin/endを持っているのですかな?
0517デフォルトの名無しさん
2015/06/01(月) 22:40:54.82ID:CikCK20Oどんなアクセスしようが俺の勝手だろ!
0518デフォルトの名無しさん
2015/06/01(月) 22:43:02.25ID:jRIiVMIxデックはFIFOじゃないからだろ
0519デフォルトの名無しさん
2015/06/01(月) 22:46:12.37ID:3aF8jH8E0520デフォルトの名無しさん
2015/06/01(月) 22:57:36.37ID:bKrMq7bsでは先頭or末尾の追加削除に特化したdequeが
なんでbegin,insert,eraseを持って途中のアクセスをゆるしているのですか
0521デフォルトの名無しさん
2015/06/01(月) 23:05:14.31ID:3aF8jH8E0522デフォルトの名無しさん
2015/06/01(月) 23:06:27.46ID:jRIiVMIx0523デフォルトの名無しさん
2015/06/02(火) 00:38:03.29ID:eS0bDxEp標準化にあたってたいした議論も無く、 SGI STL のやつをそのまま持ってきちゃったんだろう。
http://www.sgi.com/tech/stl/queue.html
> ... Queue does not allow iteration through its elements. [2]
...
> [2] This restriction is the only reason for queue to exist at all.
> ... The only reason to use the container adaptor queue instead of
> the container deque is to make it clear that you are performing only
> queue operations, and no other operations.
0524デフォルトの名無しさん
2015/06/02(火) 00:38:41.35ID:JAKrN9QPどうして間違いなんですか?
begin()end()があったほうが、使えるシチュエーションが広がりませんか?
汎用性はC++の精神では無いんですか?
0525デフォルトの名無しさん
2015/06/02(火) 00:59:02.07ID:4OJRpLbLoperator <<を出力に流用して喜んでたような時代だぞ
委員会に入って修正してあげてくれ
0526デフォルトの名無しさん
2015/06/02(火) 01:36:45.46ID:BaZW+F2H0527デフォルトの名無しさん
2015/06/02(火) 01:41:24.85ID:33LBbjfEありがたくROMって勉強させてもらってはいてもC++14のことに意見することなどあり得ません‥
0528デフォルトの名無しさん
2015/06/02(火) 02:59:29.07ID:W334YSrv本当に知りたきゃステパノフにでも聞いとけ
queueはアダプタということもあって先入れ先出し関係以外の機能は極力つけない
(実情はともかくとして)内部がイテレートできるような状態になってるかすら保証できない
よってbegin/endは意味を成さない
とqueueにbegin/endとかがない点はこういうこじつけができるわけだ
ではなぜdequeはそうなっていないのか
dequeのような両端キューはlistを使えば実現できるのでこれに対するアダプタとしてやればよさそうでもある
だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない
よって両端キューに向いてるコンテナを独自に作る必要がある
コンテナとして作る以上、コンテナとしての機能をつけなきゃならんのでbegin/endとかある
0529デフォルトの名無しさん
2015/06/02(火) 04:56:05.32ID:JAKrN9QP>だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
>かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない
これはqueueにも当てはまることではないんですか?
stackはともかくqueueでは同じような問題が発生するように思います。
それなのにstd::dequeにbegin()end()clear()があって、
std::queueにはないのは何故ですか?
0530デフォルトの名無しさん
2015/06/02(火) 07:06:13.53ID:X1wiCAZlいろんな階層の問題をごっちゃにしてるよ。
1) std::queueはインターフェースの規定であって、データ構造の実態は持たない
std::dequeはデータ構造の実装であって、データ構造の実態を持つ
2) 設計された年代が違う(c++の適用範囲が拡大された)
90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
マルチスレッドが標準で取り込まれたり、デバイスドライバーとか今までc++の適用外と思われていたジャンルでも
c++が使われるようになった。
そのため、入力と出力で違う時間とタイミングで動作するプログラムを想定する必要が出てきた。
0531デフォルトの名無しさん
2015/06/02(火) 07:15:17.80ID:GRJ74vYh設計がぜんぜんアダプターになってないんだが
コンポジションしてるだけだろ
0532523
2015/06/02(火) 10:18:56.81ID:eS0bDxEpせっかく >523 で答えをもってきたのに何でまだループしてんだよ。いいかげんにしろ。
>>530
> 90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
deque も queue も C++98 からいっしょに規格に入ってるよ。
0533デフォルトの名無しさん
2015/06/02(火) 12:27:56.96ID:lYSfTpenあ、すまん。
勘違いしてた。だとしたら完全にスレチだな。
c++98からあるのなら
unix pipeとか、socketをラップしたかったのかな?
まいいや、スレチなので下りる。
0534デフォルトの名無しさん
2015/06/02(火) 12:51:50.65ID:JAKrN9QPstd::queueをインターフェースの既定にとどめて、
std::dequeをデータ構造の実装にした理由は何ですか?
0535デフォルトの名無しさん
2015/06/02(火) 15:13:34.06ID:VK7JMTdHこれな
0536デフォルトの名無しさん
2015/06/02(火) 16:49:36.14ID:lYSfTpenスレチだからこれで最後な
1) まず適切なスレに移住しろ、もうこのスレでは誰も答えてくれないと思うぞ
2) 質問もいいが自分でコードを書いてみろ
とりあえず、pipeを使ったプロセス間通信の例題を拾って来て
std::queueで綺麗にラッピングしてc++らしいライブラリーに仕上げて
動かしてみよう
その上でbegin()とかend()を追加する意味があるのか考えてみろ
pipeの代わりにsocketでもいいぞ
実行環境が無いなんて言うなよ、お前の好奇心はその程度だと言うことだからな
3) 名前に騙されるな
たまたま似たような名前が付いてるからと言って同じものでは無いぞ
データを格納したかったからコンテナを作った、
データ交換インターフェースを統一したかったからインターフェースを規定した
--- のかもしれない ---
違うものだけど同じ名前がつくのは良くあることだ
0537デフォルトの名無しさん
2015/06/02(火) 20:24:24.00ID:JAKrN9QPstd::queueはインターフェイスなんですか?
何故その必要があるんですか?
--- のかもしれない ---
って何ですか?
0538デフォルトの名無しさん
2015/06/02(火) 21:57:41.72ID:5NHDuaxI0539デフォルトの名無しさん
2015/06/03(水) 10:12:15.93ID:Mg6w8zFxモデルとしては合ってるんだろうか
0540デフォルトの名無しさん
2015/06/03(水) 20:40:33.57ID:su0LbJfR0541デフォルトの名無しさん
2015/06/03(水) 21:59:10.99ID:dfdrJWoW0542デフォルトの名無しさん
2015/06/03(水) 22:35:17.80ID:su0LbJfR妙なマイルールにこだわるのがアスペ
なんでなんでとしつこく尋ねるやつも
C++を頑に拒否するやつも
0543デフォルトの名無しさん
2015/06/03(水) 23:17:29.73ID:hYqfxVSDで、ご推薦の言語は?
0544デフォルトの名無しさん
2015/06/04(木) 06:16:53.70ID:UBpVhghT0545デフォルトの名無しさん
2015/06/04(木) 14:30:00.26ID:0Z7pWiJ+0546デフォルトの名無しさん
2015/06/04(木) 14:43:47.36ID:++3aDFpK0547デフォルトの名無しさん
2015/06/04(木) 16:22:33.26ID:6vqO0I900548デフォルトの名無しさん
2015/06/04(木) 16:51:01.08ID:TldR44zJおめでとう
0549デフォルトの名無しさん
2015/06/04(木) 23:48:06.16ID:aPnnxKdi「C++を頑に拒否するやつも」
⇒
俺が使ってる言語を拒否する奴はアスペ
と言うマイルール
やはりC++使いはアスペだな
0550デフォルトの名無しさん
2015/06/04(木) 23:50:59.97ID:B1uuqHGD0551デフォルトの名無しさん
2015/06/05(金) 00:35:34.29ID:wP4ahALK0552デフォルトの名無しさん
2015/06/05(金) 15:36:09.45ID:Cf1vS3sG0553デフォルトの名無しさん
2015/06/05(金) 19:07:40.23ID:+NkeWRnn14と1zの話して
0554デフォルトの名無しさん
2015/06/06(土) 12:03:03.14ID:oLEmSHxB14が出てからもう半年経った
0555デフォルトの名無しさん
2015/06/06(土) 20:16:39.07ID:5qQSF7z/0556デフォルトの名無しさん
2015/06/07(日) 01:38:09.50ID:bygzrjaLどういうことやねん
0557デフォルトの名無しさん
2015/06/07(日) 03:22:55.11ID:J7/rKSpK0558デフォルトの名無しさん
2015/06/07(日) 16:03:47.42ID:Mo3OVMZQstatic_castは読みにくいし移植性がないからCスタイルにしろとか
vectorは重いから生配列にしろとかそういう人達の巣だよ
0559デフォルトの名無しさん
2015/06/07(日) 20:59:31.19ID:PwylUBiq0560デフォルトの名無しさん
2015/06/08(月) 22:14:42.64ID:hVlKyA7q忌み嫌われて仕方ない
0561デフォルトの名無しさん
2015/06/08(月) 22:18:44.57ID:6B1qdYYr0562デフォルトの名無しさん
2015/06/08(月) 22:25:06.05ID:sT7wPUV40563デフォルトの名無しさん
2015/06/08(月) 22:27:11.46ID:y0YTb2xCこれもキャストのうちですか?
0564デフォルトの名無しさん
2015/06/09(火) 01:27:07.38ID:3PdUfKat0565デフォルトの名無しさん
2015/06/09(火) 04:55:58.61ID:PjASmsip0566デフォルトの名無しさん
2015/06/09(火) 15:26:48.09ID:Cm8lxY32static_cast は c なら暗黙の変換してくれるようなのを変換するのに使う、ちょっぴりだけ危険度の少ないキャスト。
例えば enum と整数の変換や、ビット幅や符号の有無が違う整数同士の変換に使う。
読みにくいことは、危ないことをしていることろを見やすくしてくれるんだから有難い話だ。
0567デフォルトの名無しさん
2015/06/09(火) 16:09:41.57ID:9FRXqzT50568デフォルトの名無しさん
2015/06/09(火) 18:42:41.92ID:Q+C1CVUK精度が落ちたり値によってはオーバーフローの恐れがある変換と
使い方を間違えていたらundefined behaviorな変換を
区別なしにstatic_castにまとめられるとマジ困るんだが
0569デフォルトの名無しさん
2015/06/09(火) 19:46:35.81ID:Pop0C6b+const外しと型再解釈までまとめられたCスタイルキャストとかいう更なる糞よりはましでしょ
0570デフォルトの名無しさん
2015/06/09(火) 20:04:24.02ID:wqkyS0f8確かに更なる小分けがされてもいい
dynamic_castで「オーバーフローの恐れがある変換」もランタイムチェック有りでできてもいいような気はするけど
エラーをどうやって返すかは困るな
dynamic_cast (std::yesthrow) <char> (300) なんてな
0571デフォルトの名無しさん
2015/06/09(火) 20:35:32.75ID:Q5wqvLxpauto numeric_cast(from_t) -> to_t; // 数値の変換。オーバーフロー時は例外std::overflow_error
よし>>570は中身を作ってくれ。
0572デフォルトの名無しさん
2015/06/09(火) 20:46:28.56ID:wqkyS0f8template<typename to_t, typename from_t>
auto numeric_cast(from_t v) -> to_t
{
auto const r = static_cast<to_t>(v);
if ((from_t)r == v) throw std::overflow_error;
return r;
}
こんなんでいいのか?
0573デフォルトの名無しさん
2015/06/09(火) 20:49:41.71ID:wqkyS0f80574デフォルトの名無しさん
2015/06/09(火) 22:33:01.84ID:pp31NC3bこうなるようにしたいぞよ
numeric_cast<float>(1.0/3) →1.0f/3に
numeric_cast<float>( std::numeric_limits<double>::quiet_NaN() ) →floatのNaNに
numeric_cast<int>( std::numeric_limits<double>::quiet_NaN() ) →例外
0575デフォルトの名無しさん
2015/06/14(日) 03:34:34.59ID:IHeh8QZtって誰得な仕様なん?
f({1, 2, 3}) と同様にコンパイルエラーにして欲しいんだけど
0576デフォルトの名無しさん
2015/06/14(日) 03:49:57.94ID:iglu1H/10577デフォルトの名無しさん
2015/06/14(日) 09:45:06.28ID:CMzMEuB3auto && r = 0; ユニバーサルリファレンスだがforwarding referenceでない
vector::push_back(T &&) forwarding referenceだがユニバーサルリファレンスでない
0578デフォルトの名無しさん
2015/06/27(土) 22:33:38.38ID:bsNfdhMTいい加減クラスや関数の宣言は新しいC++1yでは
なくせばいいと思う今日このごろ
ソースとヘッダに分けるのもなくせばいい
他の言語を使えば使うほどそう感じるわ
今後そういうそうしていく話とか無いの?
0579デフォルトの名無しさん
2015/06/27(土) 22:50:31.98ID:e2zMBxYg0580デフォルトの名無しさん
2015/06/28(日) 05:32:25.05ID:92vB0cyt0581デフォルトの名無しさん
2015/06/28(日) 12:24:41.15ID:Yx6X9nfmvoid test()
{
A * B;
}
これが宣言か掛け算かひと目で見分けられるようになったらまたおいで
0582デフォルトの名無しさん
2015/06/28(日) 12:32:36.86ID:y9vfLW2M詭弁のガイドラインみたいなのに有ったな
0583デフォルトの名無しさん
2015/06/28(日) 17:36:18.64ID:im5DcXMUだがまぁ、宣言と定義の区別がない言語も多いのではある
0584デフォルトの名無しさん
2015/06/28(日) 23:47:51.35ID:/6YrOuSsAが定義されていなければどっちにしろエラーなんだから、それはヘッダだのモジュールだのといった話とは関係ない
どっちかといえば、#ifdefで宣言されてなければ宣言する式に書かれてる、場所が一定しないようなのが問題になるだろうな
ssize_tとか
0585デフォルトの名無しさん
2015/06/30(火) 08:54:31.31ID:bwgz9k+kここまでの A の宣言を全て把握して意味解決しないと構文解析が進まないという根本的欠陥の話
#include があればその内容をすべて展開・解析しないと進まないという馬鹿げた話
0586デフォルトの名無しさん
2015/06/30(火) 14:37:41.25ID:w7Ekwv0Z0587デフォルトの名無しさん
2015/06/30(火) 21:08:16.41ID:RlLmESno全く欠陥ではないと思うのだが何がいけないんだろう
static strong typingな言語を全否定?
0588デフォルトの名無しさん
2015/07/01(水) 00:06:35.67ID:ZU1/EKD0とかがいいって言ってるんじゃない?
0589デフォルトの名無しさん
2015/07/01(水) 02:14:31.91ID:1cGzpLPZ---A.cpp---
// (ここには前方宣言なし)
::myns::myclass::myfun (); // → 他ファイルの宣言を探しに行く
--------------
Javaならクラス名からファイル名を求め、
C#なら全てのコンパイル対象から探す
0590デフォルトの名無しさん
2015/07/01(水) 05:37:05.50ID:Wee9bcwFでも分けないともっと面倒なことになる
0591デフォルトの名無しさん
2015/07/01(水) 05:50:16.17ID:/48a4FbaJavaならクラス=ソースファイルだからいいけど、moduleも従来型namespaceもclassも全部名前空間を作って :: を使うC++でそりゃ無理だ
いや無理じゃないけど衝突してるときにめんどくさいだろ
moduleの提案でもimportって書かせるようになってるだろ
0592デフォルトの名無しさん
2015/07/01(水) 10:23:39.89ID:LAJVZcmtコンパイラが頑張って人の労力を減らす方向に進んで欲しい
はじめてc言語で関数プロトタイピングを見たときなんじゃこれ?と思ったもん
そんなの2パスしてでもコンパイラが探せばいいやん
秒何円で課金されてた時代じゃないんだし
今のC++だと、テンプレートはヘッダに置くべきか、cppファイルに置くべきか
どこでテンプレートか実体化されるとか、何度も実体化されるのを防ぐにはどう書けばいいかとか
そんなのは人間が考えることではなくて
コンパイラが頑張るべきところだと思うよ
0593デフォルトの名無しさん
2015/07/01(水) 12:28:43.93ID:k5RhOFay0594デフォルトの名無しさん
2015/07/01(水) 12:30:04.86ID:tlC5n+XG関数一覧表としても機能してるし
0595デフォルトの名無しさん
2015/07/01(水) 12:42:44.94ID:gbbyRw8c今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし
0596デフォルトの名無しさん
2015/07/01(水) 12:47:53.20ID:tlC5n+XGというか本当は不要にしてほしい
classの前方宣言とか面倒くさいしコンパイル通らない事もしばしば
ただ関数templateのオーバーロードの順番は大事だったりするので入れ替えただけで
思った通りに正しく動かない事があるとか他にも解決しないといけない問題があるね
0597デフォルトの名無しさん
2015/07/01(水) 13:08:29.02ID:/48a4Fba現状でやっても、アプリケーションコードがシステムヘッダーの内容に影響して
プリコンパイルヘッダーが使えなくなるばかりか
ちょっとうっかりするとライブラリが内部で使ってる名前をオーバーロードしてしまい色々ぶっ壊す不幸な未来しか見えない
0598デフォルトの名無しさん
2015/07/01(水) 13:48:59.83ID:gMCljQ/I0599デフォルトの名無しさん
2015/07/02(木) 01:49:24.89ID:D1cbsXF30600デフォルトの名無しさん
2015/07/10(金) 11:06:53.35ID:99yaLJY4ソース読めばわかることはせいぜい気の利いたIDEがあれば充分
ソース読んでもわからんことをドキュメントに求めるわけで
それは人力でしか作れない
0601デフォルトの名無しさん
2015/07/10(金) 11:44:22.55ID:bM2M5Hwnモニタに貼られたログインパスワードの付箋
0602デフォルトの名無しさん
2015/07/10(金) 12:38:31.58ID:rsWVLm23ほんそれ
0603デフォルトの名無しさん
2015/07/11(土) 14:27:22.00ID:I825HQODC++のスタイルを維持するのであれば、厳しい条件があるね。
それは、「1コンパイル単位内であれば」、出きる、ということ。
例えば一つのcppファイル内であれば、関数のプロトタイプ宣言を無しにすることも可能。
ただし、現状の規格はそうはなってないが。
あちこちのcppファイルに実装が散らばっている状況なら原理的に無理。
だ・か・ら、
「今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし」
ということになってる。
クラス定義は、絶対に1コンパイル単位内に収まるから、
その中であれば順不同でもOKってことになってる。
0604デフォルトの名無しさん
2015/07/11(土) 15:33:34.10ID:iW45GXJ2どうして無理なのよ?
0605デフォルトの名無しさん
2015/07/11(土) 16:56:33.12ID:HDTdm+Tvどーでもいい前置きが本題より目立つレイアウトにさせられたり、
忘れた頃に不意に引っかかって脱力させられたりするね
0606デフォルトの名無しさん
2015/07/11(土) 18:28:13.86ID:XZZz4YSCとりあえず C で誰かやってくれ
そのときにはオーバーロードとテンプレートもついでにつけてくれ
クラスは要らん
0608デフォルトの名無しさん
2015/07/11(土) 21:38:57.56ID:Yv9cPz5q0610デフォルトの名無しさん
2015/07/11(土) 21:43:42.49ID:FdAid2Wa0611デフォルトの名無しさん
2015/07/11(土) 22:01:02.75ID:Yv9cPz5q例えば
hoge.h
void g(short);
inline void f() { g(1); } //上のを呼んでるつもり
app.cxx
void g(int) {...} //知らないで同名の関数を宣言、実際にはこっちが呼ばれてしまう
この例だとnamespace使って回避もできるけど、いちいち気にしてたらきりない
0612デフォルトの名無しさん
2015/07/11(土) 22:18:19.84ID:I825HQOD分割コンパイルするからそうはいかない。
a.cppコンパイル中はb.cppのことは忘れてる。
0613デフォルトの名無しさん
2015/07/11(土) 22:40:40.62ID:FdAid2Waそれをどうにかするのが工夫っていうもんだろ。出来ない出来ないって言ってたら何時迄も出来ない。
まあc、c++は何時迄も古臭い時代遅れな言語の欠点を引きずったまま、ヘンテコな仕様を馬鹿みたいに取り入れて迷走する運命だろうなあ。
0614デフォルトの名無しさん
2015/07/11(土) 22:54:24.55ID:HDTdm+Tv内部結合または無結合の識別子は当該スコープで前方参照できる
外部結合が暗黙に行われることはなく
その識別子をexternを指定して宣言したスコープで前方参照できる
0615デフォルトの名無しさん
2015/07/11(土) 22:55:33.43ID:Yv9cPz5q具体的にはモジュールが入ってかつ完全に#include捨てていなら、つまりDやC#みたいにしていいならできる
前方宣言を取り除くためだけに、C言語のヘッダーファイルを読めないC++になって誰からも見向きされなくなってもいいってんなら提案してみたら?
それこそ迷走だけどな
0616デフォルトの名無しさん
2015/07/11(土) 23:04:21.23ID:6ws9vREvそれこそD言語でいい
0617デフォルトの名無しさん
2015/07/11(土) 23:18:59.54ID:I825HQODC++は構造体のメンバに他の構造体の実態を持てるので。これが痛い。
コンパイル時に構造体のサイズを計算するとき、
互いのファイルで相互依存が有った場合、問題が出る。
a.cpp----------------------------------------
struct a_outer{ file_b_inner member; };
struct a_inner{ int member; };
b.cpp----------------------------------------
strcut b_outer{ file_a_inner member; };
struct b_inner{ int member; };
a.cpp b.cpp どちらを先にコンパイルしても問題が起こる。
こういうことが起こりうる言語で、前方宣言を許すために依存関係を調べてコンパイル順を
自動化するのは無謀。突然「依存関係エラー」とか言われても、エラーの意味が大きすぎる。
自動化できないならマニュアルで行くしかない。
0618デフォルトの名無しさん
2015/07/11(土) 23:28:53.50ID:I825HQODa.cpp----------------------------------------
struct a_outer{ b_inner member; };
struct a_inner{ int member; };
b.cpp----------------------------------------
strcut b_outer{ a_inner member; };
struct b_inner{ int member; };
前方宣言を許すために >> 前方宣言を無くすために
0619デフォルトの名無しさん
2015/07/11(土) 23:56:25.53ID:I825HQODと書いているように、クラスや構造体のサイズ問題は色々と足を引っ張る。
型の前方参照がダメなのは、型のメンバ変数の定義に依存関係が出ると、サイズの決定が面倒なことになるから。
ちなみに、class a; と前方宣言しておくと、ポインタなら持てるようになる。
それから、メソッドの中で型をインスタンス化したりは問題ない。依存関係が発生しないので。メンバに持とうとすると怒られる。
よく考えられているギリギリの攻めの仕様だね。
コンパイラの都合を考えない人からすれば、まったく意味不明な仕様だが。
0620デフォルトの名無しさん
2015/07/12(日) 00:10:07.93ID:RBuqBeAHstruct a
{
//c m1; //NG
//c *m2; //NG
void method(){ c inst; } //メソッド内ではOK
};
struct c; //前方宣言
struct b
{
//c m1; //NG
c *m2; //OK
};
struct c{};
};
な、かなりカオスだろ。
0621デフォルトの名無しさん
2015/07/12(日) 00:15:28.69ID:RBuqBeAHコンパイル単位間を跨った前方参照なんぞ、夢のまた夢なんですわ。
0622デフォルトの名無しさん
2015/07/12(日) 01:04:07.12ID:wWInxoH0待て待て、コンパイル単位間を跨がっている場合の「前方」とは
どんな意味であるべきだ?
0623デフォルトの名無しさん
2015/07/12(日) 01:17:35.77ID:wUBcw7SV>>620が全部OKになればいいだけだろ
包含関係の循環依存なんてむしろコンピューターに検出させるべきこと
互換性についても今まで「宣言されてないエラー」だったのが
コンパイルできるようになるだけで問題ない
それは数値リテラルがshot/longどうとでも解釈可能なことによる.
前方参照解禁となんら関係ない
0625デフォルトの名無しさん
2015/07/12(日) 09:26:46.02ID:h/IZWasRjavaは暗黙にそれを禁止したからうまく成り立ってるよね。
あれ本質的に全部ポインタだもんな。
C#はどうなんだろうか?
後からstructが追加されてたよね
0626デフォルトの名無しさん
2015/07/12(日) 10:23:28.30ID:BKAToTl0c++がこういう欠点を解決しない限りc++プログラマーはくだらないエラーに悩ませ続けられる。
0627デフォルトの名無しさん
2015/07/12(日) 11:56:35.39ID:X+7tQsgp0628デフォルトの名無しさん
2015/07/12(日) 11:58:51.97ID:ahQPxZ3YC#は最初からstructがあるし>>618も問題ない。
これを実現するために複数ソースの同時コンパイル機能があるから
0629デフォルトの名無しさん
2015/07/12(日) 13:38:42.96ID:9keGjwZf1はint
「どうとでも解釈可能」なんて言ってる奴は初心者スレに行ってろ
それにオーバーロードは一例で、templateの特殊化なり
後からなんか追加できる類の機能を全部気にしないといけなくなる
あと他人の話だけど、>>617-618は2パスすればいけるんでこれ論破しても意味ないから
C#でいけるのは複数ソースの同時コンパイル機能があるからじゃないぞ、単に解決順の問題だぞ
0630デフォルトの名無しさん
2015/07/13(月) 20:51:18.51ID:/+jGDn94C++で出来無い理由は無いよね
ヘッダーやプロトタイピングが未だに存在することの積極的な意味は何なんだろう?
0631デフォルトの名無しさん
2015/07/13(月) 21:01:08.49ID:cqAtn6Bc0632デフォルトの名無しさん
2015/07/13(月) 21:34:55.11ID:p5CUZ6+O前方参照を止めるにはコンパイル済みバイナリにAST情報を持たないといけない
それができればdllを使うのにヘッダーファイルなんか不要
0633デフォルトの名無しさん
2015/07/13(月) 21:40:59.64ID:/+jGDn94libは知らんがdllはインターフェース情報提供機能が付いとるがな
VisualBasicはそれを使ってdllを組み込んどるぞ
0634デフォルトの名無しさん
2015/07/13(月) 21:52:26.85ID:YJ7kBspy0635デフォルトの名無しさん
2015/07/13(月) 22:11:26.37ID:0L3Aegsb0636デフォルトの名無しさん
2015/07/13(月) 22:13:20.28ID:cqAtn6Bc引数の型の情報も入ってるの?
0637デフォルトの名無しさん
2015/07/14(火) 03:33:11.06ID:myrBvFFH0638デフォルトの名無しさん
2015/07/14(火) 12:01:41.75ID:izOjheDY0639デフォルトの名無しさん
2015/07/14(火) 12:02:21.27ID:izOjheDY0640デフォルトの名無しさん
2015/07/14(火) 12:37:40.50ID:i07Qd/9G0641デフォルトの名無しさん
2015/07/14(火) 16:59:49.32ID:rkpz8f5t0642デフォルトの名無しさん
2015/07/17(金) 08:07:25.90ID:6TGdteu7中身は海の物とも山の物とも
0643デフォルトの名無しさん
2015/07/17(金) 08:25:49.02ID:Qe5AklCd大西洋!(ばっ
0644デフォルトの名無しさん
2015/09/06(日) 15:44:07.39ID:zOKUDR9w個人的にはコルーチンに期待してる
0645デフォルトの名無しさん
2015/09/20(日) 22:58:03.31ID:ELqIl0hw0646デフォルトの名無しさん
2015/09/21(月) 00:23:58.26ID:a3EaoSZAそんなことよりユー、
queueのContainerをpublicにしちゃいなよ
0647デフォルトの名無しさん
2015/09/21(月) 00:28:28.72ID:C/PElB1R0648デフォルトの名無しさん
2015/09/22(火) 20:42:45.81ID:8KGIzFka0649デフォルトの名無しさん
2015/09/22(火) 22:33:13.52ID:Mc6udnQt0650デフォルトの名無しさん
2015/09/23(水) 00:13:55.42ID:TLLF1cyb分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計の方が変だろう
begin/endなんてもはやアダプターじゃなくてコンポジションの発想
0651デフォルトの名無しさん
2015/09/23(水) 05:56:12.60ID:sl1FEDPCアクセスをあえて制限する設計にしてるんだが
制限されたくなければ元のコンテナ自身を使えばいいだろう
単にqueueって名前が欲しければ今ならエイリアステンプレートがあるからそれを使えばいい
0652デフォルトの名無しさん
2015/09/23(水) 06:40:39.84ID:nPFFi/Oiへー、どうやって?
0653デフォルトの名無しさん
2015/09/23(水) 06:45:32.87ID:sl1FEDPCdeque使えばいいんじゃない?
0654デフォルトの名無しさん
2015/09/23(水) 07:00:49.80ID:nPFFi/Oi>分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計
↓
>元のコンテナ自身を使え
俺コンテナーにqueueをアダプトさせてFIFOとして使いつつ
もとの俺コンテナーも操作したいんだろ?
嫌な使うなとはこれ如何に
0655デフォルトの名無しさん
2015/09/23(水) 07:03:36.94ID:qfkgp73Y0656デフォルトの名無しさん
2015/09/23(水) 07:14:20.75ID:sl1FEDPC俺コンテナには
empty
size
front
back
push_back
pop_front
が実装されてるんだからqueueなんて被せずにそのまま使えばいいだろ
0657デフォルトの名無しさん
2015/09/23(水) 11:32:18.96ID:nPFFi/OiContainerへのアクセス手段が無いことの是非だったのに、話のすり替えですか
0658デフォルトの名無しさん
2015/09/23(水) 11:37:53.83ID:sl1FEDPC0659デフォルトの名無しさん
2015/09/23(水) 11:42:36.88ID:qfkgp73Y0660デフォルトの名無しさん
2015/09/23(水) 11:56:29.87ID:GrwEgYS10661デフォルトの名無しさん
2015/09/23(水) 13:21:00.12ID:nPFFi/Oiでもその根拠が出せないんだろ低能は
アダプターである以上コンテナーの各要素にアクセスしたければ
基となっているコンテナーを使うのが自然なのだが
馬鹿には難しかったかな
0662デフォルトの名無しさん
2015/09/23(水) 13:34:07.40ID:vCV7DdUW情けない
0663デフォルトの名無しさん
2015/09/23(水) 13:42:19.52ID:sl1FEDPC>制限されたくなければ元のコンテナ自身を使えばいいだろう
>コンテナーの各要素にアクセスしたければ基となっているコンテナーを使うのが自然なのだが
俺が言ってることと同じじゃねーか
アホらしい
0664661
2015/09/23(水) 14:13:34.93ID:IdB+1WFh表現がおかしかったわ
「(protectedで持ってる)基のコンテナーを必要に応じて使うのが」
って意味だ
protectとして持ってる時点でqueueに規定されたメンバー関数以上に基のコンテナーにアスセスしたい可能性を考慮しているのは明らかなのだが
0665デフォルトの名無しさん
2015/09/23(水) 15:12:20.85ID:1nbCBLRf17はベータなので20までに考えればよしw
的に手を抜いてる気がするんだけど
0666デフォルトの名無しさん
2015/09/23(水) 18:10:20.77ID:CGnTB/Fy0667デフォルトの名無しさん
2015/09/23(水) 18:11:42.12ID:Wyd23K9zもうこれ以上仕様を複雑にして欲しくないという考えもある
0668デフォルトの名無しさん
2015/09/23(水) 18:41:20.94ID:dN3Md19M0669デフォルトの名無しさん
2015/09/23(水) 19:50:47.80ID:M/UFFhhb0670デフォルトの名無しさん
2015/09/24(木) 23:16:22.80ID:johpD7Pz新たに学習することが不可能な言語
つまりC++はクソ
0671デフォルトの名無しさん
2015/09/25(金) 00:26:55.06ID:ctMDjOwA学習と並行しようものなら指からエラー吐いて死ぬ
0672デフォルトの名無しさん
2015/09/25(金) 08:18:45.92ID:tSApNX4H本番コードは試用済みの範囲で書く。
0673デフォルトの名無しさん
2015/09/25(金) 08:51:08.73ID:1Sci0ai7少なくとも教科書レベルではさ
理想的には言語レベルで分割されてる方がいいんだろうけどね
アプリケーションプログラマはまずこの範囲を勉強しなさい
ライブラリやフレームワークのプログラマはここまでは知っておく事
カーネルやドライバ書く人は、使っていい機能と使ってはいけない機能の把握と
この範囲の機能を詳細に把握しとく事
とか、
0674デフォルトの名無しさん
2015/09/25(金) 09:23:03.93ID:TiOImkoB0675デフォルトの名無しさん
2015/09/27(日) 10:37:21.39ID:P22Nc8Qhそもそもあれサブセットになってねえし
0676デフォルトの名無しさん
2015/09/27(日) 20:29:40.62ID:PiG+2JjX正規表現ライブラリは使わない人には不要とかなら簡単だけど、
&と&&の違いを勉強しなくていいような分割ってどうやるのよ
0677デフォルトの名無しさん
2015/09/27(日) 20:30:21.61ID:PiG+2JjX0678デフォルトの名無しさん
2015/10/03(土) 04:08:11.52ID:V9fK1jG10679デフォルトの名無しさん
2015/10/17(土) 11:42:11.79ID:eobsIaaPどんどん新しいの出てきてわけわからん
0680デフォルトの名無しさん
2015/10/17(土) 13:50:07.50ID:5Tc8rVn80681デフォルトの名無しさん
2015/10/17(土) 17:00:23.36ID:2beLGnBn0682デフォルトの名無しさん
2015/10/17(土) 17:33:18.43ID:Bi5hrpIG0683デフォルトの名無しさん
2015/10/17(土) 17:37:53.61ID:CwjAOs6z0684デフォルトの名無しさん
2015/10/17(土) 17:39:07.67ID:2XpKsNEEしかしその先人が
0685デフォルトの名無しさん
2015/10/17(土) 18:07:05.12ID:2beLGnBn0686デフォルトの名無しさん
2015/10/17(土) 18:16:37.88ID:CwjAOs6zセキュリティなんて知らない
0687デフォルトの名無しさん
2015/10/18(日) 02:12:27.68ID:5Xr103kg0688デフォルトの名無しさん
2015/10/18(日) 02:15:04.58ID:ZzLdZTYh0689デフォルトの名無しさん
2015/10/18(日) 02:57:00.85ID:ok+rssbA5年位前だが客先でwin3.1が動いてた
去年〜今年でwin2000からリプレースした所もある
pc98系統の更新案件もあった(受注したかは知らない)
測定装置の付属PCはXPが現役
ISAバスで機械制御してるのもまだ生きてるはず
0690デフォルトの名無しさん
2015/10/18(日) 05:04:59.10ID:RA8eISXe出力のみで何か入れるとかしなければ更に良い。
0691デフォルトの名無しさん
2015/10/18(日) 09:19:50.27ID:/sWHFkJhフロッピードライブが壊れたっていわれたけど、PC9801だからどうにもならなかった
でもドライブクリーニングしたら動いたから、早くリプレースしてほしいわ
0692デフォルトの名無しさん
2015/10/18(日) 13:05:42.92ID:Q87slw7q0693デフォルトの名無しさん
2015/10/21(水) 09:40:43.68ID:ZelGeJhkシープラプラフォーティーンって言うの?
0694デフォルトの名無しさん
2015/10/21(水) 10:42:45.49ID:zPyN71xI0695デフォルトの名無しさん
2015/10/21(水) 10:48:24.62ID:t8SS3rgX0696デフォルトの名無しさん
2015/10/21(水) 13:40:40.38ID:YvlNWtLN0697デフォルトの名無しさん
2015/10/21(水) 13:54:55.37ID:3W0cBDQG0698デフォルトの名無しさん
2015/10/24(土) 01:02:19.88ID:ACA6GzH5まあarrayでいいんだけど、いちいちmake_arrayって書きたくないから
tupleやarrayのuser defind literalsって書けないもんかね
0699デフォルトの名無しさん
2015/10/24(土) 01:47:58.60ID:ACA6GzH5しまった普通にconstexpr関数で書けばいいのだ
0700デフォルトの名無しさん
2015/10/24(土) 03:00:35.71ID:3cj2wJ90> initializer_listのサイズもテンプレートパラメタだったら少しよかったのに
なんで?
0701デフォルトの名無しさん
2015/10/24(土) 08:41:17.40ID:9vIUQxwGinitializer_listを引数にとるconstexpr関数の中で、static_assert(il.size() > 0)とか
したかったものだから。
でも寝てる間に気がついたけど、これは休むに似たりという奴だ……
気にしてくれてありがとう。
0702デフォルトの名無しさん
2015/10/24(土) 11:40:26.94ID:spMGZ8yfC++14からinitializer_listのコンストラクタもsize()も、というかメンバ関数全部constexprだぞ
0703デフォルトの名無しさん
2015/10/24(土) 12:23:04.29ID:9vIUQxwGそれが、関数引数になると定数式じゃなくなっちゃうんですよ。
http://qiita.com/kktk-KO/items/64b693c84ca0ee4ecbe0
http://stackoverflow.com/questions/8936549/constexpr-overloading
constexpr auto f(const initializer_list<int>& a /*aは定数式じゃない*/) {
static_assert(a.size() > 0); // NG: aが定数式じゃないからa.size()も定数式じゃない
}
0704デフォルトの名無しさん
2015/10/24(土) 14:38:22.93ID:9vIUQxwGconstexpr関数はconstexpr関数しか呼べないから気になります。
0705デフォルトの名無しさん
2015/10/25(日) 18:43:13.64ID:zgU7ZYeY0706デフォルトの名無しさん
2015/10/25(日) 19:22:58.82ID:AAElqWBN0707デフォルトの名無しさん
2015/10/27(火) 00:18:14.50ID:MnWxRx4Shttps://www.reddit.com/r/cpp/comments/3q4agc/c17_progress_update_oct_2015/
0708デフォルトの名無しさん
2015/10/27(火) 03:28:09.21ID:zSXYbgdRだがモジュールとコルーチンがどうなったのかよくわからんぞ
0709デフォルトの名無しさん
2015/10/27(火) 04:57:08.40ID:kXLLNmC/0710デフォルトの名無しさん
2015/10/28(水) 12:45:31.90ID:ZMMpG7qX0711デフォルトの名無しさん
2015/10/28(水) 14:27:47.90ID:KgN4RL86日本語版良くないの?
それと、まだ未読なんだけど
前作のEffective c++を置き換えるものなのか
両方とも読むべきものなのか
どっちだろう?
0712デフォルトの名無しさん
2015/10/28(水) 14:44:03.47ID:uVyj7vhU0713デフォルトの名無しさん
2015/10/28(水) 19:23:16.84ID:50amutaY0714デフォルトの名無しさん
2015/10/29(木) 12:44:41.87ID:jYkr1Igb11と14の機能に絞った話だったはずだから
0715デフォルトの名無しさん
2015/10/29(木) 12:51:42.42ID:jYkr1Igbhttp://www.oreilly.co.jp/pub/9784873117362/ch01.pdf
0716デフォルトの名無しさん
2015/10/30(金) 23:43:48.40ID:osGQlyPp草生えそうになったわ
0717デフォルトの名無しさん
2015/11/11(水) 18:58:54.13ID:ZfyuZUZx来年6月の会議でC++17の機能が固定される予定だと
0718デフォルトの名無しさん
2015/11/11(水) 23:36:22.21ID:Qsz2Nv9Y0719uy ◆Qawu9.2l1E
2015/11/12(木) 00:16:31.43ID:vfLy0hrq他の機能を見なかった事にすれば良かったのに
欲を出して自分なら扱えるんだ自分は頭が良いんだーって
数千〜数万時間という無駄な時間を浪費していく人がいるのはこのスレですか?
あたな方の毛根は悲鳴を上げてます
0720uy ◆Qawu9.2l1E
2015/11/12(木) 00:25:04.64ID:vfLy0hrq0721デフォルトの名無しさん
2015/11/12(木) 00:25:06.56ID:YhDjZDip0722デフォルトの名無しさん
2015/11/12(木) 03:35:28.98ID:lozeCk1H機能追加は次のミーティングまでに提案書が出されたものまでかな
0723デフォルトの名無しさん
2015/11/12(木) 22:24:16.57ID:GaR/agwA0724デフォルトの名無しさん
2015/11/13(金) 00:50:09.24ID:6HVQn7jH0725デフォルトの名無しさん
2015/11/14(土) 00:00:54.07ID:iREj21cbいつも文字列変換で苦労してたからなぁ
0726デフォルトの名無しさん
2015/11/17(火) 19:34:36.01ID:ue9cUm180727デフォルトの名無しさん
2015/11/19(木) 22:58:23.47ID:co3yp3cP何か浮かれたpaper多くないか
0728デフォルトの名無しさん
2015/11/19(木) 23:27:16.67ID:C3NAuofd「浮かれた」の意味が分からん。具体的に頼む。
0729デフォルトの名無しさん
2015/11/20(金) 00:43:26.57ID:Cs4o/AZjP0157R0 Handling Disappointment in C++
> ガッカリを扱う方法
> 関数が失敗したとき、我々はガッカリする。
テクニカルタームとしてdisappointmentってどうよ
P0172R0 Abominable Function Types
> 型システムの片隅には暗闇がある。それを知るものは限られている……
> 忌まわしき関数型
ホラーかよ
あとpaperじゃないけど
P0092R1 Polishing
タグをエスケープし忘れ、磨くって何をだよ
しかもisocpp.orgにガッツリそのまま転記だわざとか!
と突っ込む回数がふだんより多かったんだ
0730デフォルトの名無しさん
2015/11/20(金) 05:23:18.46ID:+bHteJqq今はガッカリでもそのうちテクニカルタームとして定着する物も出てくるだろ
0731デフォルトの名無しさん
2015/11/20(金) 14:12:54.71ID:AMmCkZV3[](auto a) -> void {}
こんな感じの奴
で質問なんだが
テンプレート関数でもこういう書き方できるの?
0732デフォルトの名無しさん
2015/11/20(金) 17:06:48.69ID:U0800zwRauto func() -> void {}
でいけね
0733デフォルトの名無しさん
2015/11/20(金) 17:15:28.09ID:AMmCkZV3かけないのかな〜って
auto func( auto arg ) -> void{}
って
0734デフォルトの名無しさん
2015/11/20(金) 17:28:04.32ID:09So3vc/0735デフォルトの名無しさん
2015/11/20(金) 21:12:56.27ID:lBI2kOuM0736デフォルトの名無しさん
2015/11/21(土) 00:07:18.37ID:uQbElO9ZConcepts の提案に含まれてる。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4553.pdf
> template<typename T> class Vec { };
> template<typename T, typename U> class Pair { };
> template<typename... Args> class Tuple { };
>
> void f1(const auto&, auto);
> void f2(Vec<auto*>...);
> void f3(Tuple<auto...>);
> void f4(auto (auto::*)(auto));
>
> template<typename T, typename U> void f1(const T&, U); // redeclaration of f1
> template<typename... T> void f2(Vec<T*>...); // redeclaration of f2
> template<typename... Ts> void f3(Tuple<Ts...>); // redeclaration of f3
> template<typename T, typename U, typename V> void f4(T (U::*)(V)); // redeclaration of f4
auto のほかに制約を定義したコンセプト名も型名のかわりに使える。
0737デフォルトの名無しさん
2015/11/21(土) 07:13:41.99ID:GohpmGDsauto main() {}
0738デフォルトの名無しさん
2015/11/21(土) 07:47:40.78ID:UH5fCNhv0739デフォルトの名無しさん
2015/11/21(土) 12:26:37.50ID:+qmJr5EIワロタ
確かに
0740デフォルトの名無しさん
2015/11/21(土) 12:56:36.38ID:TE1AXQwv0741デフォルトの名無しさん
2015/11/21(土) 21:32:05.40ID:rACYfPqD職業プログラムになるのが普通だからしょうがない。
だからドカタって呼ばれる
0742デフォルトの名無しさん
2015/11/22(日) 21:01:10.56ID:vYPMz+tEでは型が規格で決まっていて変わることがないmainの戻り値の型をautoにする利点を挙げてください。
デメリットしかないからそれを挙げましたが、低脳ではないあなたであれば高尚なメリットを挙げられるんですよね?
0743デフォルトの名無しさん
2015/11/22(日) 21:06:46.49ID:yfhDplVVC++は冗長な記法が多すぎでしょ。
template <typename T, typename U>
とかクッソ面倒だし、単に
<T, U>と書かせろと。
さらにテンプレートクラスだと、メンバ関数の実装全てに
これ書かないといけないんだぜ?
もう発狂しそうになるよ
0745デフォルトの名無しさん
2015/11/22(日) 21:17:54.84ID:vYPMz+tEtemplate<class T>の方が短くていいよ!
> さらにテンプレートクラスだと、メンバ関数の実装全てに
> これ書かないといけないんだぜ?
> もう発狂しそうになるよ
クラス内でusingかtypedefで定義すればいい
標準ライブラリでもvalue_typeとかiteratorとかで使われてる方法
0746デフォルトの名無しさん
2015/11/22(日) 21:18:16.01ID:vYPMz+tE0747デフォルトの名無しさん
2015/11/22(日) 21:25:56.19ID:m3OPFIImしかも>>743の日本語理解できてねーし
やっぱ1文字でも減らすことが至上と考えてる奴は低能だな
0748デフォルトの名無しさん
2015/11/22(日) 21:28:33.14ID:vYPMz+tE標準ライブラリのテンプレート使ってるクラス一つでも見てから言ってくださいね
0749デフォルトの名無しさん
2015/11/23(月) 00:38:43.39ID:kLzVjV7Oキーワードが足りないって危機的状況だよな
全部contextual keywordにならないかな
0750デフォルトの名無しさん
2015/11/23(月) 00:40:57.08ID:gt57xMsi0751デフォルトの名無しさん
2015/11/23(月) 00:55:23.95ID:kLzVjV7Oうーむ
むむむ
0752デフォルトの名無しさん
2015/11/23(月) 07:04:07.85ID:5SRyJk37本題じゃないが、main()の戻り値と引数は「決めない」のが言語規格じゃなかったっけ?
確かmain()はプロトタイピングすらされてなかったと思うが?
0753デフォルトの名無しさん
2015/11/23(月) 07:58:14.11ID:kEUHEwN+http://www.kijineko.co.jp/tech/superstitions/void-main.html
0754デフォルトの名無しさん
2015/11/23(月) 17:32:57.16ID:vMFz+wxS0755デフォルトの名無しさん
2015/11/23(月) 18:43:59.09ID:j/voQwFMよく読んだら、今後の(awaitとか使わない)ソースでは、普通のキーワードと変わらないんだ
いいねソフトキーワード
あとは将来キーワードに召し上げられないように、俺ソースの命名規約を工夫するか
cの代わりにkとかwの代わりにvvとか
0756デフォルトの名無しさん
2015/11/23(月) 18:49:51.33ID:JoHLcQKXhttps://botondballo.wordpress.com/2015/11/09/trip-report-c-standards-meeting-in-kona-october-2015/#ewg
> ... EWG settled on the keyword choices co_await, co_yield, and co_return;
> the proposed alternative of "soft keywords" that tried to allow using
> await and yield without making them keywords, was rejected on the basis
> that "the difficulty of adding keywords to C++ is a feature". ...
0757デフォルトの名無しさん
2015/11/23(月) 18:58:22.42ID:j/voQwFMむむむ ありがとう
今後並列処理関係でキーワード増えそうな気がするんだが大丈夫かな……
0758デフォルトの名無しさん
2015/11/23(月) 19:09:48.92ID:1Nk8DAEnマジレスするとtypename以外にも変数受けられるから…。
0759デフォルトの名無しさん
2015/11/23(月) 19:12:39.87ID:y+4gfsErこの棄却理由はどういう意味だろう
直訳だと「C++にキーワードを追加する難しさはひとつの機能(特徴)だ、という原則」?
0760デフォルトの名無しさん
2015/11/23(月) 19:31:36.99ID:j/voQwFM困難だから……”
と読んだんだが、自分もよくわからぬ
0761デフォルトの名無しさん
2015/11/23(月) 20:43:39.20ID:b98i53Mh0762デフォルトの名無しさん
2015/11/23(月) 20:58:02.32ID:y+4gfsErたしかにソフトキーワードはusing namespace std;のときダメじゃんって話はあったな
0763デフォルトの名無しさん
2015/11/23(月) 21:26:47.34ID:vMFz+wxS0764デフォルトの名無しさん
2015/11/23(月) 21:32:32.00ID:zEOitApd0765デフォルトの名無しさん
2015/11/23(月) 23:37:32.98ID:iUZSUGdH0766デフォルトの名無しさん
2015/11/24(火) 00:30:52.62ID:/Po/Pqa3そんなことは知ってる。
でもたいていの場合は不要でしょ。
ふつうのジェネリクスのときは
<T, U>
で済むようにして
変数を受け付けるときだけ特殊なキーワードを使えばいい。
<T, var N: Int>
みたいに。
あるいは、ジェネリクスと変数は本来別物だから、完全に分離して、
変数は別のシンタックスを用意すればOK。
class StaticArray <T> [_ N: Int] { ... }
インスタンス化は
var nums = StaticArray<Int>[16]() // 大きさ16のInt配列
これらを一緒くたにしてテンプレートという機能にぶち込んでしまったのがそもそもいけない。
0767デフォルトの名無しさん
2015/11/24(火) 01:04:19.40ID:XeCWO9iV余計わかりにくいわ
0768デフォルトの名無しさん
2015/11/24(火) 02:24:38.78ID:SGPcTC2U0769デフォルトの名無しさん
2015/11/24(火) 13:55:40.92ID:ge2Zja900770デフォルトの名無しさん
2015/11/24(火) 13:56:25.58ID:PwKZ6cFL0771デフォルトの名無しさん
2015/11/24(火) 16:36:45.34ID:ge2Zja90その非力なマクロでさえ使い所を弁えれば役に立つのだけど。
Common LispやScheme(version 6以降)なんかの強力なマクロがCにあればなぁと思ってる。
c++のテンプレート以上に強力で、使いやすく、そして自由な奴。
0772デフォルトの名無しさん
2015/11/24(火) 17:36:15.30ID:UCeGX0YN0773デフォルトの名無しさん
2015/11/24(火) 18:47:37.47ID:k/WtYpn0CやC++へのトランスコンパイル言語 Nim (元 Nimrod) が、
文法に無理させることなく強力なマクロを実現させてる。まだ未実装な部分もあるが。
0774デフォルトの名無しさん
2015/11/24(火) 18:58:34.75ID:FDR66s0Ylispのようなマクロが他の言語に採用されない理由読んだら?
0775デフォルトの名無しさん
2015/11/24(火) 21:25:03.33ID:2wn8VfxF0776デフォルトの名無しさん
2015/11/24(火) 22:25:27.86ID:3ku7vQ9p健全なマクロは確かにときどき欲しいと思うね
制御文を拡張したいと思うときがある
0777デフォルトの名無しさん
2015/11/24(火) 22:28:18.36ID:zyV4TR/k0778デフォルトの名無しさん
2015/11/24(火) 22:54:11.75ID:/Po/Pqa3クロージャで良くないすか?
0779デフォルトの名無しさん
2015/11/24(火) 23:25:47.47ID:3ku7vQ9pクロージャで、というとこんな感じでしょうか
auto if_(bool c, auto t, auto f) {
return c ? t() : f();
}
if_(x==y, [](){ return 1; }, [](){ return 2; });
健全なマクロがもしあればもうちょっと短く出来るな、程度の欲しさですな
昔はプリプロセサマクロでしか書けなかったんだよなあ……
ラムダにはうっとりだ
0780デフォルトの名無しさん
2015/11/24(火) 23:38:17.82ID:+Jid013xaif(get(key)) {
it->print();
}
みたいに、ifの中身をitに束縛してくれる感じのが欲しい。
0781デフォルトの名無しさん
2015/11/25(水) 00:07:27.63ID:37RYBFHuoptionalが近いか?
if (auto t = something_returns_optional()) {
use(*t);
}
0782デフォルトの名無しさん
2015/11/25(水) 05:44:52.88ID:q0VxF2ObSwiftのTrailing Closureみたいなのがあるといいんだろうな
Swiftでは関数の最後の引数がClosureの場合、引数リストの外に出せる場合がある:
func if_(condition: Bool, (Void) -> Void) -> Void { ... }
これの呼び出しは
if_ (x==y, {
})
でも
if_ (x==y) {
}
でもOK
返り値も返すことができて、そこからさらにチェーンすることもできるので
if_ (x==y) {
} .else {
}
みたいなオレオレif文も作れるよ
0783デフォルトの名無しさん
2015/11/25(水) 11:10:38.70ID:n/g2lh6Ic++ってそういう風に書けたんだ。知らなかった・・・・・・
→色々調べたらc++98の時点でifのカッコの中身=conditionで、condition自体は
condition: expression | type-specifier-seq declarator = assignment-expression
で定義されてたわ。知らずに損してた。
一方で、C99だとifのカッコの中身=expressionみたい。
アナフォリックなand演算はどう書く?
短絡and演算に穴フォリックマクロのエッセンスを加えた奴なんだけど
ch = (get(text) aand it->get_buffer() aand it->get_line(l) aand it->get_column(c));
0784デフォルトの名無しさん
2015/11/25(水) 21:24:08.35ID:rSYqRV3Wたぶん、できないんじゃないかな
&&をオーバーロードすると短絡評価じゃなくなっちゃうし
アナフォリックandっていうのか
ネストが深くならなくて格好いいねえ
0785デフォルトの名無しさん
2015/11/26(木) 23:17:49.61ID:fIIo+HYGOverload resolution
https://akrzemi1.wordpress.com/2015/11/19/overload-resolution/
これが15年ぶりにアップデートされるかと思うとわくわくする
Why Not Specialize Function Templates?
http://www.gotw.ca/publications/mill17.htm
0786デフォルトの名無しさん
2015/11/26(木) 23:28:58.12ID:etcv8G3e荒らしは去れ
0787デフォルトの名無しさん
2015/11/27(金) 01:05:28.82ID:yys8TVN5C++17でConceptが入るから関数オーバーロードの仕方が変わるって
スレに沿った話題なのに
理解できないからって荒らし扱いww
0788デフォルトの名無しさん
2015/11/27(金) 01:09:04.64ID:yys8TVN5知ったかぶりはよくないと思うよ
0789デフォルトの名無しさん
2015/11/27(金) 23:24:52.69ID:9ngSAGXdちゃんと日本語のリンクを貼って、どうぞ
0790デフォルトの名無しさん
2015/11/27(金) 23:53:12.83ID:bxU365jm規格も関連文書も全部英文なのに、何言ってんだ?
「ちゃんと」の基準がさっぱりわからん。
0791デフォルトの名無しさん
2015/11/28(土) 00:00:51.96ID:rDr0w/HG世の中の全員が知っていて当然のような書き方
で貼り付ける人は高確率でアスペ
0792デフォルトの名無しさん
2015/11/28(土) 00:04:27.13ID:UH2RVtiD0793デフォルトの名無しさん
2015/11/28(土) 02:23:48.80ID:UmyVHocAを知らないってことは関数テンプレートの特殊化が使えてないってことなんだけどなw
そんなのが何でC++14に興味あるわけ?
C++98で十分じゃん
> 高確率でアスペ
仮にそうだとしても>>786は恥さらしの無知だよね
0794デフォルトの名無しさん
2015/11/28(土) 08:04:32.62ID:0xj25Fro「サイトAを知らない人は無知・恥曝し」
こういうアホよくいるよな
しかも語尾に「w」が付いてることが多い
0795デフォルトの名無しさん
2015/11/28(土) 08:44:25.72ID:mxbt4S4Cっ std::terminate();
0796デフォルトの名無しさん
2015/11/29(日) 03:55:36.08ID:nX6bK8c/0797デフォルトの名無しさん
2015/11/29(日) 06:46:28.40ID:ph4aH7Jo0798デフォルトの名無しさん
2015/11/29(日) 09:20:39.17ID:zeO3ugsW0799デフォルトの名無しさん
2015/11/30(月) 00:22:59.43ID:Udb8DCP8まあ馬鹿が馬鹿なのは当たり前だよな
0800デフォルトの名無しさん
2015/11/30(月) 00:57:22.18ID:2FRuf8rI0801デフォルトの名無しさん
2015/12/02(水) 01:50:59.86ID:zaOCqs+2メンバー関数のポインタを
template<class R,class T>
foo(R T::* pm)
で取れるようになったの規格のいつから?
clang3.4とgcc4.8の-std=c++03 ではなんの警告もなく通るけどMSVC2013じゃ通らん
あとこれテンプレートの型どうなってんの?
0802デフォルトの名無しさん
2015/12/02(水) 12:19:23.31ID:BZQq0daR見慣れてないだけで特別ななにかがあるようには思えないし
ttp://codepad.org/Q1s6uKX9
0803デフォルトの名無しさん
2015/12/02(水) 12:28:07.16ID:SG5bn8pDEffective Modern C++の第一章項目4から転載するけど、
template <typename T>
class TD;
というクラスを宣言しておけば、
TD<decltype(y)> _;
した時にコンパイラのエラーメッセージに型が表示される。
うちの環境だと、
struct S {double m;};
foo(&S::m);
の時、
R = double
T = S
pm = double S::*&
になるっぽい。
いつから書けるようになってるのかは今調べてる・・・・・・
0804デフォルトの名無しさん
2015/12/02(水) 12:43:06.54ID:WGLqoqFk0805デフォルトの名無しさん
2015/12/02(水) 13:34:30.03ID:SG5bn8pDtemplate<class R,class T>
foo(R T::* pm)
は受理される事が分かった。
http://sites.cs.queensu.ca/gradseries/help/stuff/cpp98.pdf
詳細はこんな感じ(template-parameter-listの展開は省略)
template-declaration -> export(opt) template < template-parameter-list > . declaration
declaration -> function-definition -> decl-specifier-seq(opt) . declarator ctor-initializer(opt) function-body
declarator -> direct-declarator -> . direct-declarator ( parameter-declaration-clause ) cv-qualifier-seq(opt) exception-specification(opt)
direct-declarator -> declarator-id -> id-expression -> unqualified-id -> identifier -> foo
direct-declarator ( . parameter-declaration-clause ) cv-qualifier-seq(opt) exception-specification(opt)
parameter-declaration-clause -> . parameter-declaration-list(opt) ...(opt)
parameter-declaration-list -> parameter-declaration -> . decl-specifier-seq declarator
decl-specifier-seq -> decl-specifier-seq(opt) . decl-specifier
decl-specifier -> type-specifier -> simple-type-specifier -> ::(opt) nested-name-specifier(opt) . type-name
type-name -> typedef-name -> identifier -> R
decl-specifier-seq . declarator
declarator -> . ptr-operator declarator
ptr-operator -> ::(opt) . nested-name-specifier * cv-qualifier-seq(opt)
nested-name-specifier -> . class-or-namespace-name :: nested-name-specifier(opt)
class-or-namespace-name -> class-name -> identifier -> T
ptr-operator . declarator
declarator -> direct-declarator -> declarator-id -> id-expression -> unqualified-id -> identifier -> pm
0806デフォルトの名無しさん
2015/12/02(水) 14:10:28.38ID:zaOCqs+2f1そんな書き方出来るのね
だからf2のRは関数の型になるのか
知らなかった。サンクス
そしてMSVC死すべし
>>803
データメンバーはMSVC++2013でも通るんだけどね
0807デフォルトの名無しさん
2015/12/02(水) 16:43:06.95ID:OBZqLDvp0808デフォルトの名無しさん
2015/12/03(木) 18:51:47.35ID:CB8nR6930809デフォルトの名無しさん
2015/12/03(木) 19:07:52.69ID:ndGhF5es0810デフォルトの名無しさん
2015/12/03(木) 23:58:23.36ID:mzSrHInP0811デフォルトの名無しさん
2015/12/04(金) 07:30:43.79ID:e+zKFYA8誰か試して教えてくれ
0812デフォルトの名無しさん
2015/12/04(金) 10:38:18.04ID:RGw51yAh0813デフォルトの名無しさん
2015/12/04(金) 10:49:17.03ID:RGw51yAh0814デフォルトの名無しさん
2015/12/04(金) 23:50:34.71ID:ugYhy3h7散々クソ扱いされた今のC++のコンパイル&リンクの仕組みが
クソであることを再認識させられた
0815デフォルトの名無しさん
2015/12/05(土) 00:59:27.31ID:e7gPFA0r0816デフォルトの名無しさん
2015/12/05(土) 04:41:31.84ID:jW0axztkまだ使い物にならないからexperimentalだった
0817デフォルトの名無しさん
2015/12/05(土) 07:43:05.11ID:TNqFjir/それより子ちんちんはよ
0818デフォルトの名無しさん
2015/12/05(土) 15:06:50.13ID:nVmh1Uw7C++17に間に合わないのでは?
0819デフォルトの名無しさん
2015/12/06(日) 08:31:34.88ID:B6wQTCue宣言と実装をひとつにできないやんけ
cppから互いのh見ないといかんやろ
VC糞すぎる
0820デフォルトの名無しさん
2015/12/06(日) 13:20:06.96ID:OHUYOsyJだけ書けばいいよね
0821デフォルトの名無しさん
2015/12/06(日) 14:47:06.47ID:iutDeUPr0822デフォルトの名無しさん
2015/12/06(日) 22:29:47.24ID:XiMnzaaH誰も困らないでしょ
0823デフォルトの名無しさん
2015/12/07(月) 01:37:32.29ID:ENmwIuVj0824デフォルトの名無しさん
2015/12/09(水) 13:03:25.61ID:IXqPU77s実クラスとコンストラクタをファクトリで隠蔽すれば逃げられるっしょ
0825デフォルトの名無しさん
2015/12/12(土) 15:42:32.42ID:OMbug+9k#include <B.h>
class A {
A& a;
};
と
class B;
#include <A.h>
class B {
A& a;
};
じゃいかんの?
実体を持たせたいって話だったらサイズ定まらないんだからどうやっても無理じゃないかな
0826デフォルトの名無しさん
2015/12/12(土) 15:43:38.00ID:OMbug+9kclass A のメンバは B& b; ね
0827デフォルトの名無しさん
2015/12/12(土) 15:58:10.85ID:npRd3MLZ0828デフォルトの名無しさん
2015/12/13(日) 05:43:09.04ID:JyylBzJi0829デフォルトの名無しさん
2015/12/13(日) 07:40:04.56ID:mzdnj3l/class Bからclass Aのメンバ関数を呼び出す
これができない
0830デフォルトの名無しさん
2015/12/13(日) 10:19:13.60ID:Wcw8JgGxうまくいかないURLがあります。
■概要
「http://a.com」へアクセスしてレスポンスbodyを見ると、
文字化けした文字が1文字のみ(�)入っていて、正常にHTMLを取得できません。
なお「http://b.com」「http://c.com」などの他サイトの場合、正常にHTMLを取得できます。
■質問事項
上記が発生する原因と対策をご教授下さい。
■環境
Microsoft Visual Studio Community 2013 Update 4
Visual C++ / C++/cli
Windows8.1
■ソースコード
http://ideone.com/5nTej7
大変困ってます。先輩方ご教授のほどお願い致します。
0831デフォルトの名無しさん
2015/12/13(日) 10:35:10.79ID:fD1PRCXrそうすると規格の仕様定義がソースコードだらけになる
実装が仕様のECMAScript 6の様に
0832デフォルトの名無しさん
2015/12/13(日) 11:29:25.24ID:YIi8S0oG0833デフォルトの名無しさん
2015/12/13(日) 11:56:01.44ID:HelZ49Rj.Net側の使い方を探した方が早い
0834デフォルトの名無しさん
2015/12/13(日) 12:48:03.70ID:Sn25ABdBマルチポスト野郎なのでスルーで
0835デフォルトの名無しさん
2015/12/13(日) 22:38:07.16ID:3ApC0baZVisual C++は専用のオブジェクトファイルができるようだ
0836デフォルトの名無しさん
2015/12/14(月) 01:22:51.58ID:Xhld/+0hhttp://blog.rust-lang.org/2015/12/10/Rust-1.5.html
0837デフォルトの名無しさん
2015/12/14(月) 01:30:48.82ID:A7WhCv85まあ、そこはFFIで補えって事なんだろうけど
0838デフォルトの名無しさん
2015/12/15(火) 00:30:15.49ID:+QNyrCxt0839デフォルトの名無しさん
2016/01/03(日) 23:49:34.32ID:n0RRADXj0840デフォルトの名無しさん
2016/01/04(月) 02:19:53.29ID:FlX08ahi0841デフォルトの名無しさん
2016/01/04(月) 08:17:34.99ID:dFEpTHdS0842デフォルトの名無しさん
2016/01/04(月) 13:02:58.09ID:4YgdLYhO0843デフォルトの名無しさん
2016/01/04(月) 14:06:34.94ID:3ZUvyneM中級者「C++全然わからんw」
上級者「C++全然わからんw」
標準化委員会「C++全然わからんw」
スコット「C++全然わからんのでもうやめるわw」
0844デフォルトの名無しさん
2016/01/04(月) 14:23:47.74ID:x5rHK6YB0845デフォルトの名無しさん
2016/01/04(月) 15:12:07.50ID:7pom0hWz0846デフォルトの名無しさん
2016/01/04(月) 17:01:44.28ID:N9vPeoWwC++は逆に、ソースコードから動作を想像するのがもっとも困難な言語になってしまったなぁ。
どうしてこうなった。
0847デフォルトの名無しさん
2016/01/04(月) 17:14:02.24ID:x5rHK6YB0848デフォルトの名無しさん
2016/01/04(月) 17:48:30.86ID:N9vPeoWw自分ひとりでやってる分には好きにしろと思うが。
0849デフォルトの名無しさん
2016/01/04(月) 18:04:53.45ID:x5rHK6YB自分の能力の無さをC++のせいにするな
0850デフォルトの名無しさん
2016/01/04(月) 18:43:21.19ID:PWQd7yEq0851デフォルトの名無しさん
2016/01/04(月) 19:11:11.24ID:mH8w9NDh全てを把握してる人なんていないでしょ
0852デフォルトの名無しさん
2016/01/04(月) 19:11:23.16ID:XdSW49u/0853デフォルトの名無しさん
2016/01/04(月) 19:22:17.78ID:sMTgy5ar13節を読破していい気になっていたら
テンプレートのパーシャルオーダリングで挫折した
0854デフォルトの名無しさん
2016/01/04(月) 22:02:43.29ID:MCDNvKGQホモダチの議長も引退しないといかんな
0855デフォルトの名無しさん
2016/01/05(火) 03:51:05.13ID:Gtg7XWw80856デフォルトの名無しさん
2016/01/05(火) 08:38:53.15ID:Uwspl53Y具体例を。
0857デフォルトの名無しさん
2016/01/05(火) 20:28:32.10ID:0kQoSY1y0858デフォルトの名無しさん
2016/01/05(火) 20:31:35.16ID:vJsW+BrL0859デフォルトの名無しさん
2016/01/05(火) 22:42:21.38ID:7Q2tXWc2クラスウィザードで作ったハンドラの関数に全処理をぶち込んで同じ処理はコピペでユーザー関数を呼ばない
デバッグを担当したので仕様書を見ると3千行くらいだろうかと思ってたら桁が一つ違った
0860デフォルトの名無しさん
2016/01/05(火) 22:46:13.84ID:7Q2tXWc2VBでocxとかAPIとかアクティブXを意識しないで済むような条件ならどうだろ?
0861デフォルトの名無しさん
2016/01/06(水) 07:55:53.24ID:LK889b8U0862デフォルトの名無しさん
2016/01/08(金) 20:42:50.02ID:R3C0rIaNあれは色々クソだった
0863デフォルトの名無しさん
2016/01/08(金) 21:37:00.02ID:p/Qz8y2X0864デフォルトの名無しさん
2016/01/08(金) 23:36:28.61ID:TMtMk1T6最近はdeleteなんか使わんぞ
0865デフォルトの名無しさん
2016/01/09(土) 00:35:58.93ID:fiu0c9MZ0866デフォルトの名無しさん
2016/01/09(土) 00:45:38.64ID:5sGg2rIv知らないっていうのはかなり問題があるぞ。
0867デフォルトの名無しさん
2016/01/09(土) 02:05:19.45ID:e4D1bXEw私には無いが。
0868デフォルトの名無しさん
2016/01/09(土) 08:08:26.21ID:9YbuGRIoそれもそうか
>>867
その危険を迂回できるようになるためにも、知っとく必要だけはあるってことか……
0869デフォルトの名無しさん
2016/01/09(土) 08:17:05.09ID:n4h15amY0870デフォルトの名無しさん
2016/01/09(土) 08:32:57.66ID:9YbuGRIoバカはオレであった
0871デフォルトの名無しさん
2016/01/09(土) 13:10:41.45ID:e4D1bXEw私が間違っていました
0872デフォルトの名無しさん
2016/01/09(土) 14:55:36.48ID:OJ3RzNty0873デフォルトの名無しさん
2016/01/10(日) 13:56:15.14ID:OzNStxiO何年か前に提案されてた気がするんだけど
0874デフォルトの名無しさん
2016/01/11(月) 01:48:07.39ID:6D6y+3+bなんか癒やされた。好きだぜ
0875デフォルトの名無しさん
2016/01/13(水) 16:46:28.54ID:Uatu39YLC++ Concepts are now supported when compiling with -std=gnu++1z or -std=c++1z.
使ってる人いますか?
0876デフォルトの名無しさん
2016/01/13(水) 16:58:41.33ID:W/VWXs4P0877デフォルトの名無しさん
2016/01/19(火) 01:34:05.07ID:RsG+AB1BもうC++1zとかいいから、
高速で安全でモダンな、ンギモッヂイイ感じの
C++の後継言語を開発することにリソースを割いた方がいいんじゃなかろうか?
0878デフォルトの名無しさん
2016/01/19(火) 16:11:15.39ID:kwdF0Xnfc/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
0879デフォルトの名無しさん
2016/01/20(水) 21:21:22.91ID:aoGFDkjX0880デフォルトの名無しさん
2016/01/20(水) 21:41:23.81ID:Ci1f4cma0881片山博文MZ ◆T6xkBnTXz7B0
2016/01/20(水) 21:59:07.29ID:C563gif+void型の変数を作ること、voidにvoidを代入すること、
voidをreturnすることを可能にしてほしい。
0882デフォルトの名無しさん
2016/01/20(水) 22:02:50.07ID:7pHwgTRU純粋に興味で聞かせてほしいのだが、用途は何?
0883片山博文MZ ◆T6xkBnTXz7B0
2016/01/20(水) 22:05:20.88ID:C563gif+テンプレートによるメタプログラミングで
voidの扱いが一般的じゃないので、
「void値」というものがあれば便利だと思った次第である。
0884デフォルトの名無しさん
2016/01/20(水) 22:10:31.94ID:e8aI9wBz0885デフォルトの名無しさん
2016/01/20(水) 22:10:53.23ID:7pHwgTRU0886デフォルトの名無しさん
2016/01/20(水) 22:11:16.56ID:e8aI9wBzおれもそれ思ったことある
0887片山博文MZ ◆T6xkBnTXz7B0
2016/01/20(水) 22:13:50.51ID:C563gif+デリゲートの戻り値の扱いで壁にぶつかった。
現状では、戻り値がvoidの関数と非voidの関数を統一的に扱うことができない。
0888デフォルトの名無しさん
2016/01/20(水) 22:14:36.92ID:Ci1f4cma戻り値が無い関数の戻り値をvoid型と書いてる今の文法の方が不自然なので
この構文ならvoid値を認めた方がすっきりする
0889片山博文MZ ◆T6xkBnTXz7B0
2016/01/20(水) 22:26:20.35ID:C563gif+そのサイズはゼロである。
それは常にvoid値という特殊な値を持つ。
void型の変数にvoid値を代入できる。
voidを戻り値の型とする関数では、void値を返すことができる。
0890デフォルトの名無しさん
2016/01/20(水) 22:26:35.34ID:7pHwgTRUであれば、「delegate的オブジェクト」の受け取りインタフェースでvoid戻りオブジェクトを禁止するように規定した方がc++的な気がする。
enable_ifとかで。
出来るかわからんが。
0891デフォルトの名無しさん
2016/01/20(水) 22:27:50.99ID:I6UYKzryそうじゃなきゃ割り算命令(または逆数乗算)使うから
0892デフォルトの名無しさん
2016/01/20(水) 22:28:34.84ID:I6UYKzry0893デフォルトの名無しさん
2016/01/20(水) 22:31:36.42ID:Ci1f4cmaサイズ0を認めると問題が起きるからメンバーの無いクラスもサイズを1以上にした経緯が有るので却下
0894デフォルトの名無しさん
2016/01/20(水) 22:39:03.41ID:Ci1f4cma最後のやつについて、知ってるとは思うが
return []{}();は今でもできるぞ
0895デフォルトの名無しさん
2016/01/20(水) 22:41:51.66ID:YRRWnUr3http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0146r0.html
0896片山博文MZ ◆T6xkBnTXz7B0
2016/01/20(水) 22:46:15.23ID:C563gif+修正。
× そのサイズはゼロである。
○ そのサイズは1である。
これでどうだろう?
void *p, *q;
*p = *q;
0897デフォルトの名無しさん
2016/01/20(水) 22:54:55.15ID:j6lgTSdiそれそれ
江添のトコでも書いてたはず
0899デフォルトの名無しさん
2016/01/20(水) 23:15:44.32ID:ftWUH7Q00900デフォルトの名無しさん
2016/01/20(水) 23:19:50.39ID:6oFqVMm1低レベルな処理を書く必要あるけど、C++はいろいろイケてないから
低レベルを扱えるというコンセプトは継承しつつ、文法とかをンギモッヂイイ感じに直して欲しいという話なんすよ
以下C++のイケてないとこ羅列。
・型安全でない。少しずつ強い型付けに寄りつつあるがまだ弱い型付けが残っている。
・finalとかoverrideとかの位置がおかしい。final classとか書きたい。
・関数を = delete とかで消すのがイケてない。
・初期化リストの文法がイケてない。改行しないとクッソ長くなるし、改行すると{の位置に困る。
・; をつけるのが面倒くさい。
・if文とかで条件式を()でくくるのが面倒くさい。
・プロパティがない。
・検査例外がない。ドキュメントに乏しいAPIは、しばしば想定外の例外を投げてユーザーを困惑させる。
・Interfaceがない。多重継承は、オブジェクトのサイズを肥大化させるため嫌われる。
・メソッドの呼び出し方に.と->2通りの方法があり、使い分けが面倒くさい。
つづく
0901デフォルトの名無しさん
2016/01/20(水) 23:20:46.68ID:6oFqVMm1・virtualを書くのが面倒くさい。finalでないクラスのメソッドは、デフォルトでvirtualであるべきである。
・純粋仮想関数の= 0という文法がイケてない。
・overrideはあまり意味がない。関数がoverrideされるとき、overrideは常に必須であるべきである。
・テンプレートのtypenameを書くのが面倒くさい。
・テンプレートの実装をクラス外に書くとき、テンプレートの記述が毎回必要なのがイケてない。
・継承のアクセス指定子はデフォルトでpublicであるべきである。
・コピーコンストラクタ以外の1つ以上の引数をもつコンストラクタは、デフォルトでexplicit指定されるべきである。
・optionalが標準サポートされていない。
・標準ライブラリの命名は、一般的でないものが多すぎる。vectorやpush_backやeraseは、C++独特の命名である。
・ヘッダと実装でファイルを分ける時代は、とうの昔に過ぎ去った。
・namespaceは暗黙的に設定されるべきである。
・拡張メソッドがサポートされていない。
・C++は、C++11においてメモリ管理を安全に行う手段を手に入れたが、後付けされたそれを扱うコードはひどく冗長である。
・コピーコンストラクタとコピー代入演算子は、中身がほとんど一緒になるのに、別々に実装しないといけないのが面倒。
・テンプレートの型パラメータが満たすべき性質を制約する手段がない。
・enum型引数にenumの値を渡すとき、型は自明なので省略できるべきである。
0902デフォルトの名無しさん
2016/01/20(水) 23:21:50.36ID:ntutQCMGD か Go か Rust でがんばれ。
0903デフォルトの名無しさん
2016/01/20(水) 23:40:32.62ID:I6UYKzry0904デフォルトの名無しさん
2016/01/21(木) 00:38:23.74ID:aXQag5k7自分の不満だけ羅列されても困る。
せめて、こうしたら良くなるのに的な案も書いてくれ。
じゃないと、そうですか、としか言いようがない。
0905デフォルトの名無しさん
2016/01/21(木) 01:01:27.27ID:JOkcCaxW0906デフォルトの名無しさん
2016/01/21(木) 01:09:14.17ID:RQbtFNgKとか言ってる限りDでもダメだろう
マイ・イケテル言語を作るしかないね
0907デフォルトの名無しさん
2016/01/21(木) 01:12:53.34ID:hac+mbg1Dなら強く要望出し続けて作者に気に入られれば非互換でも変更される可能性もあるかもねという皮肉的な意味も込めてな
0908デフォルトの名無しさん
2016/01/21(木) 03:09:26.68ID:PSri+HWg0909デフォルトの名無しさん
2016/01/21(木) 08:09:19.92ID:mPKjkruo0910デフォルトの名無しさん
2016/01/21(木) 14:10:33.88ID:rjdv+GpY0911デフォルトの名無しさん
2016/01/21(木) 17:25:51.41ID:zWLKoVei878 に書いたけど、
> c/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
必要としてるのがお前なら、お前がやれ。
ここは「僕ちゃんの考えた最強言語」を披露するスレではない。別にスレを立ててそこでやれ。
0912デフォルトの名無しさん
2016/01/21(木) 23:14:47.21ID:0HmD462yよく考えられた釣りだな
>しばしば想定外の例外を投げて
>C++11においてメモリ管理を安全に行う手段を
この二つはちょっと何言ってるかわからない
0913デフォルトの名無しさん
2016/01/22(金) 21:48:23.16ID:aYF/fDXwforやwhileに名前付けるでもいいけど
0914デフォルトの名無しさん
2016/01/23(土) 10:44:17.51ID:JHPm6Jjq0915デフォルトの名無しさん
2016/01/23(土) 10:53:56.76ID:ZDlTAjvh0916デフォルトの名無しさん
2016/01/23(土) 11:20:17.95ID:JHPm6Jjqgotoと言う。
0917デフォルトの名無しさん
2016/01/23(土) 11:24:07.86ID:UiSDb3870918デフォルトの名無しさん
2016/01/23(土) 12:02:09.80ID:JHPm6Jjq0919デフォルトの名無しさん
2016/01/23(土) 12:16:37.78ID:9P3xRRKy0920デフォルトの名無しさん
2016/01/23(土) 13:48:52.61ID:ZDlTAjvhbreak [個数];
とかならラベル名を考える手間も省ける
0921デフォルトの名無しさん
2016/01/23(土) 13:51:37.99ID:7KDEJB/l0922デフォルトの名無しさん
2016/01/23(土) 14:27:31.09ID:xYcOlVg1クラス内クラスのメソッドの中で使うと何故かVisualStudioのクラスビューがバグるから困る
今はラムダがあるので、多重ループ部をラムダに抜き出して
returnで多段に抜けるのが今どきのC++風だろう
あと、仮に名前付きブロックを作ったとき、名前付きブロック内で普通のbreakした場合、
break先はどこになるんだろう
名前付きブロックを抜けるのだろうか、はたまたその外のブロックを抜けるのだろうか
0923デフォルトの名無しさん
2016/01/23(土) 14:32:20.94ID:0jILSHarlambdaはオーバーヘッド考えたら代わりにはならんでしょ
この辺Swiftなら気持よく書けるんだけどなー
0924デフォルトの名無しさん
2016/01/23(土) 14:37:03.78ID:7KDEJB/l0925デフォルトの名無しさん
2016/01/23(土) 15:02:25.67ID:qXOiofIi0926デフォルトの名無しさん
2016/01/23(土) 17:00:07.80ID:pHSKwpj1一番内側で良いけど、言われてみればラムダでもいいのかな?
なまえ指定のbreakをほしいと思ったのはswitchの使いにくさからなんだ
最近、elseifでの代用が習慣に。。。
0927デフォルトの名無しさん
2016/01/23(土) 20:43:39.77ID:xYcOlVg1名前付きブロックは勘定に入るの?
名前なしの普通のブロックはbreakのジャンプ先の勘定に入らないよね
だけど名前付きブロックは名前指定breakの対象になるってことは
名前付きブロック内で普通のbreakを呼ぶと名前付きブロックを抜けられそうにも思える
要するに名前付きブロックはどっちの仲間なの?
・for文、while文、do-while文のブロック ← breakの対象
・if文、関数、名前なしの普通のブロック ← breakの対象外
0928デフォルトの名無しさん
2016/01/23(土) 21:13:44.10ID:9P3xRRKy長文の駄文を書く前に、実装してる他の言語の仕様を見て来い
http://ideone.com/oJ6noS
0929デフォルトの名無しさん
2016/01/23(土) 22:32:51.58ID:/x5ELTU10930デフォルトの名無しさん
2016/01/24(日) 01:31:33.69ID:0dMHn0ua0931デフォルトの名無しさん
2016/01/24(日) 03:05:14.84ID:6zzJ2ABKメジャーどこじゃjavaだって実装してるよ。
まさかjava見たことないなんて幸せな環境にいるわけじゃないよな?
0932デフォルトの名無しさん
2016/01/24(日) 03:08:14.00ID:6zzJ2ABKjava以外ならAdaも実装してる。
0933デフォルトの名無しさん
2016/01/24(日) 03:11:56.52ID:6zzJ2ABK0934デフォルトの名無しさん
2016/01/24(日) 08:02:13.27ID:c5KOoDBbそんなプロプライエタリの糞IDE使わないでEclipse使えよ。
0935デフォルトの名無しさん
2016/01/24(日) 12:54:54.47ID:6/NVrtZ5逆だよ
このbreakはgotoとラベルに完全に同じだから制御構造の見通しの良さとかには
全く寄与してないってこと
0936デフォルトの名無しさん
2016/01/24(日) 13:43:22.51ID:fkWZRTEw悪いのは目? それとも頭?
0937デフォルトの名無しさん
2016/01/24(日) 13:50:04.52ID:6/NVrtZ5そのコードのラベル付きbreakを機械的にgotoに置き換えて同じ動作のコードになるだろ
0938デフォルトの名無しさん
2016/01/24(日) 13:55:40.38ID:QjBwAYFF0939デフォルトの名無しさん
2016/01/24(日) 14:27:39.48ID:fkWZRTEw確かに>>929は普通のbreakを肯定した訳ではなかった
前提を見誤った これは失礼
0940デフォルトの名無しさん
2016/01/24(日) 15:32:42.58ID:L0EPgOj+0941デフォルトの名無しさん
2016/01/24(日) 17:23:28.67ID:dfuZmhXc名前つき break は名前のついたループを抜ける機能。
ループに名前をつけないといけない時点で
goto 先のラベルを用意するのと何の違いがあるわけ?
goto が使えない C/C++ 以外の言語なら違いはあるけどさ。
0942デフォルトの名無しさん
2016/01/24(日) 17:43:53.31ID:xtpCszE9ラベル付きbreakも任意の場所じゃなくてブロックに対して名前を付けるんだから分かり難いとはいえ構造化を壊すというほどでもないし、
gotoと同じというのは言い過ぎだと思うけどな。
ただ、gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ。
だらだらとネストが深くなってるようなコードを更にブロックでネストしてもダメな構造化だ。
Javaマン的には「わかってても必要なんだよ!」ってことかもしれんけど、
そんなの考えても本当にうんざりするだけで実につまらん。
0943デフォルトの名無しさん
2016/01/24(日) 18:18:58.87ID:OiBFYb4I0944デフォルトの名無しさん
2016/01/24(日) 18:26:48.47ID:fkWZRTEw>gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ
名前指定のbreakが出来ないC++で多重ループを抜けるのにフラグを使うマヌケなコードが散乱しているというのに何を言っているんだお前は。
「更にブロックでネスト」とかアホな事言ってないで
Java言語仕様の14.7の最初の6行とか、C++言語仕様6〜6.1でも読んできた方がいいぞ
0945デフォルトの名無しさん
2016/01/24(日) 18:43:11.13ID:B29niI3eラベルは上か下のどっちにあった方が便利か
殆ど好みの問題じゃね
0946デフォルトの名無しさん
2016/01/24(日) 18:53:45.05ID:DQslD/RG0947デフォルトの名無しさん
2016/01/24(日) 18:53:50.83ID:xtpCszE9だからさぁ、どうせマヌケなのにそれが名前付きbreakになったからってどうだっていうんだ?
それのどっちがマシか議論したってうんざりするだけだろって言いたいの。
0948デフォルトの名無しさん
2016/01/24(日) 19:42:24.72ID:fkWZRTEw「どうせマヌケ」という発想がどこから湧いてきたのか不思議だ
0949デフォルトの名無しさん
2016/01/24(日) 20:07:22.34ID:dUerMYxr0950デフォルトの名無しさん
2016/01/24(日) 20:10:05.52ID:YiP+HMh40951デフォルトの名無しさん
2016/01/24(日) 20:43:29.58ID:ZJqNWdUHこんなのでいいんじゃないの
他の使い方に使わなければいいんだし
0952デフォルトの名無しさん
2016/01/24(日) 21:40:27.58ID:RJuYOlx1適切な名前を付けて、戻り値と引数を設定してやれば、ドキュメンテーションも上がるよ
0953デフォルトの名無しさん
2016/01/24(日) 21:41:45.51ID:fAWjFRDXるーぷ中からreturnしたいときはどうすんだよタコ
0954デフォルトの名無しさん
2016/01/24(日) 22:02:39.80ID:sg/AqKzOこの本を元に接尾辞配列の実装をしようとしています
ここでは配列rankをグローバル変数として宣言して,比較関数で利用しています
この配列rankを内部変数にしたいのですが,比較関数から内部変数を参照する方法ってありますか?
0955デフォルトの名無しさん
2016/01/24(日) 22:14:17.51ID:7wa58CB+クラス化してメンバ変数にするだけじゃダメなん?
0956デフォルトの名無しさん
2016/01/24(日) 22:17:43.86ID:RJuYOlx1戻り値チェックすればよいじゃん、ラムダに抜き出した時点で一つのまとまった処理になるんだからさ
少なくともフラグよりは良いでしょ
0957デフォルトの名無しさん
2016/01/25(月) 04:40:47.42ID:Ooj0Sb7l0958デフォルトの名無しさん
2016/01/25(月) 18:33:32.30ID:hFILJJKp:
while(...){
:
do{
for(...){
if(...) break,do,while;
:
}
:
:
}while(...);
:
}
//ここ
:
}
みたいな書き方できるようにして欲しい。break:do,while;でもいい
0959デフォルトの名無しさん
2016/01/25(月) 19:21:27.84ID:FsV3SdbP0960デフォルトの名無しさん
2016/01/25(月) 21:20:22.06ID:pmBmtkmx0961デフォルトの名無しさん
2016/01/25(月) 21:42:05.62ID:THeGRZ350962デフォルトの名無しさん
2016/01/25(月) 23:48:25.40ID:NUBvUwQI0963デフォルトの名無しさん
2016/01/26(火) 19:15:27.76ID:Gm6Wv9Eo<algorithm>使えよ
データの格納方法見直せよ
そもそもそんな処理を本当に自分で実装する必要があるのか考え直せよ
言語規格にケチをつけるのはその後だ
0964デフォルトの名無しさん
2016/01/26(火) 20:36:35.29ID:BCQYLgw5どうしたらいいんだ…
0965デフォルトの名無しさん
2016/01/26(火) 21:17:53.61ID:3irWjzYeマ板で愚痴ると良い
0966デフォルトの名無しさん
2016/01/27(水) 00:00:38.13ID:fwu/2NaQ0967デフォルトの名無しさん
2016/01/27(水) 00:14:12.84ID:NVZ3RE3B0968デフォルトの名無しさん
2016/01/27(水) 04:36:16.92ID:BGK1Phdbまさに使いどころで使ったじゃないか
0969デフォルトの名無しさん
2016/01/27(水) 21:56:22.98ID:tWCEbZpwgotoも許す
goto caseだけは絶対に許さない
0970デフォルトの名無しさん
2016/02/06(土) 18:23:35.87ID:K1T12T5X0971デフォルトの名無しさん
2016/02/06(土) 22:03:19.61ID:64Pydz+a0972デフォルトの名無しさん
2016/02/08(月) 21:06:04.12ID:Uaac4ssQ0973デフォルトの名無しさん
2016/02/08(月) 22:41:07.66ID:3QcKIDeA日本では ≠ が \ に割り当てられてたら面白かったのにね
0974デフォルトの名無しさん
2016/02/09(火) 01:12:05.96ID:uwbW3/OC0975デフォルトの名無しさん
2016/02/09(火) 08:50:34.71ID:nv/jsaUe!を否定とした最初の人は良いセンスしてると思うわ。文章で否定の形が強調になったりするから驚くことではないかもしれないけど。
0976デフォルトの名無しさん
2016/02/09(火) 13:18:04.91ID:i8FfOnoz0977デフォルトの名無しさん
2016/02/09(火) 14:19:19.81ID:NzQQLXim=/=
0978デフォルトの名無しさん
2016/02/09(火) 14:32:28.99ID:0vL2Anni0979デフォルトの名無しさん
2016/02/09(火) 14:35:17.82ID:i8FfOnoz0980デフォルトの名無しさん
2016/02/09(火) 21:30:45.03ID:DH+vdKhfアクセントとアクシデントは同じ意味だろ
0981デフォルトの名無しさん
2016/02/09(火) 22:38:21.75ID:T+WeLdAU0982デフォルトの名無しさん
2016/02/10(水) 02:12:38.91ID:QHgBf3oE0983デフォルトの名無しさん
2016/02/10(水) 19:39:41.28ID:FUpM9Alwそれは第二アクセントなんだが
0984デフォルトの名無しさん
2016/02/11(木) 01:31:26.66ID:yz2/azqc0985デフォルトの名無しさん
2016/02/11(木) 07:46:45.07ID:OZhLkZUr0986デフォルトの名無しさん
2016/02/11(木) 08:18:48.03ID:1o5YIpjF0987デフォルトの名無しさん
2016/02/11(木) 13:22:42.45ID:chyZ04S/語源からして違う。アクセントはad+cantus(歌!)アクシデントはad+cadere(降ってくる!)
ついでに意味も違う。
0988デフォルトの名無しさん
2016/02/11(木) 17:07:33.48ID:R5nKPKgb0989デフォルトの名無しさん
2016/02/11(木) 21:30:44.06ID:1IH1NiG/似てるから良いんじゃないか?
レス数が950を超えています。1000を超えると書き込みができなくなります。