■ このスレッドは過去ログ倉庫に格納されています
C++14/C++1z 20
- 1 :デフォルトの名無しさん:2014/09/11(木) 06:02:04.60 ID:qJWLxxew.net
- The C++ Standards Committee
http://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/
- 2 :デフォルトの名無しさん:2014/09/11(木) 16:43:25.38 ID:ojbvfKZR.net
- < `∀´>ニダー
- 3 :デフォルトの名無しさん:2014/09/11(木) 18:33:13.97 ID:K0+B6Pp2.net
- サンダー(バリバリ
- 4 :デフォルトの名無しさん:2014/09/13(土) 09:46:33.10 ID:qZU1LPcz.net
- このスレは早くも終了なのかよ
- 5 :デフォルトの名無しさん:2014/09/13(土) 20:25:43.97 ID:Y+GSO1Mi.net
- CodeLiteのスレないの?
- 6 :デフォルトの名無しさん:2014/09/16(火) 10:52:42.11 ID:zSFpHmgt.net
- VS2014のconstexprフル装備祈願
- 7 :デフォルトの名無しさん:2014/09/16(火) 19:23:26.19 ID:iJ2KM/M6.net
- >>6
先月のプレビュー版ではthread_localが入ったし
このままならconstexprは入りそうではある
https://h70tha.dm2302.livefilestore.com/y2pO_T96yqnsay4tnPVnyTEENlK3YRiIV0uKLAaDg8O1qSB5bjhnYKyUlDm2ZOU8a6rXgqV9dZGU2sHOpN3ziLXEPLJCIVH0dWYLbhJ_jGrCAs/cppconform.png?psid=1
- 8 :デフォルトの名無しさん:2014/09/17(水) 02:34:32.03 ID:epONY4U2.net
- CTPで入ってたのにVS2013のまさかのconstexpr全omitあったからまだ信用できない
costexpr完全に入ったらしばらくバージョンアップしないつもり
- 9 :デフォルトの名無しさん:2014/09/17(水) 19:49:48.85 ID:LDo1pzJu.net
- November 2013という日付をバージョン2013だとでも勘違いしたのか?
- 10 :デフォルトの名無しさん:2014/09/18(木) 13:10:26.54 ID:/Tic6iSd.net
- >>7
VS14は割と楽しみだが、VC++だけでもそろそろポータブルにしてくれんかな?
- 11 :デフォルトの名無しさん:2014/09/18(木) 13:21:54.31 ID:ITm6la/o.net
- >>10
ポータブル化したとして何GBになるんですかね……?
と言うか何気に環境変数とか管理者権限云々で開発環境のポータブル化難しくね?
- 12 :デフォルトの名無しさん:2014/09/18(木) 13:29:31.28 ID:kxzq7V59.net
- 仮想マシンじゃダメなのか
- 13 :デフォルトの名無しさん:2014/09/18(木) 23:05:37.14 ID:jPU85ALV.net
- Visual C++というかWindows SDKとかMicrosoft SDKとかPlatform SDKに含まれる「コンパイラツールセット」だよね
サイズはそんなに大きくないはず
実は丸ごとコピーして開発者コマンドプロンプトの環境変数を設定したら動くんじゃないの?
- 14 :デフォルトの名無しさん:2014/09/19(金) 01:41:57.82 ID:UwNOujrp.net
- >>10-13
The Microsoft Keyboard Layout Creatorのver1.3.4073 4.6 MBやver14 10.1MB
をインストールするとCL ver14のサブセットがbinフォルダにインストールされます。
コイツは恐ろしいことに、このツールはレイアウト情報からソースコードを生成して、
(といってもグローバル変数の初期値を書き換えるだけでコードは全て同じだが)
CLでコンパイルしてキーボードレイアウトDLLを生成するというシロモノなのだ。
なんというか、CLの無駄遣い感が半端ないぞマイクロソフトォッ!
MSKLCはインストールタイプのアプリケーションだけど、
インストール先のフォルダをコピーすれば普通にポータブルに動いた気がする。
>>13
動くんじゃないの?というか動かなかったらちょっとびっくりする。
- 15 :デフォルトの名無しさん:2014/09/19(金) 06:29:36.75 ID:POGo0wF3.net
- MSBuildは確実、clとかもそうなんじゃないかな
.netかcliで作られてるから.netインストール必須でそのバージョン入ってない環境へのポータブル化無理かな
- 16 :デフォルトの名無しさん:2014/09/19(金) 22:07:04.33 ID:NULeqarn.net
- >>14
試してみた。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かな?
- 17 :デフォルトの名無しさん:2014/09/20(土) 22:33:38.82 ID:en7FecTi.net
- >>16
XP上にインストールした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
- 18 :デフォルトの名無しさん:2014/09/23(火) 20:12:30.04 ID:49Grt2TR.net
- コマンドラインコンパイルするときそういうのはMSBuild任せにすんだよ
- 19 :デフォルトの名無しさん:2014/09/26(金) 19:11:59.86 ID:5FN85gvw.net
- http://www.microsoft.com/en-us/download/details.aspx?id=44266
- 20 :デフォルトの名無しさん:2014/10/06(月) 18:12:27.11 ID:lAgiFd+Y.net
- C++14はいつ出るの?
- 21 :デフォルトの名無しさん:2014/10/06(月) 21:54:37.57 ID:2jlCLSza.net
- 2014年中でしょ。
- 22 :デフォルトの名無しさん:2014/10/07(火) 07:46:59.59 ID:Ty8b7rWw.net
- もう出てるぞ
http://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
- 23 :デフォルトの名無しさん:2014/10/07(火) 07:56:10.18 ID:8ffJrscy.net
- 標準と標準でないものの区別がつかない低脳は
プログラミングに携わるべきではないな
- 24 :デフォルトの名無しさん:2014/10/19(日) 17:09:22.99 ID:/f9ejQX4.net
- std::arrayのbegin()呼び出しが省略できたらいいのに
- 25 :デフォルトの名無しさん:2014/10/20(月) 00:56:30.98 ID:95VZotEp.net
- beginじゃなくてdataだった
- 26 :デフォルトの名無しさん:2014/10/25(土) 21:51:58.38 ID:se+g30wO.net
- std::arrayって何か使い道あんの?
関数の戻り値に使えたりコピーが便利なくらい?
- 27 :デフォルトの名無しさん:2014/10/25(土) 21:56:38.97 ID:dFV7jCVh.net
- begin,endがあるから各種algorithmを使えたり
今はstd::begin,endあるけど
- 28 :デフォルトの名無しさん:2014/10/25(土) 22:05:50.92 ID:vC010Lko.net
- >>27
algorithmとbeginは関係無くね?
それにarrayとstd::beginは両方とも11で追加されたはず
- 29 :デフォルトの名無しさん:2014/10/25(土) 22:28:46.56 ID:JcXeoZEW.net
- 生配列でも出来るけど、array使った方が記述量減らせるってぐらいよね
std::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";
- 30 :デフォルトの名無しさん:2014/10/26(日) 05:29:02.67 ID:avQ7NUoD.net
- 質問なんだけど
http://cpplover.blogspot.jp/2014/09/c14-lambda.html
↑の途中に出てくる
struct X
{
int data = 0 ;
void get_lambda()
{ // コピーキャプチャーしているつもり
return [=](){ return data ; }
}
} ;
って、
戻り値がvoid宣言なのにラムダ返しているのなんで?
- 31 :デフォルトの名無しさん:2014/10/26(日) 05:34:24.13 ID:yJlRO0wF.net
- ミスでしょう。
- 32 :デフォルトの名無しさん:2014/10/26(日) 07:18:34.73 ID:x2QWGOO7.net
- >>30
ドワンゴ広告ウッゼーw
- 33 :デフォルトの名無しさん:2014/10/26(日) 09:13:32.77 ID:YG7wtUNO.net
- std::type_infoでも型が派生クラス型か判断ができるようになればいいのにな
型消去使うとdynamic_castが使えない場面が出てくる
any_castがダウンキャストサポートできないのもその絡みもあるようだし
- 34 :デフォルトの名無しさん:2014/10/26(日) 09:24:43.71 ID:rLkTHiAH.net
- >>30-31
その時はそれに対応したコンパイラなかったのか
それとも、脳内コンパイラで確認したってことかな
- 35 :デフォルトの名無しさん:2014/10/26(日) 16:25:33.68 ID:GFqFczi9.net
- コードは規格に基づいて理想的にコンパイルされるべきで、実装で確かめる奴はアホっていうのが本の虫の人の主張
なお理想コンパイラはよく間違えるもよう
- 36 :デフォルトの名無しさん:2014/10/26(日) 20:53:19.66 ID:4u3Xx+E7.net
- 微妙にわかる気がする。
朝から晩までコード見る度に規格と照らし合わせてると
脳内コンパイルが出来るようになって
ネイティブスピーカーの域に達した感覚になるんだわ。
それまでとは比べものにならない速さで読み書きできるようになる。
- 37 :デフォルトの名無しさん:2014/10/27(月) 13:54:57.02 ID:MTe62n5j.net
- 配列も使えるようstd::begin(array)追加したけど やっぱりarray.begin()
なんて、さっちゃんが言い出した
- 38 :デフォルトの名無しさん:2014/10/27(月) 21:25:43.77 ID:4ApD5/+I.net
- array なー、初期化リストの要素数で template 引数に与える配列サイズを省略出来れば完璧なんだけどな
- 39 :デフォルトの名無しさん:2014/10/27(月) 22:51:33.32 ID:xtFW0vyk.net
- そういやどうしてinitializer_listは型にサイズ情報が無いんだろう?
template<typename E>
class initializer_list_base;
template<typename E, int N>
class initializer_list : initializer_list_base<E>;
があったらよくね?
- 40 :デフォルトの名無しさん:2014/11/04(火) 12:36:41.71 ID:SSMCKloW.net
- >>39
initializer_list が constexpr 対応なら size メソッドで取得して、必要なサイズと合致しなければ static_assert するという方法で対応できる。
- 41 :デフォルトの名無しさん:2014/11/04(火) 14:16:39.79 ID:TAxFdUHz.net
- >>40
基本的なことですまないけど
size()がconstexprってどういうことなん?
template<typename T>
void f(std::initializer_list<T> data) {
data.size(); //constexpr?
}
呼び出し側の実引数によってsize()は変わるから
定数じゃないと思ったのだけれど
- 42 :デフォルトの名無しさん:2014/11/04(火) 15:57:15.50 ID:4Av9OkMR.net
- 初期化リスト内の要素数自体がランタイムで変化することってあったっけ…?
無いようならコンパイル時に決定できるのでは (C++14)
- 43 :デフォルトの名無しさん:2014/11/04(火) 16:19:26.58 ID:dNiQr+8C.net
- C++14のinitializer_listからはconstexprじゃないメンバ関数は全部消されたぜ
- 44 :デフォルトの名無しさん:2014/11/04(火) 16:51:59.88 ID:SSMCKloW.net
- ところで、従来から immutable な値 (const オブジェクト) は定数って用語で呼んでたと思うんだけど、
コンパイル時に値が作成されるような値の呼び名ってあるの?
なんとなく >>41 みたいな場合で「定数」っていう言葉を使うとちょっと微妙だなと思ったので。
- 45 :40:2014/11/04(火) 17:42:59.22 ID:SSMCKloW.net
- >>41
スマソ。 constexpr 関数内で static_assert は呼べないらしい。
http://boleros.hateblo.jp/entry/20130319/1363719366
でもまあ他のなんだかんだの方法で検出することは出来る程度にコンパイル時に確定してるのは間違いない。
- 46 :デフォルトの名無しさん:2014/11/04(火) 23:48:12.39 ID:Rug3DE9L.net
- 実行時定数と静的定数の区別は必要になったよねえ
constexpr関数はメタ関数に使えるから
template < int N >
struct meta_dosomething
{
- 47 :デフォルトの名無しさん:2014/11/04(火) 23:50:19.37 ID:Rug3DE9L.net
- enum { value = constexpr_dosomething( N ), };
static_assert( !value, "error!" );
};
途中で送信して泣きそう
- 48 :デフォルトの名無しさん:2014/11/05(水) 10:33:08.72 ID:J65JsdQf.net
- constexpr な関数内では変数が使えるから、
それだけでも進歩だよ
- 49 :デフォルトの名無しさん:2014/11/14(金) 17:54:24.74 ID:6MnqTsm2.net
- auto f() -> auto
{ return true; }
の二つ目のautoって何のためにあるんですか?
書かなきゃいいだけに思えるんです。
- 50 :デフォルトの名無しさん:2014/11/14(金) 18:06:11.70 ID:G/YaetuK.net
- そうだよ書かなきゃいいよ
- 51 :デフォルトの名無しさん:2014/11/15(土) 08:01:50.93 ID:TdH6O9+D.net
- auto※1 f() -> auto※2
{ return true; }
※1 型は->を見てくれ。->が無かったらreturnから推論して
※2 気が変わった。やっぱ型はreturnから推論して
- 52 :デフォルトの名無しさん:2014/11/19(水) 13:52:09.82 ID:meW/TIzh.net
- C++11/14/17 Features In VS 2015 Preview
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
- 53 :デフォルトの名無しさん:2014/11/19(水) 20:06:17.55 ID:oXOCRAV5.net
- >>52
ようやく constexpr が入るのか
わくわく
- 54 :デフォルトの名無しさん:2014/11/19(水) 20:08:37.37 ID:lJVSEwou.net
- 継承コンストラクタ入るのか
- 55 :デフォルトの名無しさん:2014/11/19(水) 21:46:53.07 ID:10cdBpQx.net
- ユーザー定義リテラル
実用性があるかしらんが楽しそう
- 56 :デフォルトの名無しさん:2014/11/20(木) 15:46:34.87 ID:4NRJHvjM.net
- boostのformatが
"x=%02X, y=%02X\n"_format % x % y
と書けたら少し嬉しい
- 57 :デフォルトの名無しさん:2014/11/20(木) 15:48:08.32 ID:4NRJHvjM.net
- あと
std::this_thread::sleep_for(5 * 1000ms)
と書けるのがすばらしい
- 58 :デフォルトの名無しさん:2014/11/20(木) 17:49:09.58 ID:VEbq8foD.net
- 忌み子だったユーザー定義リテラルさんがいよいよメジャーデビューしてしまうのか
胸が熱くなるな
- 59 :デフォルトの名無しさん:2014/11/20(木) 18:15:07.02 ID:SrHOb8b0.net
- constexpr がコンパイル時エラーとか返せると良いのだが。
ダメな引数を与えられたときとかに。
- 60 :デフォルトの名無しさん:2014/11/20(木) 18:59:33.77 ID:xKb9FhzG.net
- 定数式しか渡せないconstexpr引数が有ればよかった
- 61 :デフォルトの名無しさん:2014/11/20(木) 21:31:43.81 ID:W3wU8KPK.net
- satatic_assertでがんばる
- 62 :デフォルトの名無しさん:2014/11/21(金) 20:42:02.83 ID:e1i4D7mo.net
- #include <iostream>
constexpr 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!!
}
・・・ないな。これは酷い
- 63 :デフォルトの名無しさん:2014/11/22(土) 07:15:18.84 ID:OKQ5CsFI.net
- 質問です
decltype ( (bool const)false )
がbool const型でなくboolになってしまうようなのですが何故でしょうか?
clangです
- 64 :デフォルトの名無しさん:2014/11/22(土) 08:44:23.42 ID:nSOp3wBm.net
- constは型じゃなく属性だな
- 65 :デフォルトの名無しさん:2014/11/22(土) 11:15:48.83 ID:vkM9bADj.net
- >>63
そういうもんだから
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. (略)
- 66 :デフォルトの名無しさん:2014/11/22(土) 11:43:35.39 ID:07mFrfCY.net
- type-idはconstの有無が別だが
decltype()の中が式なので変換されるのか
decltypeに宣言の型と式の型の両方の
機能を持たせるなんて糞文法だな
- 67 :デフォルトの名無しさん:2014/11/22(土) 12:06:41.75 ID:18N8Upow.net
- autoとdecltype周りはキーワードの使い回しが激しくて嫌です。
decltype(x) y; // 特定の型として使用
[](auto p){} // ジェネリックラムダです
auto y=x; // xから察して
decltype(auto) y=x; // decltype(x)から推論
auto f() -> int {} // 型の定義は後ろを見て
auto f() -> decltype(auto) {} //returnから推論
- 68 :デフォルトの名無しさん:2014/11/22(土) 14:01:49.41 ID:uFJdFI2z.net
- >>67
4つめだけが用途思いつかないなあ。
- 69 :デフォルトの名無しさん:2014/11/22(土) 19:10:51.70 ID:G0qqsEhR.net
- >>67
4番目の意味を教えて。3番目とは違うの?
- 70 :デフォルトの名無しさん:2014/11/22(土) 19:17:06.08 ID:ROyo8ZjH.net
- 4番目は T&型がT型になるのを防ぐと思った。
- 71 :デフォルトの名無しさん:2014/11/22(土) 19:41:44.85 ID:18N8Upow.net
- >>69
decltype(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
- 72 :デフォルトの名無しさん:2014/11/22(土) 19:42:51.01 ID:18N8Upow.net
- ごめん間違えた
誤
識別子でないけどlvalue/rvalueの時はT&/T&&
正
識別子でないけどlvalue/xvalueの時はT&/T&&
- 73 :デフォルトの名無しさん:2014/11/22(土) 19:59:50.92 ID:18N8Upow.net
- 典型的な違いをもう一つ。
void f(int && v) {
auto v1 = v; // int
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
decltype(auto) v3 = (v); //式(v)は左辺値なのでint &
}
- 74 :デフォルトの名無しさん:2014/11/22(土) 22:32:21.86 ID:DmPVZ8JC.net
- 多すぎる括弧で挙動が変わることはない、と思っていたけどそうじゃないんだな
- 75 :デフォルトの名無しさん:2014/11/23(日) 00:07:36.68 ID:zh3m6fa7.net
- C++は糞文法だからね
- 76 :デフォルトの名無しさん:2014/11/23(日) 06:28:56.41 ID:uAltGaNh.net
- 11になったから、よーしパパ初期化は{}つかっちゃうぞ
とおもったらvectorは()じゃないと初期化できないな
- 77 :デフォルトの名無しさん:2014/11/23(日) 06:32:20.14 ID:gLhfEvRo.net
- ttp://ideone.com/Ymwwk4
{}使えるじゃん
- 78 :デフォルトの名無しさん:2014/11/23(日) 06:38:14.38 ID:uAltGaNh.net
- 引数が2つのとき
- 79 :デフォルトの名無しさん:2014/11/23(日) 06:39:50.75 ID:fVyePvWV.net
- >>73
std::move(v)しなくても左辺値として認識されんの?
- 80 :デフォルトの名無しさん:2014/11/23(日) 06:42:57.74 ID:gLhfEvRo.net
- >>78
ttp://ideone.com/lbUj0K
使えるけど
- 81 :デフォルトの名無しさん:2014/11/23(日) 07:08:27.11 ID:lS9ATFcQ.net
- vectorでは使えるけど、arrayで使えなきゃあんまりうれしくないけど。
- 82 :デフォルトの名無しさん:2014/11/23(日) 07:10:41.45 ID:uAltGaNh.net
- std::vector<pa> v{ 1, 2};
- 83 :デフォルトの名無しさん:2014/11/23(日) 07:58:34.18 ID:5M0zvydY.net
- >>82
何が言いたいんだ?
- 84 :デフォルトの名無しさん:2014/11/23(日) 08:05:53.99 ID:dIaKKb39.net
- そういえばVisualStudio2013だと
stringとかvectorとかを{...}で初期化しようとしたら型変換のコンパイルエラーが出たな
感覚では、{...}だとinitializer_listを引数にしたコンストラクタとして解釈されてるっぽい挙動だった
VS特有の不具合なのか言語で規定された振る舞いなのかは調べてないから知らない
- 85 :デフォルトの名無しさん:2014/11/23(日) 08:07:01.55 ID:vlSDqlqi.net
- あれだろ。initializer_listを引数に取るコンストラクターがあると
他のコンストラクターを呼び出すのに
{}じゃなく()にしないといけなくなってマヌケになるってことだろ。
- 86 :デフォルトの名無しさん:2014/11/23(日) 08:09:10.84 ID:vlSDqlqi.net
- >>84
初期化についてはVCはバグが結構あるし
MSも認識してたはず。たぶんVC固有
- 87 :デフォルトの名無しさん:2014/11/23(日) 08:09:10.85 ID:uAltGaNh.net
- {}はナローキャストを防ぐ機能がついてる。
- 88 :デフォルトの名無しさん:2014/11/23(日) 08:11:37.59 ID:5M0zvydY.net
- >>81
ttp://ideone.com/mI9C26
なんなんだこの流れ
- 89 :デフォルトの名無しさん:2014/11/23(日) 08:17:46.56 ID:vlSDqlqi.net
- >>79
もともと void f(A &&a); のaはでxvalueであって
式「a」はmoveしない限り左辺値として振る舞うぞ。
例:
void g(A &a);
void g(A &&a);
void f(A &&a) {
g(a); // g(A &)を呼び出す
}
- 90 :デフォルトの名無しさん:2014/11/23(日) 08:33:51.05 ID:vlSDqlqi.net
- >>81
array<int, 3> a = {1,2,3};
この初期化は単なるCの構造体や配列の期化構文だぞ
- 91 :デフォルトの名無しさん:2014/11/23(日) 08:42:30.96 ID:87V1WXhZ.net
- C++03でも通るしな
- 92 :デフォルトの名無しさん:2014/11/23(日) 09:03:38.65 ID:vlSDqlqi.net
- >>84
Visual 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/
- 93 :デフォルトの名無しさん:2014/11/23(日) 09:25:15.48 ID:ov3z4yP9.net
- C++14のISO改訂はまだなの?
次スレが立つまでには出て欲しい
C++15になってしまう
- 94 :デフォルトの名無しさん:2014/11/23(日) 09:49:38.07 ID:fVyePvWV.net
- >>89
あごめん右辺値と左辺値間違えた
>>73で
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
とあったからvはint &&と認識されるのかなと
- 95 :KUSO KOTE ◆unko./w.Osri :2014/11/23(日) 10:17:38.46 ID:tffEMZrq.net
- >>94
decltypeはその名の通り式の値に基づくのでなく
expression対象のもともとの宣言を流用するものゆえ。
- 96 :デフォルトの名無しさん:2014/11/23(日) 10:25:22.27 ID:fVyePvWV.net
- サンキュー
decltypeの有用性感じた
- 97 :デフォルトの名無しさん:2014/11/23(日) 10:38:38.74 ID:t4LQPotv.net
- decltype(i):変数iの宣言の型
decltype(f()):一応、関数fの宣言の戻り値の型
decltype((i)):もはや宣言(decl)と関係無い便利テクニック
((i))ってなんだよ。糞すぎる
- 98 :デフォルトの名無しさん:2014/11/23(日) 10:51:28.01 ID:uAltGaNh.net
- 名前以外の左辺式のdecltypeは&がつくからな
- 99 :デフォルトの名無しさん:2014/11/23(日) 10:59:16.48 ID:85Qt5X9k.net
- マンコ
- 100 :デフォルトの名無しさん:2014/11/24(月) 00:31:00.09 ID:QorXfa9A.net
- >>88 >>90
引数が2つのとき
- 101 :デフォルトの名無しさん:2014/11/24(月) 06:15:49.50 ID:J9vWCCAB.net
- constをつけたりoverrrideをつけたりnoexeptをつけたり
するのは自由だけどあるとつけなければならない気分になって
負担が増すばかりだな
- 102 :デフォルトの名無しさん:2014/11/24(月) 08:16:33.34 ID:0/XZ1dPC.net
- mainの引数も付けないとソワソワします
int main(int c, char *v[])
{
return safe_main(c, v);
}
int const safe_main(int const, char const *const *const argv) noexcept; // これで安心(^^)
- 103 :デフォルトの名無しさん:2014/11/24(月) 10:16:36.98 ID:XbvFM8cR.net
- >>101
> つけなければならない気分になって
付けとけば安心できるので負担と思ったことないわ
まあ、おっちょこちょいだからそれだけ痛い目にあってるだけだけど w
- 104 :デフォルトの名無しさん:2014/11/24(月) 11:28:14.71 ID:fPPxYid8.net
- fianalもきっちり付けます
struct A final {
double x, y;
};
class D final : public B {
inline virtual void Test() const noexcept final override;
};
- 105 :デフォルトの名無しさん:2014/11/24(月) 12:06:03.69 ID:+w/djodu.net
- なんでC++は修飾が後ろに書かれる文法なんだ
class X final
func() const &
func() final
func() override
class X [[deprecated]];
ポインタもconstが後ろだよな
ptr-operator:
*attribute-specifier-seq cv-qualifier-seq
これだとconst X&じゃなくてX const&と書くべき?
- 106 :デフォルトの名無しさん:2014/11/24(月) 12:22:04.44 ID:XZf3PEWH.net
- 前後で意味が変わる
- 107 :デフォルトの名無しさん:2014/11/24(月) 16:06:27.96 ID:pb79/BSn.net
- >>106
どう違うの?
- 108 :デフォルトの名無しさん:2014/11/24(月) 16:10:01.64 ID:EXpXIrWI.net
- 後ろから前から
- 109 :デフォルトの名無しさん:2014/11/24(月) 16:32:29.34 ID:Z8R6fzqg.net
- その20世紀のAVタイトルを彷彿させるセンスはまさにジジイ
っstd:back_inserter
- 110 :デフォルトの名無しさん:2014/11/29(土) 13:27:56.54 ID:Ppi1W3oY.net
- おまえらいつもどうやって勉強してんの?
規格や論文に目通してるわけ?
- 111 :デフォルトの名無しさん:2014/12/01(月) 00:27:33.95 ID:gRrDjFp+.net
- // どっちも同じく、xの参照先の値を書き換えられない
const X &x;
X const &x;
- 112 :デフォルトの名無しさん:2014/12/01(月) 00:38:01.68 ID:gRrDjFp+.net
- // どちらもxが指し示す先の値は書き換えられない。ポインタは書き換えられる.
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(); // こっちもらめぇぇぇ!!.
- 113 :デフォルトの名無しさん:2014/12/01(月) 07:46:20.98 ID:wjupjIrr.net
- >>112はDT
- 114 :デフォルトの名無しさん:2014/12/01(月) 16:04:09.98 ID:3AzrNbDE.net
- >>110
言語仕様知るのに論文読まんて
どうせ規格化されたものしか共通仕様じゃないし
#pragma once除く
- 115 :デフォルトの名無しさん:2014/12/01(月) 23:59:15.29 ID:TejZMH/v.net
- >>112みたいなコメントが書いてあったら殺害だな
int main()
{
DeviceConnect(); // アカンで.
DeviceConnect(); // ダメなのぉっっ・・・.
DeviceConnect(); // こっちもらめぇぇぇ!!.
DeviceConnect(); // もう堪忍して・・
}
- 116 :デフォルトの名無しさん:2014/12/02(火) 18:22:33.87 ID:hrM51f0J.net
- docomo deviceconnect 4回
で検索すると出てくるやつには
そんなコメントは無かった
- 117 :デフォルトの名無しさん:2014/12/02(火) 19:50:53.67 ID:4lPIVtOy.net
- ネタ解説ヨロ
- 118 :デフォルトの名無しさん:2014/12/02(火) 21:55:39.93 ID:Emi9Jogj.net
- エロゲーのやり過ぎだろう。細かいことは気にしないのが吉。
サンプルコードに
std::printf("おちんぽじゅぽじゅぽ");
とかよく見かける
- 119 :デフォルトの名無しさん:2014/12/03(水) 07:04:37.92 ID:SnuHs4CF.net
- 漫画かもしれん。
ttp://homepage2.nifty.com/kujira_niku/okayu/misa.html
>>116
これ元ネタが有ったのか
- 120 :デフォルトの名無しさん:2014/12/03(水) 13:32:05.22 ID:mmPYJ323.net
- effectiveよんでたらstd::bindがかわいそうに思えてきた
- 121 :デフォルトの名無しさん:2014/12/03(水) 17:35:36.46 ID:8JkTKL6j.net
- bind何ソレうまいの?
そろそろdeprecatedでしょ
- 122 :デフォルトの名無しさん:2014/12/06(土) 12:27:42.47 ID:JxChFgy6.net
- 超絶ウルトラ役に立つテンプレートを考えた。
template<typename T>
using type = T;
使い方はいろいろ。
auto p = type<char const *>{nullptr};
operator type<char const *>();
typedef type<int(void*)> my_func;
便利じゃね?
- 123 :デフォルトの名無しさん:2014/12/06(土) 13:19:08.05 ID:4TWdKRQe.net
- つidentity
昔からあって何度か標準入りの機会がありながらその都度拒否されている可哀想な子
- 124 :デフォルトの名無しさん:2014/12/08(月) 19:34:17.46 ID:dG3YdRcj.net
- [](){
signed int a = 10;
std::cout << "out a value : " << a << std::endl;
return a;
}();
って、実はC++11では違法だったんだな・・・何も意識せずに使ってたから気付かなかったわ
- 125 :デフォルトの名無しさん:2014/12/08(月) 21:58:03.79 ID:QJRTZs6a.net
- >124
どのへんが問題なのよ?
- 126 :デフォルトの名無しさん:2014/12/09(火) 11:42:33.43 ID:hZR3cOBJ.net
- >>125
戻り値の型推論は、ラムダの処理内容が
{
return expression;
}
の時にしか働かないはず。C++11では
C++14では全てのreturn文で曖昧さの無い同一の型を戻す場合は推論されるはず
- 127 :デフォルトの名無しさん:2014/12/09(火) 12:50:20.18 ID:g1fAS7xT.net
- 戻り値の型推論ってあんまり使いたくないな
- 128 :デフォルトの名無しさん:2014/12/09(火) 21:00:52.11 ID:jBcG0R18.net
- むしろラムダに戻り値の型を書く人を見たことがない
- 129 :デフォルトの名無しさん:2014/12/10(水) 22:56:47.16 ID:nZE7xrpC.net
- 多層ラムダが使いたくて仕方がない
- 130 :デフォルトの名無しさん:2014/12/11(木) 06:36:43.52 ID:dxPi+MRx.net
- N4228: Refining Expression Evaluation Order for Idiomatic C++
この提案通ってほしいな (若干の修正はあるとしても)
式の評価順序をいつまでも未規定のままにしてはいけない
- 131 :デフォルトの名無しさん:2014/12/11(木) 12:10:37.25 ID:u+WFZ3/N.net
- 規定してもパフォーマンス悪化はない、とする研究結果がでてそれを皆が信じない限り基本仕様にするのは無理だろうな
- 132 :デフォルトの名無しさん:2014/12/11(木) 13:05:12.88 ID:3INmN49U.net
- 素人考えだけど、パフォーマンス悪化はそれなりにある気がするんだよなあ
特に呼び出し規約がややこしい、かつ、レジスタ数の少ないマシンで
規定するとしても最近のCPUに合わせた規定になるだろうし
- 133 :デフォルトの名無しさん:2014/12/12(金) 20:26:39.09 ID:5deZ+VYw.net
- そらそうよゼロオーバーヘッドなんて幻想だ
最適化は魔法じゃない
(たとえ静的なものでも)無駄な機能の濫用は抑えてコードはシンプルにして、
クリティカルなとこはアセンブリ見てチェックする以外にないのよね
- 134 :デフォルトの名無しさん:2014/12/12(金) 20:27:30.99 ID:5deZ+VYw.net
- 誤爆した気がする
- 135 :デフォルトの名無しさん:2014/12/13(土) 07:20:21.79 ID:/fUpqDZF.net
- 提案された変更はスタックに積む順序がMSVCと逆になるので
計算してpushして、という流れを阻害するとゴネる奴が出てくる
- 136 :デフォルトの名無しさん:2014/12/13(土) 08:34:29.93 ID:NHM062eU.net
- 代入と.と->だけ決めてやればいいと思う
他は未規定でいいだろ
- 137 :デフォルトの名無しさん:2014/12/13(土) 09:20:03.10 ID:HH3VwBsv.net
- 順序を強制できるホルダーを用意しようよ
構文レベルでさ
func(REEO_LEFT(a++,a,a)); // func(0,1,1);
func(REEO_RIGHT(a++,a,a));// func(0,0,0);
- 138 :デフォルトの名無しさん:2014/12/13(土) 10:02:59.79 ID:ysyQzUOY.net
- よし新しいキーワード追加しよう。
名前は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との評価順序が指定できないので却下
- 139 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:28:19.76 ID:UaeG+OzW.net
- 順序が未規定なのがツマラン罠になってるから決めようって話なのに、罠増やすような文法足してどうする気だよw
- 140 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 14:56:17.33 ID:i/Znjmf4.net
- ゼロオーバーヘッドに固執する人がいるので
[[eo_left_to_right]] void f();//この関数内の式は左から右
みたいに明示的に使う文法にしないと荒れる。
- 141 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:08:42.62 ID:YsPzxHkX.net
- >>139
> 順序が未規定なのがツマラン罠になってるから
警告出せるようにできないもんだろうか...
- 142 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:11:30.40 ID:rg/f35yI.net
- そもそも関数毎に指定したいようなものじゃなくね?
- 143 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:51:02.17 ID:c0Duqkea.net
- 順序は関数を呼び出すときに必要なものだから、
func [[eo_left_to_right]] (a++, a, a);;
みたいな
- 144 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:55:04.14 ID:UaeG+OzW.net
- >>141
ひとつの式の中で同じ変数の変更と参照を行ってると警告、としても
a = a + 1; すら引っかかるだろうからなあ
実用的な警告の規定はそれはそれで難しそう
- 145 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 16:19:57.39 ID:UaeG+OzW.net
- そうだな、左辺値参照としての評価は値のロードよりも後回し
a = a + 1; //aの値のロード、+1、aのアドレスのロード、ストア(operator =)の順
func (a++, a, a); //aの値のロード、後ろ2つの引数のpush、a++、最初の引数のpushの順
で、ひとつの式で2回左辺値参照を取ると警告
a = a++; //=と++の両方が左辺値参照を要求するので警告
とかだろうか……
二つ目の例は>>143の意図と逆だけど、operator=で左辺は後から評価したいだろうから
- 146 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 17:04:11.57 ID:bSC9qJa5.net
- >>144
一応規格はあるし、単純なケースならチェックはできると思う
https://www.jpcert.or.jp/sc-rules/c-exp30-c.html
- 147 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 17:13:14.33 ID:Ib3n5uTG.net
- 『このルールが意味するのは、たとえば次のような文は許されるということである。
i = i + 1;』
「このルール」とやらを読んでも
そのような結論が導き出せないのだが
- 148 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 17:22:33.54 ID:UaeG+OzW.net
- >>146
CERT(やMISRA他)ルールを守る必要がある気はしないが……
operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう
でも、式だのなんだの適当に書かずに「副作用完了点」は意識するべきだったと反省。そこはありがとう
- 149 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 17:24:35.73 ID:eB2azqJA.net
- そういやCから受け継いだシーケンスポイントって用語が
最近規格から消されてるのは何故なんだぜ
- 150 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 18:18:21.96 ID:FMvzTkOT.net
- >>148
> operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう
それ副作用が発生しないから警告しちゃダメ
- 151 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 18:37:44.24 ID:UaeG+OzW.net
- >>150
C++には演算子オーバーロードという機能があってな……
- 152 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 18:51:29.60 ID:U8eX8arB.net
- オーバーロードされた演算子内で、実はグローバルな a や b を使っていても文句はいえないね‥
- 153 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 19:03:29.25 ID:54ajxy39.net
- >>151
単純なケースならと書いたはずだが?
- 154 :デフォルトの名無しさん:2014/12/14(日) 01:44:04.31 ID:3jNKm1IN.net
- >>153
ならこの単純なケースはどうなの
f(g1(), g2());
- 155 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 03:26:06.21 ID:Twa9q4id.net
- 関数の引数評価順は__fastcall、__stdcall、__cdeclの違いだろ
それ意識してたら順番になる
bool func(〜, bool& bValue);
bool bValue =fase;
if(func(〜, bValue) && bValue) ...
は最適化でbValueの変化キャッチできないケースがあった
- 156 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 03:54:35.97 ID:ahXhAHEb.net
- >>155
最近は馬鹿真面目にpushせずに、最初にスタックポインタをずらしておいて後から値をぶち込む最適化も使ってくるので
cdeclだからって必ずしも右から評価されるわけでもない
あとそのbValueの例は単なるバグでしょ
- 157 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 06:41:43.26 ID:DVcU1Dgz.net
- >>154
それ単純じゃないでしょ
コンパイル時点では、g1( ), g2( ) の中身わからないから原理的に静的チェックできない
- 158 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 10:06:22.09 ID:1gbAaHF6.net
- >>157
お前はアスペか。
チェックできないからと言ってこの程度で警告
出しまくられたら困るだろうというのが
>>148,>>154のレスな訳だが
- 159 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 10:26:30.70 ID:niKTVHiJ.net
- >>158
チェックできないから警告出すと言う設計するおバカさん乙
- 160 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 10:51:40.60 ID:ahXhAHEb.net
- なんか途中から他の人が代わりに言い争ってくれてるようなw
さて、intをラップしてint同様に振る舞うライブラリも多くあるのに、そういうので警告出せないのもな
警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ
妥協点としては、constexpr関数なら副作用無しと推定、そうじゃなければ副作用有りと推定して
推定込みで副作用の順序が未規定に触れるようだと警告する、ぐらいかなあ
それでも要らん警告まみれになりそうだけど
- 161 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 11:18:59.09 ID:uiX6InFo.net
- そんな難解なことするなら順序を固定
C/C++だけ中世の言語仕様というのはいただけない
- 162 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 11:29:17.24 ID:niKTVHiJ.net
- >>160
> 警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ
なんでそんな結論になるんだよ w
- 163 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 16:19:39.08 ID:8tq+4KOg.net
- f(a[0],a[1])とかf(a+1,b+1)とか(*p)(-a)とかでいちいち警告されてたらたまんねえよ
- 164 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 17:19:20.11 ID:DVcU1Dgz.net
- >>163
アホは割り込んでくるなよ...
- 165 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 19:53:46.71 ID:IDQMN66T.net
- C++14が12/8に最終ドラフトの投票に入ったようだけど
どこかでダンソロードできない?
- 166 :デフォルトの名無しさん:2014/12/14(日) 22:06:12.70 ID:PxebKEww.net
- 日本語訳たのむ
- 167 :デフォルトの名無しさん:2014/12/14(日) 22:11:10.92 ID:iaqWif0b.net
- 訳:ボクは馬鹿です。
- 168 :デフォルトの名無しさん:2014/12/15(月) 14:50:37.08 ID:nf/x2oQo.net
- きっと本好きな人がいいタイミングで教えてくれるさ
- 169 :デフォルトの名無しさん:2014/12/15(月) 18:27:03.70 ID:OL+lbztu.net
- FDISの承認はあと2ヶ月かかるらしいね。
もはやC++14じゃなくなった。C++15
- 170 :デフォルトの名無しさん:2014/12/16(火) 22:12:16.41 ID:Xf7YD5Lp.net
- まじでか。
でも既に完全実装品が出回ってるC++14
- 171 :デフォルトの名無しさん:2014/12/17(水) 10:40:42.42 ID:KoA4/QGg.net
- 最近gccからclangに乗り換えた
- 172 :デフォルトの名無しさん:2014/12/17(水) 14:02:17.61 ID:W7CBukf0.net
- 最近WindowsからLinuxに乗り換えた
- 173 :デフォルトの名無しさん:2014/12/17(水) 22:54:44.52 ID:hVqOiBaG.net
- 最近大橋未久から竹内真琴に乗りかえた。
- 174 :デフォルトの名無しさん:2014/12/18(木) 21:50:07.53 ID:s0aNM13b.net
- 最近浅見リリスから神崎灯代に乗りかえた
- 175 :デフォルトの名無しさん:2014/12/18(木) 22:10:37.68 ID:1U1dQxOa.net
- ISO/IEC 14882の4版が承認されて出版フェーズ来たぞ
今年じゅうに出るか?
- 176 :デフォルトの名無しさん:2014/12/23(火) 12:01:02.82 ID:BQnh9/V+.net
- なんでいつまでたってもlocale指定が国別のみなんだよ
さっさとUTF8とかUTF16とか指定出来るようにしろよ
- 177 :デフォルトの名無しさん:2014/12/23(火) 13:23:17.91 ID:ZJtK38Zj.net
- >>176
ユニコードは文字集合であって、localeはまた別の話なんだよなぁ。
「スペイン語ではchを1文字として扱い、ソート順はcの後」が望まれ、英語圏とは両立できない。
まぁ、WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢。
かといって、glibcはエラーにならないだけで、まともに実装されていないが。
- 178 :デフォルトの名無しさん:2014/12/23(火) 13:47:13.09 ID:GcvQJyK4.net
- Windows以外だとja_JP.UTF-8って感じで指定出来るでしょ
- 179 :デフォルトの名無しさん:2014/12/23(火) 14:14:38.23 ID:WKIgJwyI.net
- >>177
>WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢
MS「CライブラリじゃなくてWindows本体が
マルチバイトを最大2文字固定で作り込んで
修復不能だったわw すまんww
- 180 :デフォルトの名無しさん:2014/12/23(火) 14:56:52.46 ID:ATuB6kuL.net
- うにこーど初期「え?まるちバイトが3バイトとかないから‥そんな辺境の古代文字はそのうち消えるから知らん‥
- 181 :デフォルトの名無しさん:2014/12/23(火) 15:03:48.81 ID:egk/n0nz.net
- 楔形文字とか採用してなかったっけあいつら
- 182 :デフォルトの名無しさん:2014/12/25(木) 11:26:51.22 ID:Y5il8ylR.net
- >>178
さすがに絵文字にも文字コード振られる時代がくるとは予想出来なかった
- 183 :デフォルトの名無しさん:2014/12/25(木) 11:27:28.16 ID:Y5il8ylR.net
- アンカまちがえた
>>180
- 184 :デフォルトの名無しさん:2014/12/28(日) 13:53:45.48 ID:6AHAC7RL.net
- C++17って初期化でのinitialzer_listの扱いが何か変わる?
- 185 :デフォルトの名無しさん:2014/12/28(日) 14:21:29.61 ID:yfmtRvIy.net
- 部分特殊化がill-formedになる
- 186 :デフォルトの名無しさん:2014/12/30(火) 01:06:36.02 ID:3lD+Q1+/.net
- C++14とは何だったのか
結局2014年には出ずにC++15か
C++17もC++18に改名した方がいい
- 187 :デフォルトの名無しさん:2014/12/30(火) 05:43:08.42 ID:+7B8jKAW.net
- C++14+
- 188 :デフォルトの名無しさん:2014/12/30(火) 05:47:25.52 ID:h/Ey9oea.net
- 16進数なら20だからあと6年あるぞ
- 189 :デフォルトの名無しさん:2014/12/30(火) 06:00:16.82 ID:engT/SqQ.net
- 昔はC++1yと言ったな
つまり36進数ってこった
- 190 :デフォルトの名無しさん:2014/12/30(火) 06:09:05.64 ID:JWtJz6A1.net
- C+1
- 191 :デフォルトの名無しさん:2014/12/30(火) 22:18:02.74 ID:M4h+pRm4.net
- 変数テンプレートが特殊化/部分特殊化できないのはなんのため?
すっごく不自由なんだけど
- 192 :KUSO KOTE ◆unko./w.Osri :2014/12/30(火) 22:33:19.84 ID:TpS86nB6.net
- >>191
書き忘れたのでは。次の改定では可能になる予定。
というか、そろそろ出るはずなのだけれど。
- 193 :デフォルトの名無しさん:2014/12/30(火) 23:57:42.32 ID:1zc8xpv9.net
- >>189
それはC++1xの次ってだけじゃね。なんでxだったのかは知らない
- 194 :デフォルトの名無しさん:2014/12/31(水) 03:25:07.13 ID:50Uir9+t.net
- C++11も2011年には間に合わなかったし、もう数字やめたら?
検索もしにくいし、いいとこないじゃん?
- 195 :デフォルトの名無しさん:2014/12/31(水) 03:30:15.82 ID:Imw1KDaA.net
- ttps://www.google.co.jp/search?hl=ja&q=C%2B%2B11&lr=lang_ja&nfpr=1&gws_rd=ssl
普通に11の情報が出てくるけど
- 196 :デフォルトの名無しさん:2014/12/31(水) 03:31:48.23 ID:n+VO5zpK.net
- 2100年問題が!
- 197 :デフォルトの名無しさん:2014/12/31(水) 04:54:36.46 ID:69RlDRjx.net
- C++21
- 198 :デフォルトの名無しさん:2014/12/31(水) 06:27:41.62 ID:pQziN1CJ.net
- >>195
2012年に出版する文書に2011の名前を使うなってことでしょ。
でも規格の文書番号は「ISO/IEC 14882:2011(E)」で
ISO 9001的には文書が2011/9/1に承認されたことになっているらしい
- 199 :デフォルトの名無しさん:2015/01/04(日) 20:30:12.79 ID:8eyhX8Ev.net
- 14の次の改定の主な変更を日本語で解説しているサイトはありませんか?
- 200 :デフォルトの名無しさん:2015/01/05(月) 05:56:26.02 ID:yIG755cC.net
- まんまC++1zでググれよ
- 201 :デフォルトの名無しさん:2015/01/09(金) 04:16:20.68 ID:vwXS0V2o.net
- 目新しい話ないかな〜
- 202 :デフォルトの名無しさん:2015/01/11(日) 18:39:31.70 ID:FnSQDCUV.net
- 残念ながら特になさそうね
- 203 :KUSO KOTE ◆unko./w.Osri :2015/01/15(木) 13:15:46.99 ID:84hdTpR+.net
- ISO/IEC 14882:2015来た。
ちょっと買ってくる。
- 204 :デフォルトの名無しさん:2015/01/15(木) 18:41:24.66 ID:cjiwWuZ5.net
- >>194
普通にC+++でいいと思う。
- 205 :KUSO KOTE ◆unko./w.Osri :2015/01/15(木) 20:06:34.62 ID:vTD+rm7S.net
- 「ISO/IEC 14882:2015」と言うのを買ったら
中身は「ISO/IEC 14882:2014」と書いてあったでござる。
ISOが文書の版管理もできないとは。。
- 206 :デフォルトの名無しさん:2015/01/15(木) 22:37:23.13 ID:ih50NDRC.net
- C++++
それはC#
- 207 :デフォルトの名無しさん:2015/01/16(金) 01:20:10.69 ID:4LKVySGb.net
- C++11と比べてC++14の目玉仕様って何?
- 208 :デフォルトの名無しさん:2015/01/16(金) 01:40:07.04 ID:PwhGSXRH.net
- generic lamda
- 209 :デフォルトの名無しさん:2015/01/16(金) 01:46:55.97 ID:AShWB8/e.net
- 平均以上のC++プログラマにとっては
lambda式の拡張(キャプチャ・ジェネリック)と普通の関数の返却値型導出
加えてもっと踏み込んだプログラマにとっては
constexprの制限緩和と変数テンプレート
かな
- 210 :デフォルトの名無しさん:2015/01/16(金) 02:03:05.04 ID:4LKVySGb.net
- >>209 >>208
サンキュ。
変数テンプレートだけ知らないなー。
ちょっとggってくるわ。
- 211 :デフォルトの名無しさん:2015/01/16(金) 10:32:52.46 ID:uUQ5rBcg.net
- constexpr拡張は平均以下のC++プログラマにも利益大きいと思う。
- 212 :デフォルトの名無しさん:2015/01/16(金) 17:13:30.72 ID:xOuiDA1S.net
- STLが対応したら大きな恩恵だな
VS2015はSTLのconstexpr化しないんだっけ?
- 213 :デフォルトの名無しさん:2015/01/16(金) 22:06:52.40 ID:u6SuX1CK.net
- STL?
今から出荷される製品にそんな過去の異物はありません
- 214 :デフォルトの名無しさん:2015/01/16(金) 23:09:14.83 ID:WOASOGM6.net
- 異物ではないな、必須と言える機能のベースとなってるし
- 215 :デフォルトの名無しさん:2015/01/16(金) 23:36:00.91 ID:ggG599Ak.net
- ×異物
○遺物
- 216 :デフォルトの名無しさん:2015/01/17(土) 09:55:56.25 ID:zXscvdzs.net
- VSよ最初のプレビュー版はconstexprになってなかったけど
先日またプレビュー版が出たんだっけ。
インスコしてみるか
- 217 :デフォルトの名無しさん:2015/02/11(水) 22:46:08.24 ID:/ZRaoi8o.net
- C++はオワコン
- 218 :デフォルトの名無しさん:2015/02/11(水) 22:53:08.37 ID:5YrTgD1Z.net
- 生ポインタが触れて、ネイティブを吐けて、GCの無い言語は他にあればな
C++を書く必要のある人間は減るだろうが、
そういった人間の使う環境の足回りはどうしたって C/C++ だぞ
- 219 :デフォルトの名無しさん:2015/02/12(木) 02:11:41.54 ID:Cso7caDU.net
- C言語との互換性がいらなきゃいくらでもあるだろうが
流石に>>218は言い訳にしか聞こえん
Rustが成熟するのを待たなくたって、最近のFortranなんか
生ポインタが触れて、ネイティブを吐けて、GC無くて
モジュールがあって、OOPLで、可変長配列あって、並列処理も超充実してるぞ
- 220 :デフォルトの名無しさん:2015/02/12(木) 08:21:16.90 ID:hBWmgXOx.net
- >>219
俺は別に他に良い言語あれば乗り換えるクチだ
Forranは流石に冗談だろうが、
Rustなら処理系自体もRustで書かれているようだし、代替にはなりうるんじゃないか?
ただ、成熟するためには、まずは大手スポンサーが付く、しかも複数付く必要がある
このご時勢だと、マルチプラットフォームに対応し、オープンソースの実装があることも必要だろう
そのレベルまで達している足回り用言語を探すと、なかなかに代替品はみつからない
- 221 :デフォルトの名無しさん:2015/02/12(木) 09:50:30.77 ID:Cso7caDU.net
- いやマジでFortranは>>218や>>220の条件を全部満たしてるぞ
Intelをはじめ複数の大手スポンサーが付いてるし、対応プラットフォームも広くてオープンソースの実装もある
古い言語だからケチはいくらでも付いてるが、悪い点をあげつらう勝負ならC++のほうがずっと酷いしな
Pascalも最近はDelphiはまるでダメだが、代わりにOxygenやNimが台頭してるし上記条件は満たすだろう
規格が無く言語仕様がメーカーごとにまちまちなのでその点はC++やFortranからはだいぶ落ちるが
そこを重視するならRustなんて使えたもんじゃない
RustやD言語をもてはやす連中は何故かこの辺の言語群をスルーするんだよなあ
- 222 :デフォルトの名無しさん:2015/02/12(木) 10:16:36.80 ID:OHdOpWYk.net
- 歴史を積み重ねている分だけ現実的な問題はことごとく解決されているという安心もあるな。
まあその解決方法が綺麗なやり方とは限らないけど、現実は汚ないものなので新しい言語が頑張って解決してもやっぱりそれほど綺麗にはならないのが世の常というもので。
- 223 :デフォルトの名無しさん:2015/02/12(木) 13:26:42.76 ID:vrOhEijb.net
- end xxxって書かせるところが正気の沙汰じゃない
- 224 :デフォルトの名無しさん:2015/02/12(木) 15:40:07.09 ID:w7TqvLPe.net
- RustとかFortranとかないからw
とりあえず各アーキテクチャで動くbusybox程度のシステム実装が実用レベルになってからの話だ。
- 225 :デフォルトの名無しさん:2015/02/12(木) 17:41:21.74 ID:OHdOpWYk.net
- スーパーコンピュータ用に数値計算を並列化で頑張るなら Fortran しか選択肢がなかったりするのが実情なので C++ 処理系実装マンは頑張ってくれ。
- 226 :デフォルトの名無しさん:2015/02/12(木) 19:26:06.25 ID:fhFtYAtR.net
- Fortanの案件が年々増えてるんだよなぁ
- 227 :デフォルトの名無しさん:2015/02/12(木) 20:49:10.91 ID:/UHnUpd+.net
- 本当かよ?
あんなクソ言語書く研究者とかどうかしてるわ。
- 228 :デフォルトの名無しさん:2015/02/12(木) 20:58:08.38 ID:69w0QsPU.net
- みんな Fortran 77 の範囲でしかコードを書かないから
それ以降のFortranの新機能なんて全然枯れてない可能性が高い
- 229 :デフォルトの名無しさん:2015/02/12(木) 21:57:25.92 ID:kkCjf0Ug.net
- 昔、Fortran使ってた中年共は、あの糞MATLABに乗り換えているんじゃないかえ?
あと、Fortranに行主順のオプションがあるのには笑ったわ。C言語、C++に
合わせたのねw そりゃあ、列主順よりも行主順の方が自然だと思うわなw
しかし,C++も終わりだね。C++16なんて勝手にやってろ。糞どもが。
C#を発展させたらええ。C++の問題点を巧みに避けてね。もう禿の時代は終わったんだ。
あきらめろ
- 230 :デフォルトの名無しさん:2015/02/12(木) 22:49:44.88 ID:1NeWkOve.net
- ユニフォームイニシャライザーの糞仕様は直してもらわないと困る
- 231 :デフォルトの名無しさん:2015/02/13(金) 12:22:49.21 ID:+PsHKEax.net
- Fortranは全然ジャンルが違うだろw
Fortranで書いたカーネルVMとかねえだろ。
- 232 :デフォルトの名無しさん:2015/02/13(金) 12:25:55.80 ID:dpVVOxpY.net
- そんなこと今更ドヤ顔で言われてもω
- 233 :デフォルトの名無しさん:2015/02/13(金) 13:13:31.16 ID:yEU7o13Z.net
- >>227
HPCでパフォーマンスだすには配列のループアクセスしかない。
C、C++みたいに間接参照に頼りがち、エイリアス問題がでやすい言語はだめなんよ。
オブジェクト志向も論外。
ランダムアクセスでペナルティの少ないメモリシステムが出来ない限り
数値解析でFORTRANの地位は揺るがない。
- 234 :デフォルトの名無しさん:2015/02/13(金) 14:56:38.50 ID:O4tzh+w4.net
- >>231
探せばあるだろ、相当古い物に限られるだろうけど
なんせFortranは唯一の高級言語だった時期が結構長い
- 235 :デフォルトの名無しさん:2015/02/13(金) 15:25:45.23 ID:gZGS2CAM.net
- >>233
いつの話だよ。
最近のスパコンはほとんどFortran、C、C++のコンパイラはフロントエンド以外は共通だし、
その他ミドルウェアだって、例えばOpenMPのコンパイラやライブラリ、C/C++で書かれてるだろ。
- 236 :デフォルトの名無しさん:2015/02/13(金) 15:27:49.52 ID:gZGS2CAM.net
- 技術的にはFortranの優位性は枯れたライブラリと枯れたプログラマの既存リソースくらい。
- 237 :デフォルトの名無しさん:2015/02/13(金) 15:36:50.43 ID:O4tzh+w4.net
- >>235
そうでもない
コンパイラが最適化のために仮定できることに差があるからな
勿論バックエンドが同じだから同じコードを吐かせることもできるが、拡張キーワード付けまくりーのオプション付けまくりーのになる
- 238 :デフォルトの名無しさん:2015/02/13(金) 15:48:43.47 ID:O4tzh+w4.net
- あと、C/C++が長年入れよう入れようとして今だ実現してないモジュールやら実行時にサイズの決まるオブジェクトやらもサクッと入ってるぞ
並列化もOpenMPの反省を踏まえてco-arrayにシフトしてきてるしな
- 239 :デフォルトの名無しさん:2015/02/13(金) 15:52:19.29 ID:kSt7Ebtt.net
- スパコンなんて言語仕様より処理系実装でしょう?
貧民数値計算には言語仕様も重要だと思うが。
- 240 :デフォルトの名無しさん:2015/02/13(金) 17:23:50.08 ID:gRsKeB2m.net
- 科学技術計算でFortranが最強なのは今更語るまでもないが、
C/C++の代替を目指すD/Rustの代わりにFortranとか言われても笑うしかない。
- 241 :デフォルトの名無しさん:2015/02/13(金) 17:25:15.80 ID:GLFZ3lKo.net
- template というか汎用型もあるの?
それない言語はつまんない
- 242 :デフォルトの名無しさん:2015/02/13(金) 17:40:32.87 ID:WPBSIOvr.net
- >>233
>HPCでパフォーマンスだすには配列のループアクセスしかない。
C/C++でHPCやる場合は(素人プログラマ以外は)コンパイラにベクトル化させるんじゃなくて
最適化されたベクトル/行列演算ライブラリを直接使うんだよ
- 243 :デフォルトの名無しさん:2015/02/13(金) 17:46:44.32 ID:WPBSIOvr.net
- 付け加えると、インテル製などの一部のC/C++コンパイラは配列のループアクセスをベクトル化
できるが、OpenMPを含め、そういうのはプログラマとしては素人な数学屋さんとか
物理屋さん向けのもの
- 244 :デフォルトの名無しさん:2015/02/13(金) 17:52:50.31 ID:qJaCJPEr.net
- 大勢に影響はない
- 245 :デフォルトの名無しさん:2015/02/13(金) 17:59:40.77 ID:yEU7o13Z.net
- >>242
それこそ素人じゃん。
- 246 :デフォルトの名無しさん:2015/02/13(金) 18:11:21.96 ID:yEU7o13Z.net
- >>235
言語仕様としてaliasをみとめてて、restrictもないC++がバックエンドが同じであろうが最適化阻害してるの当たり前だろうが。
- 247 :デフォルトの名無しさん:2015/02/13(金) 19:44:33.65 ID:nAr45dUn.net
- FORTRANと言えばcommonとequivalenceを思い出す。
- 248 :デフォルトの名無しさん:2015/02/13(金) 21:28:07.17 ID:wdSxf+0q.net
- 専用スレで外の言語の話始める人って、大抵なんか重箱の隅をつつくような事例を上げて優位性を主張するよね
- 249 :デフォルトの名無しさん:2015/02/13(金) 22:07:44.06 ID:1kPxT1Pp.net
- なんでC++にはrestrictが無いの?禿が馬鹿だから?
- 250 :デフォルトの名無しさん:2015/02/13(金) 23:23:44.12 ID:yZ9EvJNI.net
- fortranの特徴ってユーザが他スレで喚くとこなのん
- 251 :デフォルトの名無しさん:2015/02/13(金) 23:39:20.41 ID:O4tzh+w4.net
- そもそも、C/C++の用途で使える言語はC/C++だけではない、という話なんだが……
Fortranは77のイメージしか持ってない奴多過ぎて、話も最適化の方面にしか行かんな
- 252 :デフォルトの名無しさん:2015/02/14(土) 00:06:03.44 ID:4tVx2rNF.net
- Fortran製の、他の言語から使える汎用ライブラリを見せてくれたら信じるわ。
- 253 :デフォルトの名無しさん:2015/02/14(土) 06:39:08.56 ID:Tkxk4fdM.net
- >>252
BLASとかLAPACKとか良くCのアプリからも使われてるの知らんか?これも計算用だけど
- 254 :デフォルトの名無しさん:2015/02/14(土) 07:07:35.83 ID:6cAGLKLO.net
- 計算機以外はねーのかよ
- 255 :デフォルトの名無しさん:2015/02/14(土) 08:52:31.27 ID:4tVx2rNF.net
- 計算用以外でたのむ。 それでやっとDSLでは無いと認められる。
- 256 :デフォルトの名無しさん:2015/02/14(土) 10:23:07.10 ID:jdFzeg2B.net
- 認められなくても何の問題もないが
- 257 :デフォルトの名無しさん:2015/02/14(土) 10:33:53.37 ID:KJLqYxlY.net
- A: FortranがC/C++の用途で使えるってことを認めろよ
B: ホントかよ。マジなら数値計算以外でマトモなライブラリあるだろ?あんの?
A: 無いよ
B: じゃあやっぱりDSLじゃねーか。C/C++の代わりとしては認められねーな
A: 認められなくても何の問題も無い
- 258 :デフォルトの名無しさん:2015/02/14(土) 10:35:40.49 ID:Coc8XA/t.net
- やっぱり認められなくてもいいです。
お時間を取らせてしまって申し訳有りませんでした。
でもボクにとってはFortranは人生です
- 259 :デフォルトの名無しさん:2015/02/14(土) 11:10:26.04 ID:Ffdv9gIp.net
- そうですか
ここはC++のスレですのでくだすれFortranのスレに移動をお願いします
- 260 :デフォルトの名無しさん:2015/02/14(土) 18:46:45.09 ID:sFHU6bVn.net
- 時間を取ったのはどうでもいい
でもC++専用スレで他言語が人生とか語られても片腹痛い
- 261 :デフォルトの名無しさん:2015/02/14(土) 19:16:58.38 ID:hv/hxM1q.net
- restrictってC99のrestrictのこと?
あんな予約語時代遅れでしょ
restrict修飾なくても同様の最適化は自動で可能
- 262 :デフォルトの名無しさん:2015/02/14(土) 19:44:53.46 ID:X7Vdi7/j.net
- インラインなら最適化できるかもしれないけど、関数の引数とかだと無理じゃね? 呼び出し側がどんなアドレス渡してくるかなんて分かんないし
- 263 :デフォルトの名無しさん:2015/02/14(土) 19:57:58.87 ID:0HcNv3Vt.net
- 今時リンク時最適化が普通じゃね?
- 264 :デフォルトの名無しさん:2015/02/14(土) 20:00:30.71 ID:c5GE7VHu.net
- 共有ライブラリもリンク時最適化できるの?
- 265 :デフォルトの名無しさん:2015/02/14(土) 21:00:12.31 ID:+Y8SOq6f.net
- >restrict修飾なくても同様の最適化は自動で可能
明らかに不可能なことを
もっともらしい用語を並べて
スレを荒らすな
- 266 :デフォルトの名無しさん:2015/02/14(土) 21:11:08.48 ID:vNjYGoXz.net
- >>262
最近は LTO という仕組みがあるんやで。
リンカが中間構文木をコンパイラに戻してあらためて最適化したりする。
渡されるポインタ (配列) の範囲がかぶるかどうか看破することは可能。
- 267 :デフォルトの名無しさん:2015/02/14(土) 21:13:51.65 ID:KJLqYxlY.net
- マジで同様の最適化が可能なら
停止判定問題も解けるぞ
新事実だな頑張れ
- 268 :デフォルトの名無しさん:2015/02/15(日) 01:22:06.02 ID:UOWPKbNm.net
- >>267
頭悪
最適化のことを最適解を見つけ出すと勘違いしてる阿呆並。
- 269 :デフォルトの名無しさん:2015/02/15(日) 01:31:58.99 ID:pg1XKTVq.net
- 反論できないからってレッテルはって逃げようとするの良く無い
実際、主要なC++コンパイラに__restrict__拡張があるくらい有効
- 270 :デフォルトの名無しさん:2015/02/15(日) 08:52:17.00 ID:PHrUZGDg.net
- restrictを使わないと最適化できないコードは確かに存在する。
同時にrestrict修飾を行わなくとも自動で最適化できるコードも存在する。
安易なrestrict修飾はわかりにくいバグを埋め込む原因にもなる場合があるし、
手動でrestrictしなければ最適化できないコードは書くべきではない。
inline修飾並に時代遅れだし、inline修飾以上に害悪。
- 271 :デフォルトの名無しさん:2015/02/15(日) 08:59:29.60 ID:PHrUZGDg.net
- >>267
最適化は常にプログラムの動作を全て最適なものにする処理ではない。
効用の増加に伴い準指数時間超で解析に掛かる時間が増えていくので通常は途中で打ち切る。
restrictに関わらず、最適化の余地を残さず処理を施すのであれば、それはどれも停止判定問題に属する。
- 272 :デフォルトの名無しさん:2015/02/15(日) 09:02:13.84 ID:PHrUZGDg.net
- >>269
__restrict__拡張の目的はコンパイラの判定に関わらずメモリの重複がないとプログラマが強制的に宣言するもの。
その需要はforce inlineの位置に近い。
- 273 :デフォルトの名無しさん:2015/02/15(日) 09:05:05.63 ID:PHrUZGDg.net
- 死ね
- 274 :デフォルトの名無しさん:2015/02/15(日) 09:14:35.52 ID:vlkDTTJ8.net
- バカほど長文を好むな
デメリット→わかりにくいバグを埋め込む
メリット→都合が悪いので触れず。時代遅れでごまかす
これがrestrict否定派の主張のすべて
- 275 :デフォルトの名無しさん:2015/02/15(日) 09:17:24.08 ID:PHrUZGDg.net
- 自分で調べろカス
- 276 :デフォルトの名無しさん:2015/02/15(日) 09:36:30.07 ID:k13A89i2.net
- てか、現実的にはc++でrestrict使えないから最適化に不利云々って話は存在しない。
環境依存とはいっても、実在のコンパイラはほぼ間違いなく対応しているから移植性の問題もないし、例え対応していない環境でも遅くなるだけでdefine一つでなかったことにできる。
それが有効な場面でrestrictを知っていて書かないとかないし、ライブラリ側がそうなっていれば使う側は無意識に恩恵にあずかることが可能
- 277 :デフォルトの名無しさん:2015/02/15(日) 09:46:56.34 ID:Mzsi91Ys.net
- >環境依存とはいっても、実在のコンパイラはほぼ間違いなく対応しているから移植性の問題もない
だからさっさと標準化しろって話なんだけど?
- 278 :デフォルトの名無しさん:2015/02/15(日) 12:49:01.38 ID:0lwrVYis.net
- volatileは標準化するくせにrestrictを拒否する謎
- 279 :デフォルトの名無しさん:2015/02/15(日) 12:56:05.36 ID:k+aSZwci.net
- 標準化委員会は適当だからな。
昔入ったものはともかく新しいものを無駄に嫌う。
alignasとか糞キーワード増やしてないで[[restrict]]入れとけっての
- 280 :デフォルトの名無しさん:2015/02/15(日) 17:03:20.38 ID:lDLakZlT.net
- >>266
共有ライブラリもリンク時最適化できるの?
- 281 :デフォルトの名無しさん:2015/02/15(日) 17:12:19.38 ID:m7R4D9qI.net
- 昨日の恥ずかしい奴が発狂して帰ってきててウケる>ID:PHrUZGDg
- 282 :デフォルトの名無しさん:2015/02/16(月) 12:58:07.83 ID:3pQJG7SS.net
- restrictはプログラマ側に正常動作の責任をおっかぶせ過ぎではある。
alias出来ないポインタとか新しい概念でコンパイラ側が頑張る仕様にしないと。
- 283 :デフォルトの名無しさん:2015/02/16(月) 14:22:43.29 ID:Uy9DHC+A.net
- > alias出来ないポインタ
それがrestrict修飾されたポインタなのでは?
C++のobjectに対するrestrictの意味を考えるのは、労ある割には益が少ない。
けどないと、Cのライブラリを呼び出す時は不便だよな。
extern "C" の時だけ使えれば十分では?
- 284 :デフォルトの名無しさん:2015/02/16(月) 14:59:40.87 ID:3pQJG7SS.net
- >>283
違う。
restrictはプログラマ側にエイリアスないつもりでいくから、ちゃんとしとけよという
プログラマ側への強制だったりする。
一方、コンパイラとしては、restrictはアグレッシブな最適化をしてもよいという許可であって
最適化しないでするーしてもいい。
- 285 :デフォルトの名無しさん:2015/02/16(月) 15:11:47.88 ID:yzFhOePD.net
- restrictポインタの意味がイマイチよくわからないんだよなぁ
memcpyとmemmoveの違いを例で目にするが、restrictされるのはポインタが指す領域なのか?
指す領域のバイト数が第3引数というのはどこから読み取ればいいんだ?
たまたまmemcpyだから第3引数はバイト数だと知っているが、
他の名前の関数で、例えば第3引数の2倍のバイト数が領域の場合はどう表現するんだ?
MicrosoftのSAL拡張ほどの表現力があれば、まだ動作のイメージはできるんだが……
- 286 :デフォルトの名無しさん:2015/02/16(月) 15:43:32.79 ID:eXIsD5sf.net
- C++にはテンプレートがあるから
restrictなんて仕組みが必要なかったんじゃないか?
- 287 :デフォルトの名無しさん:2015/02/16(月) 15:55:45.78 ID:iU8n1Okp.net
- 禿がいってるように、便利でもややこしい仕様は使わない。結局、
トラブルの元になって使い物にならない。
どうでもいい細かい仕様を得意げに書いてる馬鹿がいるが、こいつらは
上司からも部下からも馬鹿にされていることに気づいていない
- 288 :デフォルトの名無しさん:2015/02/16(月) 18:44:41.92 ID:wAVd4uvS.net
- >>285
restrict ポインターの指す領域や
restrictポインターに加減算して得られたアドレスの領域が
他の引数由来の領域とかぶらないってだけじゃないの
明確じゃないか
- 289 :デフォルトの名無しさん:2015/02/16(月) 19:18:57.00 ID:yzFhOePD.net
- >>288
そういう、ふんわりとした意図はわかるんだけど、
char mem[30];
memcpy(mem, mem + 10, 10); // ← OK
memcpy(mem, mem + 10, 20); // ← NG
なわけでしょ? 第3引数で意味が変わるから、専用の型を持てず、コンパイルエラーも出せないんじゃないの?
memcpyの提供側は、restrictの有無に関わらず被らない前提で実装するだろうし、
memcpyを使う側は、restrictがあるからといって使い方のミスをコンパイラに教えてもらえる保証がない。
ドキュメントやコメントに「被らせるなよ」と記す以上の効果を提供できるんだろうか?
- 290 :デフォルトの名無しさん:2015/02/16(月) 19:49:09.76 ID:9v9OeP8e.net
- ・被らせちゃいけないことをドキュメントやコメントに書かなくても表現できる
(ただし被らせてもエラーになるわけではない)
・被ってないこと前提の最適化をコンパイラが出来るようになる
ということ
- 291 :デフォルトの名無しさん:2015/02/16(月) 20:31:52.18 ID:JjLEtIMd.net
- registerみたいなもんで、コンパイラはやってもやらなくても良い。
ただし、プログラマ側にはエイリアスがないことを保障する義務がある。
めんどうくさいだけで効果があるかどうかわからないという。
やっぱ言語仕様としてfortranのようにポインタではない配列がないと。
複素数も言語仕様レベルで欲しい。
- 292 :デフォルトの名無しさん:2015/02/16(月) 20:38:46.89 ID:0bcBlPt4.net
- またfortran君か
- 293 :デフォルトの名無しさん:2015/02/16(月) 20:44:32.41 ID:T5MheqpD.net
- >>291
そんな面倒くさく無い上に効果はあるんですけどね
- 294 :デフォルトの名無しさん:2015/02/16(月) 20:53:08.48 ID:yzFhOePD.net
- >>288
もう一度読み直したら、自分が誤解してた。
その処理内で触る、あるrestrictポインタからの連続した領域と、
他のrestrictポインタからの連続した領域に重なりが無い、と解釈すれば、
実際のサイズが明記されていなくても最適化には役立つんだね。
コンパイラがどうやってメモリ領域のサイズをチェックするのかばかり考えてた。 すまぬ。
- 295 :デフォルトの名無しさん:2015/02/16(月) 21:38:08.15 ID:JjLEtIMd.net
- >>292
そもそも、今時fortranとか言い出したアホが悪い。
使われるには理由がある。
C++はC++らしく使おうとしたら間接参照の嵐になるし、
fortranぽく使おうと思ってもエイリアス問題が出る。
HPC用にはfortranでいいわけで、今時とかそういう話をしてもしゃーないと。
そんだけ。
- 296 :デフォルトの名無しさん:2015/02/16(月) 21:54:17.59 ID:H27f7K4Z.net
- 名前を言ってはいけないあの言語か何か
- 297 :デフォルトの名無しさん:2015/02/16(月) 21:57:55.86 ID:sA+mR1Lp.net
- FORTRANにはCOMMONとEQUIVALENCEが… は、置いといて…
C、そしてC++も配列型はポインタへ自動変換されるだけで別の型なんだけどな。
関数の引数としても渡せるし。ただし問題はそこではない。
ところでFORTRANは配列は値渡しなの?
そうじゃなきゃC++とエイリアスの問題は同じじゃん。
- 298 :デフォルトの名無しさん:2015/02/16(月) 22:20:05.31 ID:8eApH2Qw.net
- >>297
>関数の引数としても渡せるし
ここだけは違う。引数リスト中で配列のように書いてもポインタになる。
- 299 :デフォルトの名無しさん:2015/02/16(月) 22:24:48.99 ID:0bcBlPt4.net
- CはそうだけどC++なら配列の参照を渡せる
- 300 :デフォルトの名無しさん:2015/02/16(月) 22:37:31.33 ID:L2tliPgO.net
- >>299
すみません。よーく読んでみると、意味がわかりません。
配列名を定数ポインタとして使えば良いじゃん。
それとも、テンプレート関係で配列の参照が要るのかよ。めんどくさい言語だよ。
もう、C#とか次世代の言語に任せろよ。MFCくらいに面倒なんだよ。
- 301 :デフォルトの名無しさん:2015/02/16(月) 22:40:04.07 ID:L2tliPgO.net
- そろそろ、息の根を止めるべき言語だと思うけど。
禿もいつ死んでもおかしくない歳だし
- 302 :デフォルトの名無しさん:2015/02/16(月) 22:43:23.90 ID:l2mG8606.net
- >>301
なんでこんな所いんの?
- 303 :デフォルトの名無しさん:2015/02/16(月) 22:43:48.20 ID:0bcBlPt4.net
- そう思うならC#のスレに逝けばいいと思うよ
- 304 :デフォルトの名無しさん:2015/02/16(月) 22:46:52.78 ID:sA+mR1Lp.net
- 確かに1次元目はポインタになるな。なんてこったい。
まあでもエイリアスには影響しないよね。
配列の参照渡しも、配列またはスカラーへのポインタだった変数が関数内で変更できても変わらない。
- 305 :デフォルトの名無しさん:2015/02/16(月) 22:48:14.13 ID:l2mG8606.net
- 配列名を定数ポインタってなに?FORTRAN語?
- 306 :デフォルトの名無しさん:2015/02/16(月) 22:57:24.19 ID:9v9OeP8e.net
- >>295
一部の分野で今でもFORTRANが使われてる理由はそんなことじゃないと思うがね
そういう分野では歴史的にFORTRANに慣れてる人や既存のコードが多いからというだけだろ
FORTRANだってHPCするときはスピードネックになるところではBLAS/LAPACKを呼び出すわけだろ?
んでBLAS/LAPACKの高速な実装はCやアセンブラで書かれてるわけだ
- 307 :デフォルトの名無しさん:2015/02/16(月) 23:01:55.79 ID:l2mG8606.net
- C言語もFORTRANもスレ違いなんですが
- 308 :デフォルトの名無しさん:2015/02/16(月) 23:04:53.44 ID:8eApH2Qw.net
- >>306
LAPACKはFortran製だって上にあるじゃんよ
- 309 :デフォルトの名無しさん:2015/02/16(月) 23:06:03.73 ID:L2tliPgO.net
- 大学の爺はFORTRANなんて使わないよ。MATLABを使うんだよ。
Mathematicaも使いこなせないw
- 310 :デフォルトの名無しさん:2015/02/16(月) 23:06:23.67 ID:VIjVttWA.net
- >>308-309 荒らすなボケ
- 311 :デフォルトの名無しさん:2015/02/16(月) 23:09:06.67 ID:L2tliPgO.net
- >>305
わかった。わかった。馬鹿は黙ってろ
- 312 :デフォルトの名無しさん:2015/02/16(月) 23:13:22.46 ID:9v9OeP8e.net
- >>308
もとの実装はね
でも高速化された実装、例えばGotoBLASとかはコア部分はアセンブラで最適化されてる
- 313 :デフォルトの名無しさん:2015/02/16(月) 23:27:40.46 ID:l2mG8606.net
- 誰か配列名を定数ポインタってなんなのか教えてよ
配列の参照渡せることも、それのメリットも知ってるけどC言語に同等のものがあるなんて知らなかったよ
- 314 :デフォルトの名無しさん:2015/02/16(月) 23:27:55.96 ID:9v9OeP8e.net
- ちなみにC++向けの行列演算ライブラリとして評判が良いEigenのベンチマーク
http://eigen.tuxfamily.org/index.php?title=Benchmark
高速化されていないBLASより遥かに速いし、Intelプロセッサ向けに最適化された
商用のMKLやGotoBLAS2に迫るパフォーマンスを出している
これはFORTRANのコンパイラによる最適化の無力さを表していると思う
- 315 :デフォルトの名無しさん:2015/02/16(月) 23:30:59.52 ID:0bcBlPt4.net
- >>313
配列名の識別子は配列の先頭アドレスを表すことを言いたいんじゃないかな。そもそもC++でいう参照が何か全く理解しないで批判しているものと思われる
- 316 :デフォルトの名無しさん:2015/02/16(月) 23:37:30.57 ID:JjLEtIMd.net
- >>306
原理上行列演算に落とせるからといって、
数値計算で行列演算に落としてBLASまかせにするのがいいとは限らない
- 317 :デフォルトの名無しさん:2015/02/16(月) 23:38:07.00 ID:s0ySUBJd.net
- >>315
いやいや、そんな人間がこんな所に来るわけないじゃないか。
- 318 :デフォルトの名無しさん:2015/02/16(月) 23:41:13.75 ID:0bcBlPt4.net
- それもそうだな。俺が馬鹿だった。いくらなんでも配列の参照が何か分からない人間が他の言語とC++を比較して批判なんてできるわけないよな
- 319 :デフォルトの名無しさん:2015/02/17(火) 00:01:08.91 ID:R49GSZUF.net
- Eigenとやらを覗いてみたら、案の定__restrictが使われてるわけだが
やっぱりさっさと入れろよこれ……
- 320 :デフォルトの名無しさん:2015/02/17(火) 00:09:47.62 ID:pCoLYmoP.net
- 当然のことながら、ループ間で依存関係がないと保障されない限り
ベクトル化やSIMD化してくれんしな。
とはいえ、restrictやコンパイラ独自pragma持ってても、
コンパイラ様のお気に召すソースの書き方しないと並列化してくれないんだよね。
- 321 :デフォルトの名無しさん:2015/02/17(火) 00:41:43.25 ID:PFysqCso.net
- >>319
EIGEN_RESTRICTの#defineを見てもコンパイルオプションでEIGEN_DONT_USE_RESTRICT_KEYWORD
が定義されない限り__restrict使うようになってるからね
誰かも言ってたけど実質的にメジャーなコンパイラでは__restrictはサポートされてると思って良いということだろ
- 322 :デフォルトの名無しさん:2015/02/17(火) 00:52:11.85 ID:T1al5/bY.net
- 何もしてないってわけじゃないみたいだけど、何で話が止まってるのかよくわからない。
N3988 (2014-05-23): Towards restrict-like aliasing semantics for C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3988.pdf
- 323 :デフォルトの名無しさん:2015/02/17(火) 00:59:35.61 ID:5Y72KlE+.net
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4150.pdf
- 324 :デフォルトの名無しさん:2015/02/17(火) 22:47:56.75 ID:17lLv4ax.net
- >>318
なんだ機能かよw 配列の個数のチェックができるのが利点?呪文みたいな
コード書いて職場で得意になってるんだろ? 馬鹿が。
それともテンプレートテクニックで使うというのかい?
まったく、くだらん機能だ。おタクの糞だけ使ってろ
- 325 :デフォルトの名無しさん:2015/02/17(火) 22:49:52.40 ID:17lLv4ax.net
- なんだ機能かよw→なんだこんな糞機能かよ
- 326 :デフォルトの名無しさん:2015/02/17(火) 22:59:44.50 ID:+XI3A1OA.net
- 配列の参照はC++にしか無いが配列のポインターはCにもある。
本質的には参照と何も変わらない
int a[10];
int (*a)[10] = &a;
(*a)[0] = 0;
- 327 :デフォルトの名無しさん:2015/02/17(火) 23:00:25.01 ID:+XI3A1OA.net
- ↑ちょっと間違えた。
int a[10];
int (*pa)[10] = &a;
(*pa)[0] = 0;
- 328 :デフォルトの名無しさん:2015/02/18(水) 00:38:15.47 ID:c/tcZvht.net
- 配列の個数をチェック出来るだけのコードが呪文みたいってどんだけー
- 329 :デフォルトの名無しさん:2015/02/18(水) 08:11:21.33 ID:04Uy6nsI.net
- 配列が絡んだ変数宣言の気持ち悪さはどうしようもないな
using を使えば多少マシになるか?
- 330 :デフォルトの名無しさん:2015/02/19(木) 14:18:34.76 ID:Nf1QZOin.net
- >>322
Cと同じの入れてもC++的にはいまいちだから。
- 331 :デフォルトの名無しさん:2015/02/19(木) 19:42:53.69 ID:Qw0v9eHu.net
- C++標準としてSTL押しなわけじゃん。
コンテナ操作にrestrictをどう取り込むかとか難しいわな。
最適化の努力目標であって確約じゃないrestrictのために
restrict_vectorとか作ってもなぁ。
- 332 :デフォルトの名無しさん:2015/02/19(木) 19:43:30.70 ID:4dC5fmDk.net
- ???
- 333 :デフォルトの名無しさん:2015/02/19(木) 20:01:43.05 ID:7oFSdK4O.net
- restrictは型にするのか?とか暗黙でrestrictへ変換できていいの?それってC++の思想とちがくね?とか、型だったらrestrictあり版無し版でオーバーロード出来るの?とか
色々決めなきゃいけないことがある訳ですよ
- 334 :デフォルトの名無しさん:2015/02/19(木) 20:04:02.20 ID:MJrK0vGE.net
- Cのrestrictはcv修飾の一種ということになってる
そのままC++に導入したら、restrict付きの型でオーバーロードできることになるけど、
void func(restrict void* a, restrict void* b);
この場合aとbは別のメモリ領域とみなしていい。それは構わない
では、この関数内で
auto c = a;
としたら? cv修飾ならcの型はrestrict void*だ。でも実はaのエイリアスだ。
関数内でしか使用しないローカル変数なら問題ないけど、ほかの関数をaとcを引数にして呼び出すと、restrictなオーバーロードが優先して呼び出される。
実際はメモリ領域が重複してるので、これは未定義動作だ。
という訳で単純にcv修飾として導入できない
- 335 :デフォルトの名無しさん:2015/02/19(木) 20:40:58.69 ID:TS7jO9Iz.net
- つまり速度的な観点から言って
C++はCよりウンコってことだね
- 336 :デフォルトの名無しさん:2015/02/19(木) 20:43:12.50 ID:MJrK0vGE.net
- そうだね、C使ってなさい
- 337 :デフォルトの名無しさん:2015/02/19(木) 20:56:18.67 ID:8cdcdnUEz
- begin/endがunique_ptrを返すとか?
- 338 :デフォルトの名無しさん:2015/02/19(木) 20:55:46.40 ID:YKDWyqEz.net
- restrictポインタは std::unique_ptr と意味的に似ている面もあるけど、扱いが面倒だな。
C++だと用途的には std::valarray もあるし、特定のクラスを特別扱いするような方向で取り込んで欲しい気もする。
- 339 :デフォルトの名無しさん:2015/02/19(木) 21:54:56.98 ID:bIU6Qc54.net
- Cのマネして形の一部にすると発狂必死
C++には属性が有るんだから
restrictはattribute指定子 一択だろ
char * declarator-id [[restrict]]
- 340 :デフォルトの名無しさん:2015/02/19(木) 22:01:58.07 ID:Qw0v9eHu.net
- unique_ptrが言語レベルでの型ならともかく、
unique_ptrに食わした生ポを他が握ってててもいいわけで
やったら死にそうだけど。
- 341 :デフォルトの名無しさん:2015/02/19(木) 22:05:37.58 ID:OBGtJlAr.net
- >>331
なんで標準規格の話にSTLみたいな
廃れた過去のものが出てくるのですか?
- 342 :デフォルトの名無しさん:2015/02/19(木) 22:16:30.20 ID:MJrK0vGE.net
- 標準規格はコア言語機能とSTLの二本から成り立ってるんですが
- 343 :デフォルトの名無しさん:2015/02/19(木) 22:29:06.06 ID:7oFSdK4O.net
- >>323
に書いてるけど最近はalias_set()っていうattributeにする提案が挙がってる。
流し読みしてみたけどタグとかよくわからんかった
- 344 :デフォルトの名無しさん:2015/02/19(木) 22:54:04.76 ID:Qw0v9eHu.net
- >>341
ええええええ
廃れてるのかよ。
moveとかunordered_mapとかc++11で入ってきたのに?!
- 345 :デフォルトの名無しさん:2015/02/19(木) 23:34:23.07 ID:3CBExIvY.net
- >>342
荒らすなボケ
お前みたいな低脳発言する奴がいるから
STLの定義のコンセンサスがどうとか言いだす奴が出てくる
- 346 :デフォルトの名無しさん:2015/02/20(金) 12:03:03.78 ID:b77POhTv.net
- B. Stroustrup and A. Sutton
A Concept Design for the STL
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3351.pdf
- 347 :デフォルトの名無しさん:2015/02/20(金) 15:25:12.54 ID:8Is4JBs/.net
- ISO/IEC 14882:2014にSTLなどという用語は出てこないのに
URL貼るだけの低脳はどうしようもないな
- 348 :デフォルトの名無しさん:2015/02/20(金) 22:20:22.64 ID:zOUglcHa.net
- 975 デフォルトの名無しさん sage 2014/12/17(水) 22:25:56.74 ID:G53RorvD
・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。
意味もなく文頭に付けておくのがトレンド👀
- 349 :デフォルトの名無しさん:2015/02/21(土) 06:20:28.27 ID:FlDtTMp/.net
- 少なくともstringとiostreamはSTLではない
- 350 :デフォルトの名無しさん:2015/02/21(土) 06:50:30.28 ID:E5FitgPs.net
- 標準(standard)のtemplateのlibraryだからな。
日本語で書かれたら何らかの特別なものって扱いも出来るだろうが、原文だと混乱するのは当たり前
- 351 :デフォルトの名無しさん:2015/02/21(土) 07:20:13.17 ID:5TYZO6lJ.net
- テンプレートでも何でもないstd::exceptionとかも
STLだと考えてる人も多いようだが
- 352 :デフォルトの名無しさん:2015/02/21(土) 07:38:41.63 ID:naHue2Us.net
- >少なくともstringとiostreamはSTLではない
これは確かにそうだけど
STL版のiostreamも存在するよね
すごく紛らわしい
- 353 :デフォルトの名無しさん:2015/02/21(土) 08:00:30.33 ID:78/Ireu0.net
- std::stringもstd::iostreamもテンプレート使われてるのに?
正直どっちでもいいし、個人的には標準ライブラリとか標準コンテナと呼ぶけど、拘る人の執着っぷりは尋常じゃないのを感じるよね。
広島風お好み焼きを広島焼きいうなっていう広島人と、大阪風お好み焼きのみが唯一無二のお好み焼きだっていう大阪人みたいな。
- 354 :デフォルトの名無しさん:2015/02/21(土) 10:23:37.87 ID:hSp51/ZE.net
- C++の標準はお好み焼きだったんだ
- 355 :デフォルトの名無しさん:2015/02/21(土) 10:44:41.39 ID:b3TAXLfH.net
- テンプレートとSTLってどっちが先にできたの?
もちろんテンプレートが無ければSTLは書けないとは思うけど、
STLができるまでテンプレートの存在意義が無かったような?
string も iostream も大昔は非テンプレートだったはずだし
- 356 :デフォルトの名無しさん:2015/02/21(土) 10:50:26.23 ID:U+VRYI5S.net
- えっω
- 357 :デフォルトの名無しさん:2015/02/21(土) 10:50:33.86 ID:4hTepQjD.net
- >>353
国際規格ってのはそういう異論だらけの主張の間に一応形成された合意だよ
むしろ技術者が不正確な用語であるSTLを使う方が不思議
>>355
テンプレートが先でしょ
stringがテンプレートじゃなかったってホント?
- 358 :デフォルトの名無しさん:2015/02/21(土) 10:56:46.75 ID:4hTepQjD.net
- >iostreamもテンプレート使われてるのに?
こういうレスを見ると
コピペもあながち間違いじゃないとは思うわ
『話し手双方の認識がずれているのに
不思議と会話できてしまった気分にさせてしまう魔法の言葉STL』
- 359 :デフォルトの名無しさん:2015/02/21(土) 12:10:24.03 ID:5NiNn0Ae.net
- 技術文書を読む際にある表現が
用語(term)かどうか見分けられない奴は
プログラミングをやめた方がいい
あとURL貼るだけの低脳も
- 360 :デフォルトの名無しさん:2015/02/21(土) 12:31:39.53 ID:d5O+uncj.net
- 死ね
- 361 :デフォルトの名無しさん:2015/02/21(土) 12:34:39.18 ID:Qj5PkULS.net
- たしかにMSDNの自動翻訳は糞すぎる
- 362 :デフォルトの名無しさん:2015/02/21(土) 14:49:14.01 ID:78/Ireu0.net
- >>359
標準化WGですらSTLって言葉使ってるのにここでSTLって言葉出しただけでそんな言葉はC++にないって噛みつくやつもどうかと思うけど
”こいつはC++の規格で定められた用語だと思ってSTLって言葉を使ってる”というのを見分けれる力を持ってんの?
- 363 :デフォルトの名無しさん:2015/02/21(土) 15:10:08.37 ID:qawIJ4u+.net
- 初期のテンプレートとSTLとともに整えられたテンプレートはほぼ別物じゃね
- 364 :デフォルトの名無しさん:2015/02/21(土) 15:23:20.38 ID:s76k4WVR.net
- 反面教師だな。どうでいいことに時間かけるのやめね
どうしても必要なら明確に定義して
- 365 :デフォルトの名無しさん:2015/02/21(土) 16:07:45.35 ID:FlDtTMp/.net
- >>364
昔あった"STL"に含まれていたコンテナ・イテレータ・アルゴリズム・ファンクタ
の4つに該当するものを今でもSTLと呼ぶ人が多い
std::stringは含まれない
ただ初心者は、テンプレートは全部STLとかライブラリは全てSTL
と思っている
定義は無い
- 366 :デフォルトの名無しさん:2015/02/21(土) 16:43:47.66 ID:78/Ireu0.net
- 定義とかどうでもよくね?
大抵は文脈でアレの事言ってんだろうなって解るだろ
- 367 :デフォルトの名無しさん:2015/02/21(土) 17:22:04.77 ID:zlhhs5UV.net
- みんなそんなことわかってるのに
ごちゃごちゃ言うやつがいるんだよな
AA板でアスキーアートなんて用語使うなって言ってたキチガイと同じだわ
- 368 :デフォルトの名無しさん:2015/02/21(土) 17:37:21.05 ID:oGsLucOX.net
- 直近のレスを少し読んでもSTLの認識が違っているというのに
事実すら認めなれない低脳はどうしようもないなヤレヤレ
- 369 :デフォルトの名無しさん:2015/02/21(土) 17:39:59.17 ID:Qj5PkULS.net
- 全部iostreamのせいだ
- 370 :デフォルトの名無しさん:2015/02/21(土) 18:01:31.11 ID:78/Ireu0.net
- >>368
だからお前の中のSTLの定義とか認識とかどうでもいいんだよ
- 371 :デフォルトの名無しさん:2015/02/21(土) 18:10:49.86 ID:FlDtTMp/.net
- ここはキチガイの多いインターネットですね
STLを化石と連呼する奴もキチガイ
認識の違いを見ても都合の悪いことはスルーして"わかるだろ"を連呼する奴もキチガイ
- 372 :デフォルトの名無しさん:2015/02/21(土) 18:23:51.19 ID:78/Ireu0.net
- >>371
都合の悪いってどれだよ。
お前の中では一度が連呼になんの?
日本語通じない人と同じ認識持てるとは思えないわ。
- 373 :デフォルトの名無しさん:2015/02/21(土) 18:40:08.39 ID:NoRQyCne.net
- 最初にステパノフのSTL見たときはそりゃ衝撃的だった
- 374 :デフォルトの名無しさん:2015/02/21(土) 20:15:34.02 ID:vFgxohPd.net
- >>373
そういう人が、ここにいるんでしょう。
- 375 :デフォルトの名無しさん:2015/02/22(日) 00:45:01.58 ID:sAwrKU4y.net
- お前が標準ライブラリと呼びたければそれでいい。昔の通りSTLと読みたければ
それでいい。どうでもいいことだろが。
それをゴチャゴチャぬかしやがって、お前らは額に「馬鹿」の字をかいたパリサイ人か!
イスラム国で首切られて来い
- 376 :デフォルトの名無しさん:2015/02/22(日) 05:16:49.04 ID:x6orKTOm.net
- STLはもともと固有名詞だから用語の正確さで因縁つけられてんだろ。
オペレーティングシステムをOSと呼んでいいかみたいなもので
公式の文書では避けなければならない言葉。
どうでもいいかと言ったらどうでも良くはない
- 377 :デフォルトの名無しさん:2015/02/22(日) 05:44:22.81 ID:sOGNk0U/.net
- >>376
何の話?
Bjarne StroustrupがC++WGの論文でSTLって言葉を使ったことの批判?
- 378 :デフォルトの名無しさん:2015/02/22(日) 06:25:19.07 ID:Il9QBtRY.net
- 誰かこの糞談義を止めて欲しい
いつまで続くんだ
- 379 :デフォルトの名無しさん:2015/02/22(日) 10:05:00.26 ID:tyley4te.net
- で、restrictの話しはどうなったの?
- 380 :デフォルトの名無しさん:2015/02/22(日) 11:13:46.42 ID:0JOE1lwg.net
- どうでもいいわ。
そこのホッチキスとマジック取って
- 381 :デフォルトの名無しさん:2015/02/22(日) 12:15:10.87 ID:rIRRZTlZ.net
- そこはフロッピーを宅急便で支社に送ってと言うべきだった
- 382 :デフォルトの名無しさん:2015/02/22(日) 12:19:52.26 ID:0JOE1lwg.net
- >>378
実のある議論ができない奴ほど形式論を語るしかないのさ。
- 383 :デフォルトの名無しさん:2015/02/22(日) 12:23:34.85 ID:VRC+VXQD.net
- 「はなししってなんですか」と言ってた奴のことですね
- 384 :デフォルトの名無しさん:2015/02/22(日) 12:37:52.29 ID:TRUNFqhM.net
- あれはあぶり出しとしては秀逸な論法、実によく効く
- 385 :デフォルトの名無しさん:2015/02/22(日) 12:50:30.37 ID:I1ETafX4.net
- マジックは意図が明確だけど
STLは>>353のように範囲の認識が違う人がいるから粘着が湧く
- 386 :デフォルトの名無しさん:2015/02/22(日) 13:47:16.48 ID:sOGNk0U/.net
- >>385
粘着するやつは範囲の問題じゃなく現代のC++にSTLなんて存在しないって主張だから
- 387 :デフォルトの名無しさん:2015/02/22(日) 14:26:18.14 ID:mDB3/i8f.net
- STLの開発は止まってるし
https://www.sgi.com/tech/stl/
ISO/IEC 14882:2014にSTLなんてものが出てこないのは事実ですよ。
事実を認識したり論理的な思考をする能力の低い人は
プログラミングに携わるべきではないですね。
- 388 :デフォルトの名無しさん:2015/02/22(日) 14:32:04.10 ID:DVQv7PP4.net
- もうSTLはどうでもいいから1zとかTSとかの話しろよ
- 389 :デフォルトの名無しさん:2015/02/22(日) 14:32:28.03 ID:33oFsXpr.net
- >>386
マ、マジックテープは、宇宙でも使えるから
- 390 :デフォルトの名無しさん:2015/02/22(日) 14:37:59.90 ID:J+2bP69K.net
- よしバイナリフォールド式について話しをしようか
auto f(param_types &&... params) {
return 0 + ... + std::forward<param_types>(params);
}
C++11/14のパック展開が使い物にならない糞なのでようやくマトモになった感じ?
- 391 :デフォルトの名無しさん:2015/02/22(日) 15:16:06.21 ID:oKNrTzen.net
- たしかにC#のことを「あれはJ++だ」と言って執拗に絡んでくるひとがいたらキモい
- 392 :デフォルトの名無しさん:2015/02/22(日) 15:23:15.40 ID:+WCHq4X5.net
- >>390
... が万能すぎて怖いくらい。 この手の書き方って他の言語で先行例ってあるの?
C++ に似つかわしくないほどやわめな構文で驚いた。
- 393 :デフォルトの名無しさん:2015/02/22(日) 15:54:03.58 ID:DVQv7PP4.net
- std::forward<param_types>(params);
これわざわざコピーしてないか?
- 394 :デフォルトの名無しさん:2015/02/22(日) 16:06:56.71 ID:iZtaTVrr.net
- forwardしてるんだからコピーはしないだろ
- 395 :デフォルトの名無しさん:2015/02/22(日) 16:21:44.43 ID:DVQv7PP4.net
- ああそっか、ごめん、勘違いしてた
- 396 :デフォルトの名無しさん:2015/02/22(日) 16:55:44.35 ID:uY8y3iUC.net
- fold式にleft/rightが何であるのかわからん
演算子のルールに従うじゃだめだったのか?
- 397 :デフォルトの名無しさん:2015/02/22(日) 23:10:10.24 ID:pTum2WVa.net
- >>392
Cの可変個引数がある
C++ほど色んな所で使えるわけではないけど
あとPerlぐらいの変態言語ならこういうのありそう
- 398 :デフォルトの名無しさん:2015/02/22(日) 23:36:44.34 ID:3PxrY4i8.net
- むしろ予約語を増やせないC++らしい危険なクソ構文だわ
絶対後で文法上の問題出るぞ
- 399 :デフォルトの名無しさん:2015/02/23(月) 13:10:36.58 ID:9GBuLC9G.net
- foldr (+) 0
- 400 :デフォルトの名無しさん:2015/02/23(月) 18:11:30.75 ID:nfF9Yj6BV
- >>396
結合律の成り立たない演算では両方ないと困ることがある。
- 401 :デフォルトの名無しさん:2015/02/23(月) 21:35:46.74 ID:AjwZ0bQG.net
- むしろマトモな予約語が増やせなくて糞キーワードだらけのCが心配だ
_Bool, _Alignas, _Generic, _Static_assert, _Atomic, _Thread_local
- 402 :デフォルトの名無しさん:2015/02/23(月) 21:36:17.11 ID:+BeEL7x5.net
- 名前空間ぐらい入れればいいのに
- 403 :デフォルトの名無しさん:2015/02/23(月) 21:53:31.94 ID:zZTzM7Nf.net
- Cに名前空間なんて入れたらC++でええやんってなる。
- 404 :デフォルトの名無しさん:2015/02/23(月) 22:46:22.93 ID:cTqeesdS.net
- 仕組みの一部だけ取り入れればいいと思うんだよね
#include<stdname.h> みたいな宣言で識別子 bool generic等を予約語に昇格そのまま使える状態にして
#include<stdname.h> が無いときは非予約語で相当する予約語は StdC99_Bool StdC11_Generic な用法になる感じで
影響する範囲をinclude入れ子の一段目に限定
例えば"my.h"に #include<stdname.h>があっても"my.h"を includeしたファイルでは StdC99_Boolと書く必要がある
- 405 :デフォルトの名無しさん:2015/02/23(月) 22:55:42.10 ID:xos6Ur9w.net
- そんな C++ になりきれない C+ みたいな言語を新たに作って誰が喜ぶんだよ?
- 406 :デフォルトの名無しさん:2015/02/23(月) 22:59:30.65 ID:cTqeesdS.net
- 実際 boolが影響範囲のコントロールは出来てないけどそんな使い方だろ?
- 407 :デフォルトの名無しさん:2015/02/23(月) 23:18:19.23 ID:5h1ypUSf.net
- #define _Generic generic とか書いたincludeファイルを
自分のソースコードに読み込む分には
勝手にしたらええんやで
- 408 :デフォルトの名無しさん:2015/02/23(月) 23:34:11.39 ID:cTqeesdS.net
- 反論になってない反論でしかコミュニケーションとれないお子ちゃまは回線切ってママのおっぱい吸ってなさいってこった
- 409 :デフォルトの名無しさん:2015/02/23(月) 23:45:54.08 ID:5823dt6R.net
- すると>>408はそろそろママのおっぱい吸ってるころかな
- 410 :デフォルトの名無しさん:2015/02/24(火) 11:11:31.26 ID:iM9MlcUC/
- 新手のフレームワークの名前みたいなIDの人がいるな。
- 411 :デフォルトの名無しさん:2015/02/24(火) 21:40:37.78 ID:pJ3tHQCB.net
- 大人はパパのチンポ吸うんですね。 わかります。
- 412 :デフォルトの名無しさん:2015/02/25(水) 00:14:11.12 ID:xC+4K0Zl.net
- お前らって好きな女に告発したことあるの?
お前らって女とデートしたことあるの?
お前らって女と手をつないだことあるの?
お前らって女と抱き合ったことあるの?
お前らって女とチスしたことあるの?
お前らって女の父吸ったことあるの?
お前らって女にク○ニしたことあるの?
お前らって女にフラチオされたことあるの?
お前らってDTなの?
お前らってなんで大人の女性とふつうの恋愛できないの?
というか美人で処女で性格もよくお前らにも優しい天使のような女性が現れたとしてどうすんの?
とりあえず声掛けるなりしてメアドでも聞くの?
だって、そんな超優良物件なんだから過去にお前らよりイケメンや金持ちや女性にやさしい男だっ
て言い寄ってただろうに、なお処女なんだよ。
そんな鉄壁防御の女落とせんの?処女マンゲットできんの?
それとも、まさか…まさかとは思うけど、自分は何もせず、相手が勝手にホレてくれて告白でもし
てきてくれるのをじっと待つの?
そんなんあり得なくね?エ口ゲじゃないんだから。自分から動くしかないよ?
- 413 :デフォルトの名無しさん:2015/02/25(水) 08:46:54.97 ID:nKN7f0Au.net
- 告発
- 414 :デフォルトの名無しさん:2015/02/25(水) 12:04:23.72 ID:b4fkZvXi2
- 412は女の父吸ったのかw
- 415 :デフォルトの名無しさん:2015/02/26(木) 20:57:39.53 ID:jVM3Cxbi.net
- 告発わろた
そこが狙いだったのか
- 416 :デフォルトの名無しさん:2015/02/27(金) 11:31:10.00 ID:6RJ+e4bYI
- 女検察官か
- 417 :デフォルトの名無しさん:2015/02/27(金) 21:45:21.33 ID:jWIxKLNs.net
- 先生、保健室で待ってるね.
ムンムキ、ムンムン、ムキムキ、満万戸♪
あーあ,
- 418 :デフォルトの名無しさん:2015/02/27(金) 22:17:54.47 ID:Ip5cIlNH.net
- 告発してどーする‥
- 419 :デフォルトの名無しさん:2015/02/28(土) 15:03:19.62 ID:aEcZnvpG.net
- declaration -- 告白
- 420 :デフォルトの名無しさん:2015/02/28(土) 17:26:45.27 ID:a9A/5SscJ
- 何を言われると耳障りなのか、我が事として考えて書いたんだね(ニヨニヨ
- 421 :デフォルトの名無しさん:2015/03/02(月) 23:11:20.10 ID:AjrAxNss.net
- 女検察官か。
それでは皆さんさようなら。
- 422 :片山博文MZ ◆T6xkBnTXz7B0 :2015/03/03(火) 04:44:56.57 ID:t6l1EelO.net
- >>407
キーワードを直接置き換えるマクロはオススメできないよ
- 423 :デフォルトの名無しさん:2015/03/03(火) 21:57:50.02 ID:PB4JLOyS.net
- #define complex _Complex
とかいうマクロが標準ライブラリにあるんですがそれは
- 424 :デフォルトの名無しさん:2015/03/03(火) 22:18:02.18 ID:MEusU+0eg
- #include <complex> で死ねそう
- 425 :デフォルトの名無しさん:2015/03/03(火) 22:34:58.05 ID:Bw5+Afu6.net
- >>423
405は逆だったり間違えたんだろうなってのは見たら解るからわざわざ突っ込むまでもないけど
- 426 :デフォルトの名無しさん:2015/03/04(水) 13:34:51.92 ID:p/ReeUop.net
- >>423
それはベンダーが提供しているものだから問題ない。
そういう用途のために、アンダースコアから始まり大文字が続くシンボルと、アンダースコアが二つ以上続くシンボルは、処理系のために予約されている。
- 427 :デフォルトの名無しさん:2015/03/04(水) 14:46:58.37 ID:5bBOwxE3.net
- >>426
そういう話じゃねーよ。
そもそも >>423 のようなコードをユーザーが書いても問題ない
処理系が予約してるような名前付けてないんだから。#defineの仕様ぐらい知ってるだろ?
まぁcomplexはぶつかるけど
- 428 :デフォルトの名無しさん:2015/03/04(水) 14:53:24.33 ID:4pfVor2U.net
- typedef じゃなくて #define なんだな。 ちょっと意外。
- 429 :デフォルトの名無しさん:2015/03/04(水) 23:52:43.51 ID:GFJSAFgJ.net
- そりゃtype-specifierだからね
- 430 :デフォルトの名無しさん:2015/03/07(土) 16:24:41.73 ID:xoLws0MD.net
- >>423のように、
そのコンテキストにおいて予約されている名前を定義あるいは宣言したら動作は未定義。
>>407は問題なし。
- 431 :デフォルトの名無しさん:2015/03/07(土) 16:47:24.15 ID:djYSXMQa.net
- >>430
#defineの使い方ぐらい調べてから知ったかぶろうね。
- 432 :KUSO KOTE ◆unko./w.Osri :2015/03/08(日) 08:00:02.25 ID:q4fLP6rF.net
- keywordとかぶるidentifierはISO/IEC 9899:2011 の6.4.1
で予約されているけれどそれは翻訳フェーズ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)
- 433 :KUSO KOTE ◆unko./w.Osri :2015/03/08(日) 08:33:51.01 ID:q4fLP6rF.net
- むしろ>>407の方が微妙な気がする。
ISO/IEC 14882 17.6.4.3.2だと「__」は常に予約だけど、
「_」で始まる名前はグローバル名前空間
(=プリプロセス後)で予約なのでセーフ。
ISO/IEC 9899 7.1.3だと(翻訳フェーズ問わず)
file scopeで予約となっているけど、
file scopeの概念は6.2.1でプリプロセス後と読めるからセーフ?
- 434 :デフォルトの名無しさん:2015/03/08(日) 08:41:18.85 ID:AA0BAvq6.net
- つまり素人は手を出すなってこと
- 435 :デフォルトの名無しさん:2015/03/08(日) 09:25:35.66 ID:a1iMakmn.net
- マクロ置換は悪
- 436 :デフォルトの名無しさん:2015/03/08(日) 09:47:47.85 ID:MjKQfbtK.net
- >>432
新しいのが手元にないので古い規格(1998)だけど、標準ライブラリのインクルードファイルで
で予約されている名前をマクロ定義に使うのはNG。CもC++もライブラリの章に書いてある。
reserved namesとmacro names。
C++だとstdに付け加えるなとかいてあるなあ。これは新しいやつだと変わったんだっけ?
標準ライブラリのインクルードファイルって翻訳フェーズを通さなきゃいけないって
決まってたっけ? NDEBUG定義以外で。
- 437 :デフォルトの名無しさん:2015/03/08(日) 12:04:59.60 ID:TmgpNONE.net
- インクルード処理はtranslation phaseの一つ
stdへの追加禁止は消えてないはず
- 438 :デフォルトの名無しさん:2015/03/09(月) 23:23:29.08 ID:DVZhIFmH.net
- #ifdefや#ifはともかくマクロ置換(定数値含む)は近年使ったことがないな
- 439 :デフォルトの名無しさん:2015/03/10(火) 03:44:34.60 ID:O3tT2l2+.net
- C/C++ 雑談
http://next 2ch.net/tech/1425296203
↑
ツメル
- 440 :デフォルトの名無しさん:2015/04/03(金) 12:13:53.41 ID:aUjSHbb4H
- age
- 441 :デフォルトの名無しさん:2015/04/17(金) 23:39:08.70 ID:KeRAGdVv.net
- std::lock()とstd::try_lock()はある
std::timed_mutex::try_lock_for()はある
何故std::try_lock_for()がないのか?
- 442 :デフォルトの名無しさん:2015/04/17(金) 23:47:43.04 ID:pPdceNUI.net
- 効率よく待てないからじゃね
- 443 :デフォルトの名無しさん:2015/04/23(木) 11:35:05.73 ID:VMIg3Gos.net
- どうせ糞POSIXスレッドをコピペして規格を作成してそうなったんだろ
- 444 :デフォルトの名無しさん:2015/05/16(土) 02:14:55.14 ID:5vlSH4lz.net
- Unicode関連はすっかり停滞しちゃってるなあ
regexでUTF-8を扱える日は来るんだろうか
- 445 :デフォルトの名無しさん:2015/05/16(土) 11:43:54.84 ID:Q6oFxN8a.net
- 停滞してるのは436のおつむだけじゃね?
- 446 :デフォルトの名無しさん:2015/05/17(日) 12:28:01.90 ID:B4HbLI1y.net
- char8_tがないからこれからもUTF-8をまともに扱える日は来ない
- 447 :デフォルトの名無しさん:2015/05/17(日) 21:00:07.19 ID:MdVbR0ci.net
- いつのまにか 1 バイトは 8 ビットになっていた。
- 448 :デフォルトの名無しさん:2015/05/17(日) 21:10:50.48 ID:3p4iQKQh.net
- もう、最小単位が8ビット以外のCPUにC言語実装するの無理だよね……
- 449 :デフォルトの名無しさん:2015/05/17(日) 21:12:52.92 ID:ZJ6cYS77.net
- 実装はできるでしょ
既存の環境との互換がないだけで
- 450 :デフォルトの名無しさん:2015/05/17(日) 23:06:27.88 ID:D+ZZ1tPa.net
- >>447
ソースは?
- 451 :デフォルトの名無しさん:2015/05/18(月) 00:17:39.67 ID:owFvwpuo.net
- マイナーな環境は切り捨てて良い
ビジネスだからね
- 452 :デフォルトの名無しさん:2015/05/18(月) 00:19:44.88 ID:GTaXuX3q.net
- むしろcharが9ビットだったとして動かないようなコードを書いたことがない
- 453 :デフォルトの名無しさん:2015/05/18(月) 00:21:05.89 ID:/MqUjnzg.net
- その環境で動かしたことすらないのに断言しちゃうのは…
- 454 :デフォルトの名無しさん:2015/05/18(月) 01:14:56.23 ID:QSgWNScG.net
- 16bit/byte な環境なら実際に使った事がある。
- 455 :デフォルトの名無しさん:2015/05/18(月) 01:28:51.99 ID:Cbg5+jca.net
- Unicodeがらみの文書は2013年のN3572が最後かな
停滞というのか推進役がいないというのか
- 456 :デフォルトの名無しさん:2015/05/18(月) 02:20:15.62 ID:K5O9DUWc.net
- >>450
IEC 80000-13:2008 にあるそうですが、有料みたいですね。
- 457 :デフォルトの名無しさん:2015/05/18(月) 08:54:57.01 ID:57s0R/T6.net
- >>447
そうだよなぁ
昔、1バイトはそのCPUの基本処理単位で
8bit以外にも、32、11、7などがある、、、
なんて習ったのは遠い昔話か
初めて読んだ高級言語の教科書には
文字型は1文字で32bit消費するから、もったいないと思ったらPacked付けて
めもりに詰め込んで使ってねとかも書いてあったな
- 458 :デフォルトの名無しさん:2015/05/18(月) 09:10:55.77 ID:708meOe9.net
- >>457
1バイトの前には、1ワードというのがあって、
1短ワードは21ビットで、長ワードは41ビット
なんていうこともあった。
日立のパラメトロン電子計算機HIPAC-101は
こういうようになっていたと思う。
ドラム式記憶装置で短ワードで8kワード、
長ワードで4kワードの記憶容量だった。
- 459 :デフォルトの名無しさん:2015/05/18(月) 11:38:20.70 ID:IhfoHK+f.net
- >>457
C言語の規定を満たさない7はねーだろ
- 460 :デフォルトの名無しさん:2015/05/19(火) 05:30:22.52 ID:Ri/mEtfG.net
- C++は何故これが出来ないのですか?
http://www.kmonos.net/alang/d/ctod.html#forwardfunc
- 461 :デフォルトの名無しさん:2015/05/19(火) 08:02:20.21 ID:Nw+B6083.net
- >>460
クラスメンバならできてるのにね
- 462 :デフォルトの名無しさん:2015/05/20(水) 23:47:34.73 ID:xjUyMT9v.net
- ふと仕様をみていたらcopy_n()なんてアルゴリズムを見つけたので
これって、サイズ不明の巨大バイナリファイルをちまちま読み込むのに便利じゃない?
と思ってループの中で使ってみたら、上手く動かなかった。なぜじゃ?
根本的に使い方を間違ってるのかなぁ?
ループの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;
}
- 463 :デフォルトの名無しさん:2015/05/21(木) 00:54:30.76 ID:v1+yhA+h.net
- >>462
istreambuf_iterator 使わないとダメなんじゃないの? skipws したら大丈夫なもん?
バイナリ読むなら ios::binary 指定するとか?
copy_n だとファイルサイズがわからないのに必ず指定バイト読みにいっちゃうからやっぱり
根本的にダメかな。
- 464 :デフォルトの名無しさん:2015/05/22(金) 22:43:48.17 ID:7DrLyQsZ.net
- >>463
さんきゅ
istreambuf_iterator試してみたけど結果は一緒だった。
バッファの一文字目だけ更新されない
しかもループの二回目から
ってどんだけ器用なんだよ
- 465 :デフォルトの名無しさん:2015/05/22(金) 23:54:21.39 ID:3ZbTlDNN.net
- forward_listが上手くつかえない。
値を昇順に保存したい場合、
listだとlower_boundで探してinsertすればいいのだが、
forward_listだとinsert_afterしかないから
lower_boundで発見するiteratorの一つ前のiteratorをとる術がないと…
lower_boundに渡すcompに値ではなくiteratorを渡してくれるならまだなんとかなるが。
自力でlower_bound風のものを実装するのもアホくさいし、結局listを使ってしまう。
- 466 :デフォルトの名無しさん:2015/05/23(土) 20:04:09.70 ID:rysQ2513.net
- バカには無理
- 467 :デフォルトの名無しさん:2015/05/24(日) 14:09:01.84 ID:LsP7CBZq.net
- てかなんで二分検索系なのに ForwardIterator許してるんだろ
RandomAccess以外じゃ遅くて話にならん気が
advanceとdistance特殊化したForwardとか? そんなの無視でええやろ
- 468 :デフォルトの名無しさん:2015/05/24(日) 22:21:42.47 ID:kX3rbHqn.net
- >>467
O(N)だからかろうじて許容
だがリンクリスト構造のデータでバイナリサーチという発想がクレイジー
標準化委員会のオツムがその程度だったんでは
- 469 :デフォルトの名無しさん:2015/05/26(火) 13:20:27.85 ID:T4vhUJyc.net
- >>462
入力イテレータコピーしてインクリメントしたらコピー元のやつはもう使えない
- 470 :デフォルトの名無しさん:2015/05/26(火) 23:34:35.87 ID:mR6iTcwD.net
- >>468
バイナリサーチをするためにはソートされてないといけない。
listではlower_bound等中のadvanceにO(N)かかるとしても、insertがO(1)。
一方、vector, dequeではadvanceにO(1)だけど、insertにO(N)かかる。
サーチのときにコストがかかるか、挿入の時にコストがかかるかの差でしかない。
- 471 :デフォルトの名無しさん:2015/05/27(水) 00:42:21.48 ID:ZXJ9GTEN.net
- priority_queueってどうなの?
- 472 :デフォルトの名無しさん:2015/05/27(水) 08:53:06.53 ID:49WOtAb2.net
- >>469
さんきゅ、そこには考えがいたってなかった。
書き込み後、copy_n()した後でis++するとうまく動くことに気づいたのですが
copy_n()の仕様で入力側のイテレーターが
インクリメントされるとも保存されるとも言及されてい無いので
Isを再利用すべきでは無いですね
- 473 :デフォルトの名無しさん:2015/05/29(金) 17:53:57.11 ID:zv3K9PIp.net
- ところでfile systemライブラリーってどうなったんだ?
14でも採用されて無いの?
- 474 :デフォルトの名無しさん:2015/05/29(金) 17:59:38.06 ID:R5dmPrAY.net
- ないよ
- 475 :デフォルトの名無しさん:2015/05/29(金) 23:45:32.51 ID:Gf25n3G0.net
- >>471
pushとソートを自動でやるだけのvectorにつけた衣じゃん
- 476 :デフォルトの名無しさん:2015/05/30(土) 10:57:10.52 ID:qPmgq1NQ.net
- そもそもキューとコンテナは違うモノ
- 477 :デフォルトの名無しさん:2015/05/30(土) 12:18:02.36 ID:DRtbRWlm.net
- それは珍妙な説ですね
一般的にはキューはコンテナで
ISO/IEC 14882:2014もそうなってますよ
- 478 :デフォルトの名無しさん:2015/05/30(土) 15:35:34.13 ID:kxccA5tT.net
- だったらstd::queueに
begin()end()clear()が無いのは何故ですか?
- 479 :デフォルトの名無しさん:2015/05/30(土) 15:40:24.27 ID:UawMEkCG.net
- queueにはないからじゃね
- 480 :デフォルトの名無しさん:2015/05/30(土) 18:06:53.60 ID:rz8vUkGO.net
- キューだから無いんだろ
- 481 :デフォルトの名無しさん:2015/05/30(土) 18:15:30.40 ID:kxccA5tT.net
- キューだったらなぜないんですか?
キューなら各要素にアクセスしてはいけない、という決まりでもあるんですか?
- 482 :デフォルトの名無しさん:2015/05/30(土) 18:26:08.47 ID:qC/pm06Q.net
- std::dequeを使いなさい
- 483 :デフォルトの名無しさん:2015/05/30(土) 19:45:16.77 ID:CEOL5S8X.net
- コンテナであるためにはbegin()end()clear()がなければならないという決まりなどないからw
std::queueはイテレーション、途中の要素へのアクセス、clearを禁止してるキューってだけだろ
それで都合が悪いならstd::dequeを直接使えばいいだけの話で
- 484 :デフォルトの名無しさん:2015/05/30(土) 20:01:37.06 ID:kxccA5tT.net
- では何故std::queueは他のコンテナと差別化されているのですか?
- 485 :デフォルトの名無しさん:2015/05/30(土) 23:03:11.77 ID:pCUd1Sfk.net
- 差別化とは何のことを言っているのですか?
意味不明です
- 486 :デフォルトの名無しさん:2015/05/31(日) 06:34:16.62 ID:MBoVzqPE.net
- 適当なこと信じるなよw
stackとqueueはcontainer adaptorで、他のコンテナのラッパーとして
stackとqueueとして最低限必要な一部メソッド以外を隠すこと自体が目的なんだから
- 487 :デフォルトの名無しさん:2015/05/31(日) 07:15:02.92 ID:KGZfLlUn.net
- >>486
確かそうだよね。
コンテナアダプターとして他のコンテナ(デフォルトでdequeue)にqueueの殻をかぶせるものだと思う
リングバッファのコンテナ作って queueの殻をかぶせる人とか出てきそう
組込みとかだと
- 488 :デフォルトの名無しさん:2015/05/31(日) 07:29:21.31 ID:991Qs8BY.net
- >リングバッファの
それをstd::queueというのでは
- 489 :デフォルトの名無しさん:2015/05/31(日) 08:51:08.10 ID:zG1uK5fD.net
- キューの要素にアクセスする超絶便利なクラスを考えた。マジオススメ。
http://ideone.com/0XGq6C
- 490 :デフォルトの名無しさん:2015/05/31(日) 09:51:58.22 ID:KGZfLlUn.net
- >>488
std::queueはインターフェースの規定で
リングバッファは実装形態のひとつだと思うよ
少なくともstd::queueのデフォルトはstd::dequeueなので
リングバッファとして実装されてるわけじゃない
- 491 :デフォルトの名無しさん:2015/05/31(日) 14:14:03.84 ID:b0F1vqJ9.net
- リングバッファはdequeを実装する手段の一つであって
dequeが必ずリングバッファなわけじゃないな
- 492 :デフォルトの名無しさん:2015/05/31(日) 14:49:33.66 ID:/H4GzWhn.net
- リングバッファによるstd::dequeの実装なんてあるのか
要件満たせないだろ
- 493 :デフォルトの名無しさん:2015/05/31(日) 14:53:46.07 ID:vc6Fo5Bi.net
- >>492
http://togetter.com/li/36422
__ring_buffer<T*> を使う実装ならあり得るようだ。
- 494 :デフォルトの名無しさん:2015/05/31(日) 14:57:02.09 ID:cT9cJREJ.net
- むしろランダムアクセス&みなし定時間での追加の一番手抜きな方法
- 495 :デフォルトの名無しさん:2015/05/31(日) 15:10:59.51 ID:/H4GzWhn.net
- >>493
なるほどT*のリングバッファか
- 496 :デフォルトの名無しさん:2015/05/31(日) 15:57:00.48 ID:XpV9WTjI.net
- std::deque は償却定数時間じゃなくて定数時間での追加と削除を要求するから、リングバッファの動的拡張じゃダメなんだよ。
定数時間で拡張できるリングバッファとか実装できない限り。
- 497 :デフォルトの名無しさん:2015/05/31(日) 16:25:57.32 ID:vc6Fo5Bi.net
- >>496
ランダムアクセスの要件もあるんだから償却でもない定数時間で
バッファ拡張は無理でしょ?
なお、 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*> を使う実装も可能になる。
- 498 :デフォルトの名無しさん:2015/05/31(日) 20:13:23.31 ID:XpV9WTjI.net
- そこ見落としてた。
確かにただの vector<T*> でも問題なさそう。
- 499 :デフォルトの名無しさん:2015/05/31(日) 22:13:35.94 ID:GgyUUQ/3.net
- では、begin()end()clear()すら無いのはやりすぎだと思うのですが、
何故そうしたのですか?
begin()end()は参照するだけなので、間違って呼び出しても危険では無いですし、
clear()は危険ですが、あってもよさそうに思いませんか?
この程度の物の使い方を誤るようなユーザー層を想定してC++は設計されているのですか?
- 500 :デフォルトの名無しさん:2015/05/31(日) 22:20:57.41 ID:9qmomWku.net
- >>499
でもね、リングバッファのbegin()とend()ってどこを示すの?
文字通りリング状に繋いだバッファだから始めも終りも無いと思うの(概念上はね)
でもリングバッファってキューなんだよね
- 501 :デフォルトの名無しさん:2015/05/31(日) 22:31:30.45 ID:MBoVzqPE.net
- STLはC++の言語機能デモみたいな側面も強いからなあ
実用的な意味で言うならアダプター自体存在価値無いし。生dequeそのまま使えで困らん
- 502 :デフォルトの名無しさん:2015/05/31(日) 22:49:47.87 ID:vc6Fo5Bi.net
- >>499
標準ライブラリがすべて完璧なんてことは無い。
コンテナアダプタに設計上の不完全さがあるのは認識されている
けども、嫌なら素のコンテナを使えばいいので、急いで何か変更する
必要もないから捨て置かれている、とかそんなところだろう。
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
- 503 :デフォルトの名無しさん:2015/06/01(月) 00:00:41.46 ID:s3ZcdtNu.net
- >>500
std::dequeにはbegin()end()があります。
そして>>493には、std::dequeはリングバッファを使う実装もありえると書いてあります。
素人考えでは、リングバッファにbegin()end()を設けることは可能だと感じましたが。
どうしてリングバッファだとbegin()end()の実装が出来ないんですか?
- 504 :デフォルトの名無しさん:2015/06/01(月) 00:02:06.37 ID:WxPiUJ33.net
- >>503
何か勘違いしたんだろ
スルーしろ
- 505 :デフォルトの名無しさん:2015/06/01(月) 08:31:07.82 ID:z1J9EcqB.net
- >>503
こういう時は遅延解決と言うのはどうだ?
実際にオマエがリングバッファを使う/作る必要が出るまで放置しておくのだ。
どうしても気になるなら組込みプログラミングとか、
デバイスドライバープログラミングとか
の教科書が役に立つよ
dequeはdouble ended queueで文字通り両端のあるデータ構造
リングバッファは文字通り端の無いデータ構造
端部の処理を隠蔽して
プログラマーが気にしなくていいように作ったんだよ
- 506 :デフォルトの名無しさん:2015/06/01(月) 10:55:59.28 ID:81ggMrem.net
- >>505
いや、ふつうにリングバッファに begin()/end() 作れるからね。
http://www.boost.org/doc/libs/1_58_0/doc/html/circular_buffer.html
バッファの端部の処理を隠蔽するのと、コンテナとしての begin()/end() を
提供するのとは競合しない。
- 507 :デフォルトの名無しさん:2015/06/01(月) 18:17:51.18 ID:z1J9EcqB.net
- >>506
読み出し点がbegin()で書き込み点がend()と言う定義だね
これで便利に使えるんならこれでいいんじゃない?
std::にこだわらなきゃいけない理由もないし
std::queueを定義した人たちはわざわざ隠蔽したから違う意図があったんだろうけど
どういう議論でそこに落ち着いたのかは興味のある所だな
- 508 :デフォルトの名無しさん:2015/06/01(月) 18:34:30.61 ID:s3ZcdtNu.net
- >std::queueを定義した人たちはわざわざ隠蔽したから違う意図があったんだろうけど
>どういう議論でそこに落ち着いたのかは興味のある所だな
一週回ってまたもとの話題にたどり着きましたね。
std::dequeにはbegin()end()clear()があるのに、
std::queueにはないのは何故ですか?と。
やっと分かってもらえたようで、とてもうれしいです。
実装的な意味で隠す意味は全くないですよね。なにせstd::dequeには有るのだから。実装可能ですよね。
だから使い勝手の面で考慮して削ったのは明白なわけですが、
有ったほうが便利なのも明白なので、何故削ったか教えてください。
また、コンテナというコンテナにbegin()end()clear()が有るのに、
例外的に省く必要があったのは何故ですか?
std::dequeには有るのに、std::queueにはないのは何故ですか?
- 509 :デフォルトの名無しさん:2015/06/01(月) 18:35:28.27 ID:Y92a5RD0.net
- リングバッファは用意した格納領域に論理的な端はないが
リングバッファに格納しているデータには両端がある。
読み出し点とかいう珍妙な定義ではない。
リングバッファも理解できない低能は去れ
- 510 :デフォルトの名無しさん:2015/06/01(月) 18:47:00.78 ID:Y92a5RD0.net
- 実装可能だからと言って意味も考えずに関数を追加しようとする低能には難しかったかな。
削ったんじゃない。必要だと判断する根拠が見いだせなかったから入れなかっただけ
- 511 :デフォルトの名無しさん:2015/06/01(月) 18:54:12.01 ID:3aF8jH8E.net
- >>508
隠す意味が全くないとは言い切れないし、std::queueの設計者はFIFOとしての
必要最低限な機能を提供するアダプターの例として作ったんじゃないの?
こんなアダプタの実装なんてあっという間に出来るんだから必要な機能があるなら
my::queueを作ればいいだけだろ
っかお前さんstd::queueに親でも殺されたのか?
- 512 :デフォルトの名無しさん:2015/06/01(月) 18:55:07.93 ID:0D/a6Ypk.net
- コンテナアダプタだからって結論が出ただろ…
何回ループするつもりだ
- 513 :デフォルトの名無しさん:2015/06/01(月) 19:00:07.36 ID:Y92a5RD0.net
- >>511
std::queueは「コンテナをprotectedにしておくので派生クラスを定義してくれ」という設計思想
- 514 :デフォルトの名無しさん:2015/06/01(月) 19:00:51.86 ID:bL5wj5hB.net
- >>512
脳みそがリングバッファだから仕方ない
- 515 :デフォルトの名無しさん:2015/06/01(月) 19:10:03.15 ID:3aF8jH8E.net
- >>513
本当だ、コンテナはprotectedになってるんだな
- 516 :デフォルトの名無しさん:2015/06/01(月) 19:20:31.72 ID:s3ZcdtNu.net
- >>512
コンテナアダプタだと、どうしてbegin()end()clear()は要らないのですか?
単純に、queueをdequeのスタック機能禁止版、
stackをdequeのキュー機能禁止版、として実装せず、
あえてbegin()end()clear()を削ったのは何故ですか?
そうすることで何のメリットがありますか?
- 517 :デフォルトの名無しさん:2015/06/01(月) 19:20:33.07 ID:SF759XlG.net
- >>508
俺様理論でよければ(標準化の論議を見てたわけじゃないので)
俺低レベルプログラムの出身だから、キューっていうと
ハードウェアとか、OSとか、別アプリとか、別スレッドとか、そういう時間軸の違うところからのアクセスを受け付けるところというイメージ。
なので、せっかくend()しても、だれか別の人がデータ付け加えたら本当のend()じゃなくなるし
begin()も同じ。
なので、俺がqueueを作るなら、begin()とかend()とか積極的に隠蔽したい。
百害あって一利くらいしかない。
本当に、begin()とかend()とかの必要な人は、初期化する人だから、そういう人は
- 518 :デフォルトの名無しさん:2015/06/01(月) 19:23:42.90 ID:s3ZcdtNu.net
- >>517
ではどうしてstd::dequeにはbegin()end()があるのですか?
>俺低レベルプログラムの出身だから
低レベルプログラマの間違いですか?
あなたの文章からは知性が感じられません。
- 519 :デフォルトの名無しさん:2015/06/01(月) 19:51:57.40 ID:60FC1uF1.net
- この話題C++14/17関係なくない?
- 520 :デフォルトの名無しさん:2015/06/01(月) 20:13:04.85 ID:Ajumyg1G.net
- あすぺがおるな。
なんでなんでなんでなんで
どうでもええやん。
- 521 :デフォルトの名無しさん:2015/06/01(月) 21:39:07.24 ID:sxT4bift.net
- dequeというキューにbegin/endを付けたのは間違いだった
標準化委員会のオツムはその程度
だから標準ライブラリはカオス
わかったら>>518はもう来るな
- 522 :デフォルトの名無しさん:2015/06/01(月) 22:23:47.35 ID:CikCK20O.net
- queueくらい自前でチョチョイと実装するほうが手軽だろ
- 523 :デフォルトの名無しさん:2015/06/01(月) 22:35:28.05 ID:WzbSrIDw.net
- おまいら、もちつくお。
std::queue は FIFO だお。
末尾に突っ込む事と、先頭から取り出す事に特化したのがFIFOだお。
シーケンシャルアクセスしたいのなら、それはそもそもFIFOを使うべきではないという事だお。
- 524 :デフォルトの名無しさん:2015/06/01(月) 22:39:24.96 ID:XMlrS7pL.net
- >>523
ほうほう
では何故、ダブルエンドなキューがbegin/endを持っているのですかな?
- 525 :デフォルトの名無しさん:2015/06/01(月) 22:40:54.82 ID:CikCK20O.net
- >>523
どんなアクセスしようが俺の勝手だろ!
- 526 :デフォルトの名無しさん:2015/06/01(月) 22:43:02.25 ID:jRIiVMIx.net
- >>524
デックはFIFOじゃないからだろ
- 527 :デフォルトの名無しさん:2015/06/01(月) 22:46:12.37 ID:3aF8jH8E.net
- std::dequeにはinsertもeraseもあるわFIFOじゃない
- 528 :デフォルトの名無しさん:2015/06/01(月) 22:57:36.37 ID:bKrMq7bs.net
- ほうほう
では先頭or末尾の追加削除に特化したdequeが
なんでbegin,insert,eraseを持って途中のアクセスをゆるしているのですか
- 529 :デフォルトの名無しさん:2015/06/01(月) 23:05:14.31 ID:3aF8jH8E.net
- 許しちゃいかんのか?
- 530 :デフォルトの名無しさん:2015/06/01(月) 23:06:27.46 ID:jRIiVMIx.net
- あって、何が不思議なの?
- 531 :デフォルトの名無しさん:2015/06/02(火) 00:38:03.29 ID:eS0bDxEp.net
- >>516-517
標準化にあたってたいした議論も無く、 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.
- 532 :デフォルトの名無しさん:2015/06/02(火) 00:38:41.35 ID:JAKrN9QP.net
- >>521
どうして間違いなんですか?
begin()end()があったほうが、使えるシチュエーションが広がりませんか?
汎用性はC++の精神では無いんですか?
- 533 :デフォルトの名無しさん:2015/06/02(火) 00:59:02.07 ID:4OJRpLbL.net
- STLの古い部分、ほぼ前世紀の設計と言っていいものをなんでそこまで精神がどうのこうの妄信できるのかわからん
operator <<を出力に流用して喜んでたような時代だぞ
委員会に入って修正してあげてくれ
- 534 :デフォルトの名無しさん:2015/06/02(火) 01:36:45.46 ID:BaZW+F2H.net
- Qちゃんまだがんばってるんだw
- 535 :デフォルトの名無しさん:2015/06/02(火) 01:41:24.85 ID:33LBbjfE.net
- >>534
ありがたくROMって勉強させてもらってはいてもC++14のことに意見することなどあり得ません‥
- 536 :デフォルトの名無しさん:2015/06/02(火) 02:59:29.07 ID:W334YSrv.net
- 以下、勝手な推測
本当に知りたきゃステパノフにでも聞いとけ
queueはアダプタということもあって先入れ先出し関係以外の機能は極力つけない
(実情はともかくとして)内部がイテレートできるような状態になってるかすら保証できない
よってbegin/endは意味を成さない
とqueueにbegin/endとかがない点はこういうこじつけができるわけだ
ではなぜdequeはそうなっていないのか
dequeのような両端キューはlistを使えば実現できるのでこれに対するアダプタとしてやればよさそうでもある
だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない
よって両端キューに向いてるコンテナを独自に作る必要がある
コンテナとして作る以上、コンテナとしての機能をつけなきゃならんのでbegin/endとかある
- 537 :デフォルトの名無しさん:2015/06/02(火) 04:56:05.32 ID:JAKrN9QP.net
- >dequeのような両端キューはlistを使えば実現できるのでこれに対するアダプタとしてやればよさそうでもある
>だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
>かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない
これはqueueにも当てはまることではないんですか?
stackはともかくqueueでは同じような問題が発生するように思います。
それなのにstd::dequeにbegin()end()clear()があって、
std::queueにはないのは何故ですか?
- 538 :デフォルトの名無しさん:2015/06/02(火) 07:06:13.53 ID:X1wiCAZl.net
- >>537
いろんな階層の問題をごっちゃにしてるよ。
1) std::queueはインターフェースの規定であって、データ構造の実態は持たない
std::dequeはデータ構造の実装であって、データ構造の実態を持つ
2) 設計された年代が違う(c++の適用範囲が拡大された)
90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
マルチスレッドが標準で取り込まれたり、デバイスドライバーとか今までc++の適用外と思われていたジャンルでも
c++が使われるようになった。
そのため、入力と出力で違う時間とタイミングで動作するプログラムを想定する必要が出てきた。
- 539 :デフォルトの名無しさん:2015/06/02(火) 07:15:17.80 ID:GRJ74vYh.net
- アダプターっていう名前だけで
設計がぜんぜんアダプターになってないんだが
コンポジションしてるだけだろ
- 540 :523:2015/06/02(火) 10:18:56.81 ID:eS0bDxEp.net
- >>536-537
せっかく >531 で答えをもってきたのに何でまだループしてんだよ。いいかげんにしろ。
>>538
> 90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
deque も queue も C++98 からいっしょに規格に入ってるよ。
- 541 :デフォルトの名無しさん:2015/06/02(火) 12:27:56.96 ID:lYSfTpen.net
- >>540
あ、すまん。
勘違いしてた。だとしたら完全にスレチだな。
c++98からあるのなら
unix pipeとか、socketをラップしたかったのかな?
まいいや、スレチなので下りる。
- 542 :デフォルトの名無しさん:2015/06/02(火) 12:51:50.65 ID:JAKrN9QP.net
- 下りないでください。
std::queueをインターフェースの既定にとどめて、
std::dequeをデータ構造の実装にした理由は何ですか?
- 543 :デフォルトの名無しさん:2015/06/02(火) 15:13:34.06 ID:VK7JMTdH.net
- >>519
これな
- 544 :デフォルトの名無しさん:2015/06/02(火) 16:49:36.14 ID:lYSfTpen.net
- >>542
スレチだからこれで最後な
1) まず適切なスレに移住しろ、もうこのスレでは誰も答えてくれないと思うぞ
2) 質問もいいが自分でコードを書いてみろ
とりあえず、pipeを使ったプロセス間通信の例題を拾って来て
std::queueで綺麗にラッピングしてc++らしいライブラリーに仕上げて
動かしてみよう
その上でbegin()とかend()を追加する意味があるのか考えてみろ
pipeの代わりにsocketでもいいぞ
実行環境が無いなんて言うなよ、お前の好奇心はその程度だと言うことだからな
3) 名前に騙されるな
たまたま似たような名前が付いてるからと言って同じものでは無いぞ
データを格納したかったからコンテナを作った、
データ交換インターフェースを統一したかったからインターフェースを規定した
--- のかもしれない ---
違うものだけど同じ名前がつくのは良くあることだ
- 545 :デフォルトの名無しさん:2015/06/02(火) 20:24:24.00 ID:JAKrN9QP.net
- どうしてstd::dequeはコンテナで、
std::queueはインターフェイスなんですか?
何故その必要があるんですか?
--- のかもしれない ---
って何ですか?
- 546 :デフォルトの名無しさん:2015/06/02(火) 21:57:41.72 ID:5NHDuaxI.net
- >>514にちょっと笑った
- 547 :デフォルトの名無しさん:2015/06/03(水) 10:12:15.93 ID:Mg6w8zFx.net
- >>546
モデルとしては合ってるんだろうか
- 548 :デフォルトの名無しさん:2015/06/03(水) 20:40:33.57 ID:su0LbJfR.net
- あすぺがおるな。
- 549 :デフォルトの名無しさん:2015/06/03(水) 21:59:10.99 ID:dfdrJWoW.net
- このご時世にまだC++なんか使ってる奴はまず間違いなくアスペ
- 550 :デフォルトの名無しさん:2015/06/03(水) 22:35:17.80 ID:su0LbJfR.net
- 別になんでもええやん。
妙なマイルールにこだわるのがアスペ
なんでなんでとしつこく尋ねるやつも
C++を頑に拒否するやつも
- 551 :デフォルトの名無しさん:2015/06/03(水) 23:17:29.73 ID:hYqfxVSD.net
- >>549
で、ご推薦の言語は?
- 552 :デフォルトの名無しさん:2015/06/04(木) 06:16:53.70 ID:UBpVhghT.net
- D
- 553 :デフォルトの名無しさん:2015/06/04(木) 14:30:00.26 ID:0Z7pWiJ+.net
- :D
- 554 :デフォルトの名無しさん:2015/06/04(木) 14:43:47.36 ID:++3aDFpK.net
- ID++記念カキコ
- 555 :デフォルトの名無しさん:2015/06/04(木) 16:22:33.26 ID:6vqO0I90.net
- 「D++」言語ができたのかと思った
- 556 :デフォルトの名無しさん:2015/06/04(木) 16:51:01.08 ID:TldR44zJ.net
- >>554
おめでとう
- 557 :デフォルトの名無しさん:2015/06/04(木) 23:48:06.16 ID:aPnnxKdi.net
- 「妙なマイルールにこだわるのがアスペ」
「C++を頑に拒否するやつも」
⇒
俺が使ってる言語を拒否する奴はアスペ
と言うマイルール
やはりC++使いはアスペだな
- 558 :デフォルトの名無しさん:2015/06/04(木) 23:50:59.97 ID:B1uuqHGD.net
- なんという粘着
- 559 :デフォルトの名無しさん:2015/06/05(金) 00:35:34.29 ID:wP4ahALK.net
- だって脳みそがリングバッファだから
- 560 :デフォルトの名無しさん:2015/06/05(金) 15:36:09.45 ID:Cf1vS3sG.net
- 馬鹿には無理
- 561 :デフォルトの名無しさん:2015/06/05(金) 19:07:40.23 ID:+NkeWRnn.net
- やけに伸びてると思ったらまたふっるい話してんな
14と1zの話して
- 562 :デフォルトの名無しさん:2015/06/06(土) 12:03:03.14 ID:oLEmSHxB.net
- 14の話はもう相談室スレでいいだろう
14が出てからもう半年経った
- 563 :デフォルトの名無しさん:2015/06/06(土) 20:16:39.07 ID:5qQSF7z/.net
- でもあっち03の話すら通じないことあるよ
- 564 :デフォルトの名無しさん:2015/06/07(日) 01:38:09.50 ID:bygzrjaL.net
- 11はともかく03が通じないなんて
どういうことやねん
- 565 :デフォルトの名無しさん:2015/06/07(日) 03:22:55.11 ID:J7/rKSpK.net
- 狛江市
- 566 :デフォルトの名無しさん:2015/06/07(日) 16:03:47.42 ID:Mo3OVMZQ.net
- テンプレートは邪悪だから使うなとか
static_castは読みにくいし移植性がないからCスタイルにしろとか
vectorは重いから生配列にしろとかそういう人達の巣だよ
- 567 :デフォルトの名無しさん:2015/06/07(日) 20:59:31.19 ID:PwylUBiq.net
- エラー処理がクリティカルな場面では例外の使用が禁止なのは常識
- 568 :デフォルトの名無しさん:2015/06/08(月) 22:14:42.64 ID:hVlKyA7q.net
- static_castは読みにくいだけでなく危険なウンコキャストだから
忌み嫌われて仕方ない
- 569 :デフォルトの名無しさん:2015/06/08(月) 22:18:44.57 ID:6B1qdYYr.net
- そもそもキャスト使うなよ
- 570 :デフォルトの名無しさん:2015/06/08(月) 22:25:06.05 ID:sT7wPUV4.net
- void*に頼らざるを得ない場面は多い
- 571 :デフォルトの名無しさん:2015/06/08(月) 22:27:11.46 ID:y0YTb2xC.net
- auto dt = duration_cast<milliseconds>(te - ts).count();
これもキャストのうちですか?
- 572 :デフォルトの名無しさん:2015/06/09(火) 01:27:07.38 ID:3PdUfKat.net
- C++相談室でやれ。
- 573 :デフォルトの名無しさん:2015/06/09(火) 04:55:58.61 ID:PjASmsip.net
- 公式のforumでchar8_tの話がまた始まったか
- 574 :デフォルトの名無しさん:2015/06/09(火) 15:26:48.09 ID:Cm8lxY32.net
- void * は reinterpret_cast だろ。
static_cast は c なら暗黙の変換してくれるようなのを変換するのに使う、ちょっぴりだけ危険度の少ないキャスト。
例えば enum と整数の変換や、ビット幅や符号の有無が違う整数同士の変換に使う。
読みにくいことは、危ないことをしていることろを見やすくしてくれるんだから有難い話だ。
- 575 :デフォルトの名無しさん:2015/06/09(火) 16:09:41.57 ID:9FRXqzT5.net
- ことろ
- 576 :デフォルトの名無しさん:2015/06/09(火) 18:42:41.92 ID:Q+C1CVUK.net
- 値が確実に保存されている変換と
精度が落ちたり値によってはオーバーフローの恐れがある変換と
使い方を間違えていたらundefined behaviorな変換を
区別なしにstatic_castにまとめられるとマジ困るんだが
- 577 :デフォルトの名無しさん:2015/06/09(火) 19:46:35.81 ID:Pop0C6b+.net
- それはそうだけど
const外しと型再解釈までまとめられたCスタイルキャストとかいう更なる糞よりはましでしょ
- 578 :デフォルトの名無しさん:2015/06/09(火) 20:04:24.02 ID:wqkyS0f8.net
- static_castには更に、dynamic_castならチェックされるダウンキャストをノーチェックで通す機能もある
確かに更なる小分けがされてもいい
dynamic_castで「オーバーフローの恐れがある変換」もランタイムチェック有りでできてもいいような気はするけど
エラーをどうやって返すかは困るな
dynamic_cast (std::yesthrow) <char> (300) なんてな
- 579 :デフォルトの名無しさん:2015/06/09(火) 20:35:32.75 ID:Q5wqvLxp.net
- template<typename to_t, typename from_t>
auto numeric_cast(from_t) -> to_t; // 数値の変換。オーバーフロー時は例外std::overflow_error
よし>>578は中身を作ってくれ。
- 580 :デフォルトの名無しさん:2015/06/09(火) 20:46:28.56 ID:wqkyS0f8.net
- >>579
template<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;
}
こんなんでいいのか?
- 581 :デフォルトの名無しさん:2015/06/09(火) 20:49:41.71 ID:wqkyS0f8.net
- 訂正、!= だった
- 582 :デフォルトの名無しさん:2015/06/09(火) 22:33:01.84 ID:pp31NC3b.net
- >>580
こうなるようにしたいぞよ
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() ) →例外
- 583 :デフォルトの名無しさん:2015/06/14(日) 03:34:34.59 ID:IHeh8QZt.net
- auto k = {1, 2, 3}; // kはinitializer_list
って誰得な仕様なん?
f({1, 2, 3}) と同様にコンパイルエラーにして欲しいんだけど
- 584 :デフォルトの名無しさん:2015/06/14(日) 03:49:57.94 ID:iglu1H/1.net
- C++17を待て
- 585 :デフォルトの名無しさん:2015/06/14(日) 09:45:06.28 ID:CMzMEuB3.net
- スコットさんのユニバーサルリファレンスと規格ドラフトのforwarding referenceって同一ではないんだな
auto && r = 0; ユニバーサルリファレンスだがforwarding referenceでない
vector::push_back(T &&) forwarding referenceだがユニバーサルリファレンスでない
- 586 :デフォルトの名無しさん:2015/06/27(土) 22:33:38.38 ID:bsNfdhMT.net
- 久しぶりにC++を使うようになって
いい加減クラスや関数の宣言は新しいC++1yでは
なくせばいいと思う今日このごろ
ソースとヘッダに分けるのもなくせばいい
他の言語を使えば使うほどそう感じるわ
今後そういうそうしていく話とか無いの?
- 587 :デフォルトの名無しさん:2015/06/27(土) 22:50:31.98 ID:e2zMBxYg.net
- モジュール化の話が出てる
- 588 :デフォルトの名無しさん:2015/06/28(日) 05:32:25.05 ID:92vB0cyt.net
- Dでいいやん
- 589 :デフォルトの名無しさん:2015/06/28(日) 12:24:41.15 ID:Yx6X9nfm.net
- >>586
void test()
{
A * B;
}
これが宣言か掛け算かひと目で見分けられるようになったらまたおいで
- 590 :デフォルトの名無しさん:2015/06/28(日) 12:32:36.86 ID:y9vfLW2M.net
- 一見関係有りそうで実際は関係の無いことを述べて話を攪乱するというのが
詭弁のガイドラインみたいなのに有ったな
- 591 :デフォルトの名無しさん:2015/06/28(日) 17:36:18.64 ID:im5DcXMU.net
- >>589
だがまぁ、宣言と定義の区別がない言語も多いのではある
- 592 :デフォルトの名無しさん:2015/06/28(日) 23:47:51.35 ID:/6YrOuSs.net
- >>589
Aが定義されていなければどっちにしろエラーなんだから、それはヘッダだのモジュールだのといった話とは関係ない
どっちかといえば、#ifdefで宣言されてなければ宣言する式に書かれてる、場所が一定しないようなのが問題になるだろうな
ssize_tとか
- 593 :デフォルトの名無しさん:2015/06/30(火) 08:54:31.31 ID:bwgz9k+k.net
- ちがう
ここまでの A の宣言を全て把握して意味解決しないと構文解析が進まないという根本的欠陥の話
#include があればその内容をすべて展開・解析しないと進まないという馬鹿げた話
- 594 :デフォルトの名無しさん:2015/06/30(火) 14:37:41.25 ID:w7Ekwv0Z.net
- コンパイラにとっては結局すべて解析しないといけないのは変わらんが、エディタでも作ってんのかな
- 595 :デフォルトの名無しさん:2015/06/30(火) 21:08:16.41 ID:RlLmESno.net
- >ここまでの A の宣言を全て把握して意味解決しないと構文解析が進まない
全く欠陥ではないと思うのだが何がいけないんだろう
static strong typingな言語を全否定?
- 596 :デフォルトの名無しさん:2015/07/01(水) 00:06:35.67 ID:ZU1/EKD0.net
- var B:A*;
とかがいいって言ってるんじゃない?
- 597 :デフォルトの名無しさん:2015/07/01(水) 02:14:31.91 ID:1cGzpLPZ.net
- ソースコード上に具体的なクラス名やクラスのメンバーの前方参照が無くても宣言を探す仕組みが必要
---A.cpp---
// (ここには前方宣言なし)
::myns::myclass::myfun (); // → 他ファイルの宣言を探しに行く
--------------
Javaならクラス名からファイル名を求め、
C#なら全てのコンパイル対象から探す
- 598 :デフォルトの名無しさん:2015/07/01(水) 05:37:05.50 ID:Wee9bcwF.net
- ソースとヘッダに分けるのは確かに面倒だな
でも分けないともっと面倒なことになる
- 599 :デフォルトの名無しさん:2015/07/01(水) 05:50:16.17 ID:/48a4Fba.net
- >>597
Javaならクラス=ソースファイルだからいいけど、moduleも従来型namespaceもclassも全部名前空間を作って :: を使うC++でそりゃ無理だ
いや無理じゃないけど衝突してるときにめんどくさいだろ
moduleの提案でもimportって書かせるようになってるだろ
- 600 :デフォルトの名無しさん:2015/07/01(水) 10:23:39.89 ID:LAJVZcmt.net
- 個人的な趣味で言えば
コンパイラが頑張って人の労力を減らす方向に進んで欲しい
はじめてc言語で関数プロトタイピングを見たときなんじゃこれ?と思ったもん
そんなの2パスしてでもコンパイラが探せばいいやん
秒何円で課金されてた時代じゃないんだし
今のC++だと、テンプレートはヘッダに置くべきか、cppファイルに置くべきか
どこでテンプレートか実体化されるとか、何度も実体化されるのを防ぐにはどう書けばいいかとか
そんなのは人間が考えることではなくて
コンパイラが頑張るべきところだと思うよ
- 601 :デフォルトの名無しさん:2015/07/01(水) 12:28:43.93 ID:k5RhOFay.net
- 勝手に探されたら隠蔽できないやん
- 602 :デフォルトの名無しさん:2015/07/01(水) 12:30:04.86 ID:tlC5n+XG.net
- C#だと関数プロトタイプ不要だけど、C++は互換性の問題もあって消せないんじゃないの
関数一覧表としても機能してるし
- 603 :デフォルトの名無しさん:2015/07/01(水) 12:42:44.94 ID:gbbyRw8c.net
- 関数プロトタイプ不要にはできるんじゃないの
今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし
- 604 :デフォルトの名無しさん:2015/07/01(水) 12:47:53.20 ID:tlC5n+XG.net
- 不要には出来るよ
というか本当は不要にしてほしい
classの前方宣言とか面倒くさいしコンパイル通らない事もしばしば
ただ関数templateのオーバーロードの順番は大事だったりするので入れ替えただけで
思った通りに正しく動かない事があるとか他にも解決しないといけない問題があるね
- 605 :デフォルトの名無しさん:2015/07/01(水) 13:08:29.02 ID:/48a4Fba.net
- 不要にはできるけど、#includeを完全に捨て去るの必須だよな
現状でやっても、アプリケーションコードがシステムヘッダーの内容に影響して
プリコンパイルヘッダーが使えなくなるばかりか
ちょっとうっかりするとライブラリが内部で使ってる名前をオーバーロードしてしまい色々ぶっ壊す不幸な未来しか見えない
- 606 :デフォルトの名無しさん:2015/07/01(水) 13:48:59.83 ID:gMCljQ/I.net
- 現実的な線はIDEでヘッダを自動生成するくらいだべ
- 607 :デフォルトの名無しさん:2015/07/02(木) 01:49:24.89 ID:D1cbsXF3.net
- ドキュメントも自動生成するための規格を策定して欲しい
- 608 :デフォルトの名無しさん:2015/07/10(金) 11:06:53.35 ID:99yaLJY4.net
- 機械翻訳みたいに一件よさげでもよく読むとイミフなドキュメントを量産されると迷惑だ
ソース読めばわかることはせいぜい気の利いたIDEがあれば充分
ソース読んでもわからんことをドキュメントに求めるわけで
それは人力でしか作れない
- 609 :デフォルトの名無しさん:2015/07/10(金) 11:44:22.55 ID:bM2M5Hwn.net
- ドキュメント記述が目指すべき究極的な理想形、それは
モニタに貼られたログインパスワードの付箋
- 610 :デフォルトの名無しさん:2015/07/10(金) 12:38:31.58 ID:rsWVLm23.net
- >>608
ほんそれ
- 611 :デフォルトの名無しさん:2015/07/11(土) 14:27:22.00 ID:I825HQOD.net
- 関数のプロトタイプ宣言を不要にすることは出来るけど、
C++のスタイルを維持するのであれば、厳しい条件があるね。
それは、「1コンパイル単位内であれば」、出きる、ということ。
例えば一つのcppファイル内であれば、関数のプロトタイプ宣言を無しにすることも可能。
ただし、現状の規格はそうはなってないが。
あちこちのcppファイルに実装が散らばっている状況なら原理的に無理。
だ・か・ら、
「今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし」
ということになってる。
クラス定義は、絶対に1コンパイル単位内に収まるから、
その中であれば順不同でもOKってことになってる。
- 612 :デフォルトの名無しさん:2015/07/11(土) 15:33:34.10 ID:iW45GXJ2.net
- >あちこちのcppファイルに実装が散らばっている状況なら原理的に無理
どうして無理なのよ?
- 613 :デフォルトの名無しさん:2015/07/11(土) 16:56:33.12 ID:HDTdm+Tv.net
- クラス定義の中での前方参照も、型はダメとか中途半端なので、
どーでもいい前置きが本題より目立つレイアウトにさせられたり、
忘れた頃に不意に引っかかって脱力させられたりするね
- 614 :デフォルトの名無しさん:2015/07/11(土) 18:28:13.86 ID:XZZz4YSC.net
- つまり D だな
- 615 : ◆QZaw55cn4c :2015/07/11(土) 21:29:36.05 ID:JDB4xEHW.net
- ファイルスコープで前方参照OKだと,いろいろウけると思うよ
とりあえず C で誰かやってくれ
そのときにはオーバーロードとテンプレートもついでにつけてくれ
クラスは要らん
- 616 :デフォルトの名無しさん:2015/07/11(土) 21:38:43.17 ID:jUbbrAxgP
- だからさ、上から下というのが無いとアプリケーションコードがシステムヘッダーに影響して悲惨なことになるだろ
- 617 :デフォルトの名無しさん:2015/07/11(土) 21:38:57.56 ID:Yv9cPz5q.net
- だからさ、上から下というのが無いとアプリケーションコードがシステムヘッダーに影響して悲惨なことになるだろ
- 618 : ◆QZaw55cn4c :2015/07/11(土) 21:42:34.32 ID:JDB4xEHW.net
- あからさまに2-pass にして,矛盾が発生したら停止する,程度じゃだめなの?
- 619 :デフォルトの名無しさん:2015/07/11(土) 21:43:42.49 ID:FdAid2Wa.net
- 何で前方宣言みたいなヘンテコなもんが必要なんだよ。宣言してなくてもコンパイラお前自身は何がどこで定義されているか全部知っているんだから適当に上手くやれよ。馬鹿みたいなエラーメッセージ吐くんじゃ無くて。
- 620 :デフォルトの名無しさん:2015/07/11(土) 22:01:02.75 ID:Yv9cPz5q.net
- >>618
例えば
hoge.h
void g(short);
inline void f() { g(1); } //上のを呼んでるつもり
app.cxx
void g(int) {...} //知らないで同名の関数を宣言、実際にはこっちが呼ばれてしまう
この例だとnamespace使って回避もできるけど、いちいち気にしてたらきりない
- 621 :デフォルトの名無しさん:2015/07/11(土) 22:18:19.84 ID:I825HQOD.net
- >>619
分割コンパイルするからそうはいかない。
a.cppコンパイル中はb.cppのことは忘れてる。
- 622 :デフォルトの名無しさん:2015/07/11(土) 22:40:40.62 ID:FdAid2Wa.net
- >>621
それをどうにかするのが工夫っていうもんだろ。出来ない出来ないって言ってたら何時迄も出来ない。
まあc、c++は何時迄も古臭い時代遅れな言語の欠点を引きずったまま、ヘンテコな仕様を馬鹿みたいに取り入れて迷走する運命だろうなあ。
- 623 :デフォルトの名無しさん:2015/07/11(土) 22:54:24.55 ID:HDTdm+Tv.net
- つまり、こうなっているべきだと言いたいのか?
内部結合または無結合の識別子は当該スコープで前方参照できる
外部結合が暗黙に行われることはなく
その識別子をexternを指定して宣言したスコープで前方参照できる
- 624 :デフォルトの名無しさん:2015/07/11(土) 22:55:33.43 ID:Yv9cPz5q.net
- そりゃー互換性をぶっ壊していいなら何でもできるよ
具体的にはモジュールが入ってかつ完全に#include捨てていなら、つまりDやC#みたいにしていいならできる
前方宣言を取り除くためだけに、C言語のヘッダーファイルを読めないC++になって誰からも見向きされなくなってもいいってんなら提案してみたら?
それこそ迷走だけどな
- 625 :デフォルトの名無しさん:2015/07/11(土) 23:04:21.23 ID:6ws9vREv.net
- 互換性ないんならC++じゃなくていいよね
それこそD言語でいい
- 626 :デフォルトの名無しさん:2015/07/11(土) 23:18:59.54 ID:I825HQOD.net
- ともかく、今の文法では無理。
C++は構造体のメンバに他の構造体の実態を持てるので。これが痛い。
コンパイル時に構造体のサイズを計算するとき、
互いのファイルで相互依存が有った場合、問題が出る。
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 どちらを先にコンパイルしても問題が起こる。
こういうことが起こりうる言語で、前方宣言を許すために依存関係を調べてコンパイル順を
自動化するのは無謀。突然「依存関係エラー」とか言われても、エラーの意味が大きすぎる。
自動化できないならマニュアルで行くしかない。
- 627 :デフォルトの名無しさん:2015/07/11(土) 23:28:53.50 ID:I825HQOD.net
- 訂正
a.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; };
前方宣言を許すために >> 前方宣言を無くすために
- 628 :デフォルトの名無しさん:2015/07/11(土) 23:56:25.53 ID:I825HQOD.net
- >>613 も 「クラス定義の中での前方参照も、型はダメとか中途半端なので、」
と書いているように、クラスや構造体のサイズ問題は色々と足を引っ張る。
型の前方参照がダメなのは、型のメンバ変数の定義に依存関係が出ると、サイズの決定が面倒なことになるから。
ちなみに、class a; と前方宣言しておくと、ポインタなら持てるようになる。
それから、メソッドの中で型をインスタンス化したりは問題ない。依存関係が発生しないので。メンバに持とうとすると怒られる。
よく考えられているギリギリの攻めの仕様だね。
コンパイラの都合を考えない人からすれば、まったく意味不明な仕様だが。
- 629 :デフォルトの名無しさん:2015/07/12(日) 00:10:07.93 ID:RBuqBeAH.net
- struct outer{
struct a
{
//c m1; //NG
//c *m2; //NG
void method(){ c inst; } //メソッド内ではOK
};
struct c; //前方宣言
struct b
{
//c m1; //NG
c *m2; //OK
};
struct c{};
};
な、かなりカオスだろ。
- 630 :デフォルトの名無しさん:2015/07/12(日) 00:15:28.69 ID:RBuqBeAH.net
- まー単一コンパイル単位であることが保障されている、クラス内の前方参照ですらこんな有様なんで、
コンパイル単位間を跨った前方参照なんぞ、夢のまた夢なんですわ。
- 631 :デフォルトの名無しさん:2015/07/12(日) 01:04:07.12 ID:wWInxoH0.net
- >>630
待て待て、コンパイル単位間を跨がっている場合の「前方」とは
どんな意味であるべきだ?
- 632 :デフォルトの名無しさん:2015/07/12(日) 01:17:35.77 ID:wUBcw7SV.net
- 全然カオスに見えないんだが
>>629が全部OKになればいいだけだろ
包含関係の循環依存なんてむしろコンピューターに検出させるべきこと
互換性についても今まで「宣言されてないエラー」だったのが
コンパイルできるようになるだけで問題ない
- 633 : ◆QZaw55cn4c :2015/07/12(日) 08:58:02.81 ID:0rRLNK9E.net
- >>618
それは数値リテラルがshot/longどうとでも解釈可能なことによる.
前方参照解禁となんら関係ない
- 634 :デフォルトの名無しさん:2015/07/12(日) 09:26:46.02 ID:h/IZWasR.net
- クラス(構造体)内のクラスメンバはC系の特権だからなー。
javaは暗黙にそれを禁止したからうまく成り立ってるよね。
あれ本質的に全部ポインタだもんな。
C#はどうなんだろうか?
後からstructが追加されてたよね
- 635 :デフォルトの名無しさん:2015/07/12(日) 10:23:28.30 ID:BKAToTl0.net
- つまり>>619の主張は完璧に正しい。
c++がこういう欠点を解決しない限りc++プログラマーはくだらないエラーに悩ませ続けられる。
- 636 :デフォルトの名無しさん:2015/07/12(日) 11:56:35.39 ID:X+7tQsgp.net
- D使え
- 637 :デフォルトの名無しさん:2015/07/12(日) 11:58:51.97 ID:ahQPxZ3Y.net
- >>634
C#は最初からstructがあるし>>627も問題ない。
これを実現するために複数ソースの同時コンパイル機能があるから
- 638 :デフォルトの名無しさん:2015/07/12(日) 13:32:52.07 ID:PDFfD/6i7
- >>633
1はint
「どうとでも解釈可能」なんて言ってる奴は初心者スレに行ってろ
あと、オーバーロードは一例で、templateの特殊化なり
後からなんか追加できる類の機能を全部気にしないといけなくなる
- 639 :デフォルトの名無しさん:2015/07/12(日) 13:38:42.96 ID:9keGjwZf.net
- >>633
1はint
「どうとでも解釈可能」なんて言ってる奴は初心者スレに行ってろ
それにオーバーロードは一例で、templateの特殊化なり
後からなんか追加できる類の機能を全部気にしないといけなくなる
あと他人の話だけど、>>626-627は2パスすればいけるんでこれ論破しても意味ないから
C#でいけるのは複数ソースの同時コンパイル機能があるからじゃないぞ、単に解決順の問題だぞ
- 640 :デフォルトの名無しさん:2015/07/13(月) 20:51:18.51 ID:/+jGDn94.net
- ま、他の言語がヘッダーやプロトタイピング無しで実行可能なのだから
C++で出来無い理由は無いよね
ヘッダーやプロトタイピングが未だに存在することの積極的な意味は何なんだろう?
- 641 :デフォルトの名無しさん:2015/07/13(月) 21:01:08.49 ID:cqAtn6Bc.net
- dllやlibを使うために必要
- 642 :デフォルトの名無しさん:2015/07/13(月) 21:34:55.11 ID:p5CUZ6+O.net
- 要らないだろ
前方参照を止めるにはコンパイル済みバイナリにAST情報を持たないといけない
それができればdllを使うのにヘッダーファイルなんか不要
- 643 :デフォルトの名無しさん:2015/07/13(月) 21:40:59.64 ID:/+jGDn94.net
- >>641
libは知らんがdllはインターフェース情報提供機能が付いとるがな
VisualBasicはそれを使ってdllを組み込んどるぞ
- 644 :デフォルトの名無しさん:2015/07/13(月) 21:52:26.85 ID:YJ7kBspy.net
- コーヒーフイタ
- 645 :デフォルトの名無しさん:2015/07/13(月) 22:11:26.37 ID:0L3Aegsb.net
- エクスポートテーブルには何が書き込まれているのか
- 646 :デフォルトの名無しさん:2015/07/13(月) 22:13:20.28 ID:cqAtn6Bc.net
- >>643
引数の型の情報も入ってるの?
- 647 :デフォルトの名無しさん:2015/07/14(火) 03:33:11.06 ID:myrBvFFH.net
- typelibraryですねわかります
- 648 :デフォルトの名無しさん:2015/07/14(火) 12:01:41.75 ID:izOjheDY.net
- dll=アセンブリ
- 649 :デフォルトの名無しさん:2015/07/14(火) 12:02:21.27 ID:izOjheDY.net
- しまった、.Netをつけなきゃ冗談にもならなかった
- 650 :デフォルトの名無しさん:2015/07/14(火) 12:37:40.50 ID:i07Qd/9G.net
- つまりc++はVS以下って事ですね
- 651 :デフォルトの名無しさん:2015/07/14(火) 16:59:49.32 ID:rkpz8f5t.net
- つまんね
- 652 :デフォルトの名無しさん:2015/07/17(金) 08:07:25.90 ID:6TGdteu7.net
- DLL=ファイルの拡張子
中身は海の物とも山の物とも
- 653 :デフォルトの名無しさん:2015/07/17(金) 08:25:49.02 ID:Qe5AklCd.net
- DLLがとれるのは
大西洋!(ばっ
- 654 :デフォルトの名無しさん:2015/09/06(日) 15:44:07.39 ID:zOKUDR9w.net
- ネタがないんだが、再来月になったら何かネタ出てくるのかな
個人的にはコルーチンに期待してる
- 655 :デフォルトの名無しさん:2015/09/20(日) 22:58:03.31 ID:ELqIl0hw.net
- std::queue、std::stackにbegin endが追加されるんだってね
- 656 :デフォルトの名無しさん:2015/09/21(月) 00:23:58.26 ID:a3EaoSZA.net
- へー
そんなことよりユー、
queueのContainerをpublicにしちゃいなよ
- 657 :デフォルトの名無しさん:2015/09/21(月) 00:28:28.72 ID:C/PElB1R.net
- それは本末転倒だろう
- 658 :デフォルトの名無しさん:2015/09/22(火) 20:42:45.81 ID:8KGIzFka.net
- C++は工夫しやすい
- 659 :デフォルトの名無しさん:2015/09/22(火) 22:33:13.52 ID:Mc6udnQt.net
- protected Container c; とかいう地雷
- 660 :デフォルトの名無しさん:2015/09/23(水) 00:13:55.42 ID:TLLF1cyb.net
- >>657
分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計の方が変だろう
begin/endなんてもはやアダプターじゃなくてコンポジションの発想
- 661 :デフォルトの名無しさん:2015/09/23(水) 05:56:12.60 ID:sl1FEDPC.net
- >>660
アクセスをあえて制限する設計にしてるんだが
制限されたくなければ元のコンテナ自身を使えばいいだろう
単にqueueって名前が欲しければ今ならエイリアステンプレートがあるからそれを使えばいい
- 662 :デフォルトの名無しさん:2015/09/23(水) 06:40:39.84 ID:nPFFi/Oi.net
- >制限されたくなければ元のコンテナ自身を使えばいいだろう
へー、どうやって?
- 663 :デフォルトの名無しさん:2015/09/23(水) 06:45:32.87 ID:sl1FEDPC.net
- queueならデフォルトのコンテナはdequeだから
deque使えばいいんじゃない?
- 664 :デフォルトの名無しさん:2015/09/23(水) 07:00:49.80 ID:nPFFi/Oi.net
- >>663
>分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計
↓
>元のコンテナ自身を使え
俺コンテナーにqueueをアダプトさせてFIFOとして使いつつ
もとの俺コンテナーも操作したいんだろ?
嫌な使うなとはこれ如何に
- 665 :デフォルトの名無しさん:2015/09/23(水) 07:03:36.94 ID:qfkgp73Y.net
- それこそ俺コンテナそのまま使えばええやん…
- 666 :デフォルトの名無しさん:2015/09/23(水) 07:14:20.75 ID:sl1FEDPC.net
- >>664
俺コンテナには
empty
size
front
back
push_back
pop_front
が実装されてるんだからqueueなんて被せずにそのまま使えばいいだろ
- 667 :デフォルトの名無しさん:2015/09/23(水) 11:32:18.96 ID:nPFFi/Oi.net
- おやおや、コンテナーでなくコンテナーアダプターの名を冠するクラスに
Containerへのアクセス手段が無いことの是非だったのに、話のすり替えですか
- 668 :デフォルトの名無しさん:2015/09/23(水) 11:37:53.83 ID:sl1FEDPC.net
- 是非ならそんな機能は必要ないで一貫している
- 669 :デフォルトの名無しさん:2015/09/23(水) 11:42:36.88 ID:qfkgp73Y.net
- 設計と称して意味のない糞を積み重ねてそうなやつだなぁ
- 670 :デフォルトの名無しさん:2015/09/23(水) 11:56:29.87 ID:GrwEgYS1.net
- ququeを使っていて元のコンテナの関数を呼ばなきゃ困る状況がそもそもおかしい
- 671 :デフォルトの名無しさん:2015/09/23(水) 13:21:00.12 ID:nPFFi/Oi.net
- >>668
でもその根拠が出せないんだろ低能は
アダプターである以上コンテナーの各要素にアクセスしたければ
基となっているコンテナーを使うのが自然なのだが
馬鹿には難しかったかな
- 672 :デフォルトの名無しさん:2015/09/23(水) 13:34:07.40 ID:vCV7DdUW.net
- 反論できないからバカがレッテル張りに逃げたな
情けない
- 673 :デフォルトの名無しさん:2015/09/23(水) 13:42:19.52 ID:sl1FEDPC.net
- >>671
>制限されたくなければ元のコンテナ自身を使えばいいだろう
>コンテナーの各要素にアクセスしたければ基となっているコンテナーを使うのが自然なのだが
俺が言ってることと同じじゃねーか
アホらしい
- 674 :661:2015/09/23(水) 14:13:34.93 ID:IdB+1WFh.net
- >>673
表現がおかしかったわ
「(protectedで持ってる)基のコンテナーを必要に応じて使うのが」
って意味だ
protectとして持ってる時点でqueueに規定されたメンバー関数以上に基のコンテナーにアスセスしたい可能性を考慮しているのは明らかなのだが
- 675 :デフォルトの名無しさん:2015/09/23(水) 15:12:20.85 ID:1nbCBLRf.net
- ISO標準化委員会ってサボってない?
17はベータなので20までに考えればよしw
的に手を抜いてる気がするんだけど
- 676 :デフォルトの名無しさん:2015/09/23(水) 18:10:20.77 ID:CGnTB/Fy.net
- ワザワザ特定用途向け制限を掛けたクラスを使っておいて「制限が邪魔だから中身晒せ」とかアホかと
- 677 :デフォルトの名無しさん:2015/09/23(水) 18:11:42.12 ID:Wyd23K9z.net
- 無理に新機能を考え出すことが仕事ではないし
もうこれ以上仕様を複雑にして欲しくないという考えもある
- 678 :デフォルトの名無しさん:2015/09/23(水) 18:41:20.94 ID:dN3Md19M.net
- 仕様が複雑なのは確かに嫌だが、それだけ細部に渡りよく考えられているとも言える
- 679 :デフォルトの名無しさん:2015/09/23(水) 19:50:47.80 ID:M/UFFhhb.net
- やり過ぎ感もあるけど。覚えるのと機能が盛り込まれるのとどっちが早いか?
- 680 :デフォルトの名無しさん:2015/09/24(木) 23:16:22.80 ID:johpD7Pz.net
- 学習と機能追加が拮抗していたら
新たに学習することが不可能な言語
つまりC++はクソ
- 681 :デフォルトの名無しさん:2015/09/25(金) 00:26:55.06 ID:ctMDjOwA.net
- 完璧に学習を完了しなければコードを書き始めてはいけないのもc++の辛いところだな
学習と並行しようものなら指からエラー吐いて死ぬ
- 682 :デフォルトの名無しさん:2015/09/25(金) 08:18:45.92 ID:tSApNX4H.net
- 新機能はツールかなんか書くときに試せばいい。
本番コードは試用済みの範囲で書く。
- 683 :デフォルトの名無しさん:2015/09/25(金) 08:51:08.73 ID:1Sci0ai7.net
- そろそろさ、c++は仕様を分割してもいいと思うの
少なくとも教科書レベルではさ
理想的には言語レベルで分割されてる方がいいんだろうけどね
アプリケーションプログラマはまずこの範囲を勉強しなさい
ライブラリやフレームワークのプログラマはここまでは知っておく事
カーネルやドライバ書く人は、使っていい機能と使ってはいけない機能の把握と
この範囲の機能を詳細に把握しとく事
とか、
- 684 :デフォルトの名無しさん:2015/09/25(金) 09:23:03.93 ID:TiOImkoB.net
- サブセット作るとスッポスッポ先生が怒りで禿げ上がる
- 685 :デフォルトの名無しさん:2015/09/27(日) 10:37:21.39 ID:P22Nc8Qh.net
- EC++がカスだっただけで、サブセット作ること自体が悪いとは思わないけどなあ
そもそもあれサブセットになってねえし
- 686 :デフォルトの名無しさん:2015/09/27(日) 20:29:40.62 ID:PiG+2JjX.net
- 分割ったって、入り組んでるからなあ
正規表現ライブラリは使わない人には不要とかなら簡単だけど、
&と&&の違いを勉強しなくていいような分割ってどうやるのよ
- 687 :デフォルトの名無しさん:2015/09/27(日) 20:30:21.61 ID:PiG+2JjX.net
- なんかsageが入ってなかった、スマン
- 688 :デフォルトの名無しさん:2015/10/03(土) 04:08:11.52 ID:V9fK1jG1.net
- 2015-09 mailingから文書番号の振り方変わったのか
- 689 :デフォルトの名無しさん:2015/10/17(土) 11:42:11.79 ID:eobsIaaP.net
- C++11で止めてほしかった
どんどん新しいの出てきてわけわからん
- 690 :デフォルトの名無しさん:2015/10/17(土) 13:50:07.50 ID:5Tc8rVn8.net
- 勉強するの止めたらエンジニアとして終わってるよね
- 691 :デフォルトの名無しさん:2015/10/17(土) 17:00:23.36 ID:2beLGnBn.net
- 実装されて仕事で使えるまでかなり時間が掛かる。複数人プロジェクトだと新しい技術が使用禁止になる事もある
- 692 :デフォルトの名無しさん:2015/10/17(土) 17:33:18.43 ID:Bi5hrpIG.net
- 勉強なら、C++なんかより他にやったほうがいいのはいくらでもあるしな……
- 693 :デフォルトの名無しさん:2015/10/17(土) 17:37:53.61 ID:CwjAOs6z.net
- 去年の保守案件で環境がVC6だったわ
- 694 :デフォルトの名無しさん:2015/10/17(土) 17:39:07.67 ID:2XpKsNEE.net
- 時間が経てば先人が学習コストに見合うと判断した機能だけを享受できる
しかしその先人が
- 695 :デフォルトの名無しさん:2015/10/17(土) 18:07:05.12 ID:2beLGnBn.net
- ネットに接続可能な環境でVC++6を使うには7のバーチャルPC内にネットワーク閉じたXP以下を入れるしかないけど
- 696 :デフォルトの名無しさん:2015/10/17(土) 18:16:37.88 ID:CwjAOs6z.net
- 開発環境も実機もXPだったが?
セキュリティなんて知らない
- 697 :デフォルトの名無しさん:2015/10/18(日) 02:12:27.68 ID:5Xr103kg.net
- 現実って怖い
- 698 :デフォルトの名無しさん:2015/10/18(日) 02:15:04.58 ID:ZzLdZTYh.net
- 先日医者に行ったらXPが現役で動いてたぞ
- 699 :デフォルトの名無しさん:2015/10/18(日) 02:57:00.85 ID:ok+rssbA.net
- スレチになるけど現場の実態なんてこんなもん
5年位前だが客先でwin3.1が動いてた
去年〜今年でwin2000からリプレースした所もある
pc98系統の更新案件もあった(受注したかは知らない)
測定装置の付属PCはXPが現役
ISAバスで機械制御してるのもまだ生きてるはず
- 700 :デフォルトの名無しさん:2015/10/18(日) 05:04:59.10 ID:RA8eISXe.net
- インターネットにさえ繋がなければ古いシステムでも問題ないだろう。
出力のみで何か入れるとかしなければ更に良い。
- 701 :デフォルトの名無しさん:2015/10/18(日) 09:19:50.27 ID:/sWHFkJh.net
- ボイラーの管理ツールがDOSだったな
フロッピードライブが壊れたっていわれたけど、PC9801だからどうにもならなかった
でもドライブクリーニングしたら動いたから、早くリプレースしてほしいわ
- 702 :デフォルトの名無しさん:2015/10/18(日) 13:05:42.92 ID:Q87slw7q.net
- 現役乙
- 703 :デフォルトの名無しさん:2015/10/21(水) 09:40:43.68 ID:ZelGeJhk.net
- C++14って他人に言う時は
シープラプラフォーティーンって言うの?
- 704 :デフォルトの名無しさん:2015/10/21(水) 10:42:45.49 ID:zPyN71xI.net
- シープラスプラスジュウヨン
- 705 :デフォルトの名無しさん:2015/10/21(水) 10:48:24.62 ID:t8SS3rgX.net
- しーぷらぷらいちおつ、じゃなくて、しーぷらぷらいちよん
- 706 :デフォルトの名無しさん:2015/10/21(水) 13:40:40.38 ID:YvlNWtLN.net
- しーぷらたすいっちょん
- 707 :デフォルトの名無しさん:2015/10/21(水) 13:54:55.37 ID:3W0cBDQG.net
- ちんこぷらぷら い〜よ〜
- 708 :デフォルトの名無しさん:2015/10/24(土) 01:02:19.88 ID:ACA6GzH5.net
- initializer_listのサイズもテンプレートパラメタだったら少しよかったのに
まあarrayでいいんだけど、いちいちmake_arrayって書きたくないから
tupleやarrayのuser defind literalsって書けないもんかね
- 709 :デフォルトの名無しさん:2015/10/24(土) 01:47:58.60 ID:ACA6GzH5.net
- > tupleやarrayのuser defind literalsって書けないもんかね
しまった普通にconstexpr関数で書けばいいのだ
- 710 :デフォルトの名無しさん:2015/10/24(土) 03:00:35.71 ID:3cj2wJ90.net
- >>708
> initializer_listのサイズもテンプレートパラメタだったら少しよかったのに
なんで?
- 711 :デフォルトの名無しさん:2015/10/24(土) 08:41:17.40 ID:9vIUQxwG.net
- >>710
initializer_listを引数にとるconstexpr関数の中で、static_assert(il.size() > 0)とか
したかったものだから。
でも寝てる間に気がついたけど、これは休むに似たりという奴だ……
気にしてくれてありがとう。
- 712 :デフォルトの名無しさん:2015/10/24(土) 11:40:26.94 ID:spMGZ8yf.net
- >>711
C++14からinitializer_listのコンストラクタもsize()も、というかメンバ関数全部constexprだぞ
- 713 :デフォルトの名無しさん:2015/10/24(土) 12:23:04.29 ID:9vIUQxwG.net
- >>712
それが、関数引数になると定数式じゃなくなっちゃうんですよ。
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()も定数式じゃない
}
- 714 :デフォルトの名無しさん:2015/10/24(土) 14:38:22.93 ID:9vIUQxwG.net
- まあコンパイル時に計算されなくても大した計算量じゃないんですけどね。
constexpr関数はconstexpr関数しか呼べないから気になります。
- 715 :デフォルトの名無しさん:2015/10/25(日) 18:43:13.64 ID:zgU7ZYeY.net
- Konaミーティングおわた
- 716 :デフォルトの名無しさん:2015/10/25(日) 19:22:58.82 ID:AAElqWBN.net
- そうかそうか、誰か結果をまとめてくれ
- 717 :デフォルトの名無しさん:2015/10/27(火) 00:18:14.50 ID:MnWxRx4S.net
- 英語だけど
https://www.reddit.com/r/cpp/comments/3q4agc/c17_progress_update_oct_2015/
- 718 :デフォルトの名無しさん:2015/10/27(火) 03:28:09.21 ID:zSXYbgdR.net
- うむ、ご苦労
だがモジュールとコルーチンがどうなったのかよくわからんぞ
- 719 :デフォルトの名無しさん:2015/10/27(火) 04:57:08.40 ID:kXLLNmC/.net
- Effective modern c++の日本語版が出てるね
- 720 :デフォルトの名無しさん:2015/10/28(水) 12:45:31.90 ID:ZMMpG7qX.net
- 日本語版ダメ、ゼッタイ
- 721 :デフォルトの名無しさん:2015/10/28(水) 14:27:47.90 ID:KgN4RL86.net
- >>720
日本語版良くないの?
それと、まだ未読なんだけど
前作のEffective c++を置き換えるものなのか
両方とも読むべきものなのか
どっちだろう?
- 722 :デフォルトの名無しさん:2015/10/28(水) 14:44:03.47 ID:uVyj7vhU.net
- コカイン女性タレントってだれだろ
- 723 :デフォルトの名無しさん:2015/10/28(水) 19:23:16.84 ID:50amutaY.net
- 両方読むべき
- 724 :デフォルトの名無しさん:2015/10/29(木) 12:44:41.87 ID:jYkr1Igb.net
- 多分置き換えにはならないと思う
11と14の機能に絞った話だったはずだから
- 725 :デフォルトの名無しさん:2015/10/29(木) 12:51:42.42 ID:jYkr1Igb.net
- あとクソ訳かどうかは第一章を読んでから判断しても遅くないと思う
http://www.oreilly.co.jp/pub/9784873117362/ch01.pdf
- 726 :デフォルトの名無しさん:2015/10/30(金) 23:43:48.40 ID:osGQlyPp.net
- 「ユニヴァーサル リファレンス」
草生えそうになったわ
- 727 :デフォルトの名無しさん:2015/11/11(水) 18:58:54.13 ID:ZfyuZUZx.net
- https://isocpp.org/blog/2015/11/kona-standards-meeting-trip-report
来年6月の会議でC++17の機能が固定される予定だと
- 728 :デフォルトの名無しさん:2015/11/11(水) 23:36:22.21 ID:Qsz2Nv9Y.net
- モジュールシステム入ってほしいなぁ
- 729 :uy ◆Qawu9.2l1E :2015/11/12(木) 00:16:31.43 ID:vfLy0hrq.net
- ただのプチ強いC言語として使えば良かったのに
他の機能を見なかった事にすれば良かったのに
欲を出して自分なら扱えるんだ自分は頭が良いんだーって
数千〜数万時間という無駄な時間を浪費していく人がいるのはこのスレですか?
あたな方の毛根は悲鳴を上げてます
- 730 :uy ◆Qawu9.2l1E :2015/11/12(木) 00:25:04.64 ID:vfLy0hrq.net
- 嘘です C++やりたいです
- 731 :デフォルトの名無しさん:2015/11/12(木) 00:25:06.56 ID:YhDjZDip.net
- もうこんな時間か。 毛根だけに。
- 732 :デフォルトの名無しさん:2015/11/12(木) 03:35:28.98 ID:lozeCk1H.net
- 次々回のミーティングで機能fixする予定なんだとしたら中規模以上の
機能追加は次のミーティングまでに提案書が出されたものまでかな
- 733 :デフォルトの名無しさん:2015/11/12(木) 22:24:16.57 ID:GaR/agwA.net
- もう少しだけシンタックスが汚くならないようにって視点があれば良かったのにね。
- 734 :デフォルトの名無しさん:2015/11/13(金) 00:50:09.24 ID:6HVQn7jH.net
- C++学園入学願書締切間近
- 735 :デフォルトの名無しさん:2015/11/14(土) 00:00:54.07 ID:iREj21cb.net
- ところでUTF16型が追加されてxerces-c++は変わったかな?
いつも文字列変換で苦労してたからなぁ
- 736 :デフォルトの名無しさん:2015/11/17(火) 19:34:36.01 ID:ue9cUm18.net
- 2015-11 mailing is available
- 737 :デフォルトの名無しさん:2015/11/19(木) 22:58:23.47 ID:co3yp3cP.net
- > 2015-11 mailing
何か浮かれたpaper多くないか
- 738 :デフォルトの名無しさん:2015/11/19(木) 23:27:16.67 ID:C3NAuofd.net
- >>737
「浮かれた」の意味が分からん。具体的に頼む。
- 739 :デフォルトの名無しさん:2015/11/20(金) 00:43:26.57 ID:Cs4o/AZj.net
- 単なる個人の感想なんだが
P0157R0 Handling Disappointment in C++
> ガッカリを扱う方法
> 関数が失敗したとき、我々はガッカリする。
テクニカルタームとしてdisappointmentってどうよ
P0172R0 Abominable Function Types
> 型システムの片隅には暗闇がある。それを知るものは限られている……
> 忌まわしき関数型
ホラーかよ
あとpaperじゃないけど
P0092R1 Polishing
タグをエスケープし忘れ、磨くって何をだよ
しかもisocpp.orgにガッツリそのまま転記だわざとか!
と突っ込む回数がふだんより多かったんだ
- 740 :デフォルトの名無しさん:2015/11/20(金) 05:23:18.46 ID:+bHteJqq.net
- でもまぁ、コンピュータ用語なんて昔から恥ずかしい言葉が多いよな
今はガッカリでもそのうちテクニカルタームとして定着する物も出てくるだろ
- 741 :デフォルトの名無しさん:2015/11/20(金) 14:12:54.71 ID:AMmCkZV3.net
- 新しいC++で、ラムダの引数の型をautoに出来る機能が有るじゃないですか
[](auto a) -> void {}
こんな感じの奴
で質問なんだが
テンプレート関数でもこういう書き方できるの?
- 742 :デフォルトの名無しさん:2015/11/20(金) 17:06:48.69 ID:U0800zwR.net
- template<class T>
auto func() -> void {}
でいけね
- 743 :デフォルトの名無しさん:2015/11/20(金) 17:15:28.09 ID:AMmCkZV3.net
- そうじゃなくて、そのtemplate<>とか書くのが面倒くさいからラムダみたいに
かけないのかな〜って
auto func( auto arg ) -> void{}
って
- 744 :デフォルトの名無しさん:2015/11/20(金) 17:28:04.32 ID:09So3vc/.net
- 出来ません
- 745 :デフォルトの名無しさん:2015/11/20(金) 21:12:56.27 ID:lBI2kOuM.net
- ひょっとしてpaperって来るもの拒まずで簡単な審査みたいなものってないのかな
- 746 :デフォルトの名無しさん:2015/11/21(土) 00:07:18.37 ID:uQbElO9Z.net
- >>743
Concepts の提案に含まれてる。
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 のほかに制約を定義したコンセプト名も型名のかわりに使える。
- 747 :デフォルトの名無しさん:2015/11/21(土) 07:13:41.99 ID:GohpmGDs.net
- それより空mainの戻りにauto使えるようにしてくれよ
auto main() {}
- 748 :デフォルトの名無しさん:2015/11/21(土) 07:47:40.78 ID:UH5fCNhv.net
- タイプ量増えてる
- 749 :デフォルトの名無しさん:2015/11/21(土) 12:26:37.50 ID:+qmJr5EI.net
- >>748
ワロタ
確かに
- 750 :デフォルトの名無しさん:2015/11/21(土) 12:56:36.38 ID:TE1AXQwv.net
- 文字を1文字でも減らすことが至上と考えてる奴は間違いなく低能
- 751 :デフォルトの名無しさん:2015/11/21(土) 21:32:05.40 ID:rACYfPqD.net
- 欧米とは違い、日本ではブラインドキー入力すらできないような奴が
職業プログラムになるのが普通だからしょうがない。
だからドカタって呼ばれる
- 752 :デフォルトの名無しさん:2015/11/22(日) 21:01:10.56 ID:vYPMz+tE.net
- >>750
では型が規格で決まっていて変わることがないmainの戻り値の型をautoにする利点を挙げてください。
デメリットしかないからそれを挙げましたが、低脳ではないあなたであれば高尚なメリットを挙げられるんですよね?
- 753 :デフォルトの名無しさん:2015/11/22(日) 21:06:46.49 ID:yfhDplVV.net
- 短ければいいというもんでもないけど、
C++は冗長な記法が多すぎでしょ。
template <typename T, typename U>
とかクッソ面倒だし、単に
<T, U>と書かせろと。
さらにテンプレートクラスだと、メンバ関数の実装全てに
これ書かないといけないんだぜ?
もう発狂しそうになるよ
- 754 :740:2015/11/22(日) 21:14:31.26 ID:m3OPFIIm.net
- >>752
知るかボケ>>747にきけよ低能
やっぱ1文字でも減らすことが至上と考えてる奴はカスだな
- 755 :デフォルトの名無しさん:2015/11/22(日) 21:17:54.84 ID:vYPMz+tE.net
- >>753
template<class T>の方が短くていいよ!
> さらにテンプレートクラスだと、メンバ関数の実装全てに
> これ書かないといけないんだぜ?
> もう発狂しそうになるよ
クラス内でusingかtypedefで定義すればいい
標準ライブラリでもvalue_typeとかiteratorとかで使われてる方法
- 756 :デフォルトの名無しさん:2015/11/22(日) 21:18:16.01 ID:vYPMz+tE.net
- ただ煽りたかっただけの低脳かよ
- 757 :デフォルトの名無しさん:2015/11/22(日) 21:25:56.19 ID:m3OPFIIm.net
- 文字数減らすためにclassじゃないものまでclassと書くんじゃねーよ
しかも>>753の日本語理解できてねーし
やっぱ1文字でも減らすことが至上と考えてる奴は低能だな
- 758 :デフォルトの名無しさん:2015/11/22(日) 21:28:33.14 ID:vYPMz+tE.net
- >>757
標準ライブラリのテンプレート使ってるクラス一つでも見てから言ってくださいね
- 759 :デフォルトの名無しさん:2015/11/23(月) 00:38:43.39 ID:kLzVjV7O.net
- この流れで言うと荒れそうだけど
キーワードが足りないって危機的状況だよな
全部contextual keywordにならないかな
- 760 :デフォルトの名無しさん:2015/11/23(月) 00:40:57.08 ID:gt57xMsi.net
- なもんでソフトキーワードってのが提案されてる
- 761 :デフォルトの名無しさん:2015/11/23(月) 00:55:23.95 ID:kLzVjV7O.net
- std::awaitとかか
うーむ
むむむ
- 762 :デフォルトの名無しさん:2015/11/23(月) 07:04:07.85 ID:5SRyJk37.net
- >>752
本題じゃないが、main()の戻り値と引数は「決めない」のが言語規格じゃなかったっけ?
確かmain()はプロトタイピングすらされてなかったと思うが?
- 763 :デフォルトの名無しさん:2015/11/23(月) 07:58:14.11 ID:kEUHEwN+.net
- >>762
http://www.kijineko.co.jp/tech/superstitions/void-main.html
- 764 :デフォルトの名無しさん:2015/11/23(月) 17:32:57.16 ID:vMFz+wxS.net
- char main[]="\x090\x090\x090\x090";
- 765 :デフォルトの名無しさん:2015/11/23(月) 18:43:59.09 ID:j/voQwFM.net
- >>760
よく読んだら、今後の(awaitとか使わない)ソースでは、普通のキーワードと変わらないんだ
いいねソフトキーワード
あとは将来キーワードに召し上げられないように、俺ソースの命名規約を工夫するか
cの代わりにkとかwの代わりにvvとか
- 766 :デフォルトの名無しさん:2015/11/23(月) 18:49:51.33 ID:JoHLcQKX.net
- >>765
https://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". ...
- 767 :デフォルトの名無しさん:2015/11/23(月) 18:58:22.42 ID:j/voQwFM.net
- >>766
むむむ ありがとう
今後並列処理関係でキーワード増えそうな気がするんだが大丈夫かな……
- 768 :デフォルトの名無しさん:2015/11/23(月) 19:09:48.92 ID:1Nk8DAEn.net
- >>753
マジレスするとtypename以外にも変数受けられるから…。
- 769 :デフォルトの名無しさん:2015/11/23(月) 19:12:39.87 ID:y+4gfsEr.net
- なんだ、すでにrejectされてたのか
この棄却理由はどういう意味だろう
直訳だと「C++にキーワードを追加する難しさはひとつの機能(特徴)だ、という原則」?
- 770 :デフォルトの名無しさん:2015/11/23(月) 19:31:36.99 ID:j/voQwFM.net
- ”基本的な理由は、「『C++言語へのキーワードの追加』をC++自身の機能とする」ことは
困難だから……”
と読んだんだが、自分もよくわからぬ
- 771 :デフォルトの名無しさん:2015/11/23(月) 20:43:39.20 ID:b98i53Mh.net
- アプリケーションの互換性の問題からキーワードの追加は最後の手段なんだよね
- 772 :デフォルトの名無しさん:2015/11/23(月) 20:58:02.32 ID:y+4gfsEr.net
- ああ、なるほど、「キーワードがそう簡単には増えないという特徴」という意味か
たしかにソフトキーワードはusing namespace std;のときダメじゃんって話はあったな
- 773 :デフォルトの名無しさん:2015/11/23(月) 21:26:47.34 ID:vMFz+wxS.net
- exportさんとregisterは幸せに生まれ変われるのだろうか
- 774 :デフォルトの名無しさん:2015/11/23(月) 21:32:32.00 ID:zEOitApd.net
- autoさんは新たな存在に転生した
- 775 :デフォルトの名無しさん:2015/11/23(月) 23:37:32.98 ID:iUZSUGdH.net
- autoさんは、そういや昔は別の意味だったねwとか思うレベル
- 776 :デフォルトの名無しさん:2015/11/24(火) 00:30:52.62 ID:/Po/Pqa3.net
- >>768
そんなことは知ってる。
でもたいていの場合は不要でしょ。
ふつうのジェネリクスのときは
<T, U>
で済むようにして
変数を受け付けるときだけ特殊なキーワードを使えばいい。
<T, var N: Int>
みたいに。
あるいは、ジェネリクスと変数は本来別物だから、完全に分離して、
変数は別のシンタックスを用意すればOK。
class StaticArray <T> [_ N: Int] { ... }
インスタンス化は
var nums = StaticArray<Int>[16]() // 大きさ16のInt配列
これらを一緒くたにしてテンプレートという機能にぶち込んでしまったのがそもそもいけない。
- 777 :デフォルトの名無しさん:2015/11/24(火) 01:04:19.40 ID:XeCWO9iV.net
- >>776
余計わかりにくいわ
- 778 :デフォルトの名無しさん:2015/11/24(火) 02:24:38.78 ID:SGPcTC2U.net
- 変数だってよwプップップー
- 779 :デフォルトの名無しさん:2015/11/24(火) 13:55:40.92 ID:ge2Zja90.net
- どちらかというとテンプレートなんて作らずにマクロを強化して欲しかった・・・・・・
- 780 :デフォルトの名無しさん:2015/11/24(火) 13:56:25.58 ID:PwKZ6cFL.net
- マクロこそいらん
- 781 :デフォルトの名無しさん:2015/11/24(火) 16:36:45.34 ID:ge2Zja90.net
- Cプログラマは非力で使いにくく不自由なマクロしか知らないからね。
その非力なマクロでさえ使い所を弁えれば役に立つのだけど。
Common LispやScheme(version 6以降)なんかの強力なマクロがCにあればなぁと思ってる。
c++のテンプレート以上に強力で、使いやすく、そして自由な奴。
- 782 :デフォルトの名無しさん:2015/11/24(火) 17:36:15.30 ID:UCeGX0YN.net
- common lispの汎変数はテンプレートもどきのなかでも実現手段は最悪だろう。
- 783 :デフォルトの名無しさん:2015/11/24(火) 18:47:37.47 ID:k/WtYpn0.net
- >>781
CやC++へのトランスコンパイル言語 Nim (元 Nimrod) が、
文法に無理させることなく強力なマクロを実現させてる。まだ未実装な部分もあるが。
- 784 :デフォルトの名無しさん:2015/11/24(火) 18:58:34.75 ID:FDR66s0Y.net
- >>781
lispのようなマクロが他の言語に採用されない理由読んだら?
- 785 :デフォルトの名無しさん:2015/11/24(火) 21:25:03.33 ID:2wn8VfxF.net
- Rust のマクロは Scheme 的。
- 786 :デフォルトの名無しさん:2015/11/24(火) 22:25:27.86 ID:3ku7vQ9p.net
- >>781
健全なマクロは確かにときどき欲しいと思うね
制御文を拡張したいと思うときがある
- 787 :デフォルトの名無しさん:2015/11/24(火) 22:28:18.36 ID:zyV4TR/k.net
- 糞マクロを布教する高橋アキラは死んでよし
- 788 :デフォルトの名無しさん:2015/11/24(火) 22:54:11.75 ID:/Po/Pqa3.net
- >>786
クロージャで良くないすか?
- 789 :デフォルトの名無しさん:2015/11/24(火) 23:25:47.47 ID:3ku7vQ9p.net
- >>788
クロージャで、というとこんな感じでしょうか
auto if_(bool c, auto t, auto f) {
return c ? t() : f();
}
if_(x==y, [](){ return 1; }, [](){ return 2; });
健全なマクロがもしあればもうちょっと短く出来るな、程度の欲しさですな
昔はプリプロセサマクロでしか書けなかったんだよなあ……
ラムダにはうっとりだ
- 790 :デフォルトの名無しさん:2015/11/24(火) 23:38:17.82 ID:+Jid013x.net
- 不健全なマクロでどうしても欲しいのがアナフォリックマクロ。
aif(get(key)) {
it->print();
}
みたいに、ifの中身をitに束縛してくれる感じのが欲しい。
- 791 :デフォルトの名無しさん:2015/11/25(水) 00:07:27.63 ID:37RYBFHu.net
- >>790
optionalが近いか?
if (auto t = something_returns_optional()) {
use(*t);
}
- 792 :デフォルトの名無しさん:2015/11/25(水) 05:44:52.88 ID:q0VxF2Ob.net
- >>789
SwiftのTrailing Closureみたいなのがあるといいんだろうな
Swiftでは関数の最後の引数がClosureの場合、引数リストの外に出せる場合がある:
func if_(condition: Bool, (Void) -> Void) -> Void { ... }
これの呼び出しは
if_ (x==y, {
})
でも
if_ (x==y) {
}
でもOK
返り値も返すことができて、そこからさらにチェーンすることもできるので
if_ (x==y) {
} .else {
}
みたいなオレオレif文も作れるよ
- 793 :デフォルトの名無しさん:2015/11/25(水) 11:10:38.70 ID:n/g2lh6I.net
- >>791
c++ってそういう風に書けたんだ。知らなかった・・・・・・
→色々調べたら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));
- 794 :デフォルトの名無しさん:2015/11/25(水) 21:24:08.35 ID:rSYqRV3W.net
- >>793
たぶん、できないんじゃないかな
&&をオーバーロードすると短絡評価じゃなくなっちゃうし
アナフォリックandっていうのか
ネストが深くならなくて格好いいねえ
- 795 :デフォルトの名無しさん:2015/11/26(木) 23:17:49.61 ID:fIIo+HYG.net
- 早くこれの続きが来ないかな
Overload resolution
https://akrzemi1.wordpress.com/2015/11/19/overload-resolution/
これが15年ぶりにアップデートされるかと思うとわくわくする
Why Not Specialize Function Templates?
http://www.gotw.ca/publications/mill17.htm
- 796 :デフォルトの名無しさん:2015/11/26(木) 23:28:58.12 ID:etcv8G3e.net
- 掲示板はお前のオナニーURLを貼り付けるところじゃない
荒らしは去れ
- 797 :デフォルトの名無しさん:2015/11/27(金) 01:05:28.82 ID:yys8TVN5.net
- あれえーw
C++17でConceptが入るから関数オーバーロードの仕方が変わるって
スレに沿った話題なのに
理解できないからって荒らし扱いww
- 798 :デフォルトの名無しさん:2015/11/27(金) 01:09:04.64 ID:yys8TVN5.net
- いや知らないなら知らないでいいけどさw
知ったかぶりはよくないと思うよ
- 799 :デフォルトの名無しさん:2015/11/27(金) 23:24:52.69 ID:9ngSAGXd.net
- これみよがしに英文リンク貼り付けるのがいけない。
ちゃんと日本語のリンクを貼って、どうぞ
- 800 :デフォルトの名無しさん:2015/11/27(金) 23:53:12.83 ID:bxU365jm.net
- >>799
規格も関連文書も全部英文なのに、何言ってんだ?
「ちゃんと」の基準がさっぱりわからん。
- 801 :デフォルトの名無しさん:2015/11/28(土) 00:00:51.96 ID:rDr0w/HG.net
- 自分の知ってるオナニーサイトのURLを
世の中の全員が知っていて当然のような書き方
で貼り付ける人は高確率でアスペ
- 802 :デフォルトの名無しさん:2015/11/28(土) 00:04:27.13 ID:UH2RVtiD.net
- 785がチラ裏としてケチを付けられるのはわかるが、URLにケチを付けるのはおかしいだろ。
- 803 :デフォルトの名無しさん:2015/11/28(土) 02:23:48.80 ID:UmyVHocA.net
- Why Not Specialize Function Templates?
を知らないってことは関数テンプレートの特殊化が使えてないってことなんだけどなw
そんなのが何でC++14に興味あるわけ?
C++98で十分じゃん
> 高確率でアスペ
仮にそうだとしても>>796は恥さらしの無知だよね
- 804 :デフォルトの名無しさん:2015/11/28(土) 08:04:32.62 ID:0xj25Fro.net
- 「自分の知ってるサイトAを知らない人は理解してない人」
「サイトAを知らない人は無知・恥曝し」
こういうアホよくいるよな
しかも語尾に「w」が付いてることが多い
- 805 :デフォルトの名無しさん:2015/11/28(土) 08:44:25.72 ID:mxbt4S4C.net
- 一旦落ち着け
っ std::terminate();
- 806 :デフォルトの名無しさん:2015/11/29(日) 03:55:36.08 ID:nX6bK8c/.net
- 読まないで非難するのは不当だし、読んで分からなければ黙ってればいい。それだけ。
- 807 :デフォルトの名無しさん:2015/11/29(日) 06:46:28.40 ID:ph4aH7Jo.net
- チラ裏のリンク先を他人に読んでもらえるという思考がお花畑
- 808 :デフォルトの名無しさん:2015/11/29(日) 09:20:39.17 ID:zeO3ugsW.net
- 全く読まずに批判するようなバカに合わせる道理も無いけどな
- 809 :デフォルトの名無しさん:2015/11/30(月) 00:22:59.43 ID:Udb8DCP8.net
- 自分が理解できないから、C+;+のスレでC++の話するなってw
まあ馬鹿が馬鹿なのは当たり前だよな
- 810 :デフォルトの名無しさん:2015/11/30(月) 00:57:22.18 ID:2FRuf8rI.net
- C++98で吹いたwww
- 811 :デフォルトの名無しさん:2015/12/02(水) 01:50:59.86 ID:zaOCqs+2.net
- c++14でstd::mem_fnのコンストラクタ変わってるけど
メンバー関数のポインタを
template<class R,class T>
foo(R T::* pm)
で取れるようになったの規格のいつから?
clang3.4とgcc4.8の-std=c++03 ではなんの警告もなく通るけどMSVC2013じゃ通らん
あとこれテンプレートの型どうなってんの?
- 812 :デフォルトの名無しさん:2015/12/02(水) 12:19:23.31 ID:BZQq0daR.net
- 最初のc++98からじゃないの
見慣れてないだけで特別ななにかがあるようには思えないし
ttp://codepad.org/Q1s6uKX9
- 813 :デフォルトの名無しさん:2015/12/02(水) 12:28:07.16 ID:SG5bn8pD.net
- >>811
Effective 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::*&
になるっぽい。
いつから書けるようになってるのかは今調べてる・・・・・・
- 814 :デフォルトの名無しさん:2015/12/02(水) 12:43:06.54 ID:WGLqoqFk.net
- VCで規格の事を考えてはいけない
- 815 :デフォルトの名無しさん:2015/12/02(水) 13:34:30.03 ID:SG5bn8pD.net
- C++98の文法と格闘した結果、
template<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
- 816 :デフォルトの名無しさん:2015/12/02(水) 14:10:28.38 ID:zaOCqs+2.net
- >>812
f1そんな書き方出来るのね
だからf2のRは関数の型になるのか
知らなかった。サンクス
そしてMSVC死すべし
>>813
データメンバーはMSVC++2013でも通るんだけどね
- 817 :デフォルトの名無しさん:2015/12/02(水) 16:43:06.95 ID:OBZqLDvp.net
- 今さらすぎる
- 818 :デフォルトの名無しさん:2015/12/03(木) 18:51:47.35 ID:CB8nR693.net
- このスレで最後にC++14/C++1zの話をしたのはいったいいつになるのか
- 819 :デフォルトの名無しさん:2015/12/03(木) 19:07:52.69 ID:ndGhF5es.net
- コンセプトはどうなったのか
- 820 :デフォルトの名無しさん:2015/12/03(木) 23:58:23.36 ID:mzSrHInP.net
- 17に持ち越しです
- 821 :デフォルトの名無しさん:2015/12/04(金) 07:30:43.79 ID:e+zKFYA8.net
- Visual C++のベータにmoduleが来たらしいな
誰か試して教えてくれ
- 822 :デフォルトの名無しさん:2015/12/04(金) 10:38:18.04 ID:RGw51yAh.net
- http://kennykerr.ca/2015/12/03/getting-started-with-modules-in-c/来たぞ
- 823 :デフォルトの名無しさん:2015/12/04(金) 10:49:17.03 ID:RGw51yAh.net
- う、すまん「来たら教えて」と誤読してた
- 824 :デフォルトの名無しさん:2015/12/04(金) 23:50:34.71 ID:ugYhy3h7.net
- Visual C++でモジュール試した
散々クソ扱いされた今のC++のコンパイル&リンクの仕組みが
クソであることを再認識させられた
- 825 :デフォルトの名無しさん:2015/12/05(土) 00:59:27.31 ID:e7gPFA0r.net
- そんなによかったのか
- 826 :デフォルトの名無しさん:2015/12/05(土) 04:41:31.84 ID:jW0axztk.net
- ドラフト段階だからexperimentalなのかと思ったら
まだ使い物にならないからexperimentalだった
- 827 :デフォルトの名無しさん:2015/12/05(土) 07:43:05.11 ID:TNqFjir/.net
- 相互参照も解決できないクソは要らん
それより子ちんちんはよ
- 828 :デフォルトの名無しさん:2015/12/05(土) 15:06:50.13 ID:nVmh1Uw7.net
- 相互参照は解決できそうですか?
C++17に間に合わないのでは?
- 829 :デフォルトの名無しさん:2015/12/06(日) 08:31:34.88 ID:B6wQTCue.net
- 相互参照を解決できないんなら
宣言と実装をひとつにできないやんけ
cppから互いのh見ないといかんやろ
VC糞すぎる
- 830 :デフォルトの名無しさん:2015/12/06(日) 13:20:06.96 ID:OHUYOsyJ.net
- class Hoge;
だけ書けばいいよね
- 831 :デフォルトの名無しさん:2015/12/06(日) 14:47:06.47 ID:iutDeUPr.net
- C#の書式で書いてるのか
- 832 :デフォルトの名無しさん:2015/12/06(日) 22:29:47.24 ID:XiMnzaaH.net
- 標準ライブラリのmoveがnoexceptじゃないのは規格待たずにさっさとやってほしいなー
誰も困らないでしょ
- 833 :デフォルトの名無しさん:2015/12/07(月) 01:37:32.29 ID:ENmwIuVj.net
- 現段階ではclass Hoge;すら動かない
- 834 :デフォルトの名無しさん:2015/12/09(水) 13:03:25.61 ID:IXqPU77s.net
- 抽象クラスを切り出して
実クラスとコンストラクタをファクトリで隠蔽すれば逃げられるっしょ
- 835 :デフォルトの名無しさん:2015/12/12(土) 15:42:32.42 ID:OMbug+9k.net
- class A;
#include <B.h>
class A {
A& a;
};
と
class B;
#include <A.h>
class B {
A& a;
};
じゃいかんの?
実体を持たせたいって話だったらサイズ定まらないんだからどうやっても無理じゃないかな
- 836 :デフォルトの名無しさん:2015/12/12(土) 15:43:38.00 ID:OMbug+9k.net
- 書き間違い
class A のメンバは B& b; ね
- 837 :デフォルトの名無しさん:2015/12/12(土) 15:58:10.85 ID:npRd3MLZ.net
- よくわからんが もじゅーるって中間ファイル作るの?
- 838 :デフォルトの名無しさん:2015/12/13(日) 05:43:09.04 ID:JyylBzJi.net
- 標準委員はまっとうなコンパイラを自分らで作ってから標準化しろ。
- 839 :デフォルトの名無しさん:2015/12/13(日) 07:40:04.56 ID:mzdnj3l/.net
- class Aからclass Bのメンバ関数を呼び出す
class Bからclass Aのメンバ関数を呼び出す
これができない
- 840 :デフォルトの名無しさん:2015/12/13(日) 10:19:13.60 ID:Wcw8JgGx.net
- Visual C++ / C++/cliのHTTPクライアントを作成しているが、
うまくいかない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
大変困ってます。先輩方ご教授のほどお願い致します。
- 841 :デフォルトの名無しさん:2015/12/13(日) 10:35:10.79 ID:fD1PRCXr.net
- >>836
そうすると規格の仕様定義がソースコードだらけになる
実装が仕様のECMAScript 6の様に
- 842 :デフォルトの名無しさん:2015/12/13(日) 11:29:25.24 ID:YIi8S0oG.net
- c++ですらない別言語のソース貼るな
- 843 :デフォルトの名無しさん:2015/12/13(日) 11:56:01.44 ID:HelZ49Rj.net
- コード上で使ってるオブジェクトも全部.Net Frameworkの奴だろ?
.Net側の使い方を探した方が早い
- 844 :デフォルトの名無しさん:2015/12/13(日) 12:48:03.70 ID:Sn25ABdB.net
- >>840
マルチポスト野郎なのでスルーで
- 845 :デフォルトの名無しさん:2015/12/13(日) 22:38:07.16 ID:3ApC0baZ.net
- >>837
Visual C++は専用のオブジェクトファイルができるようだ
- 846 :デフォルトの名無しさん:2015/12/14(月) 01:22:51.58 ID:Xhld/+0h.net
- Rustも1.5がでましたしそろそろ移植先として検討するための軽い学習始めても良さそうな気がする。
http://blog.rust-lang.org/2015/12/10/Rust-1.5.html
- 847 :デフォルトの名無しさん:2015/12/14(月) 01:30:48.82 ID:A7WhCv85.net
- rustはライブラリがまだ貧弱な印象
まあ、そこはFFIで補えって事なんだろうけど
- 848 :デフォルトの名無しさん:2015/12/15(火) 00:30:15.49 ID:+QNyrCxt.net
- 幾ら良い言語だろうとMozillaが後釜な限りrustに移住とか無い
- 849 :デフォルトの名無しさん:2016/01/03(日) 23:49:34.32 ID:n0RRADXj.net
- スコット先生がインポってほんと?
- 850 :デフォルトの名無しさん:2016/01/04(月) 02:19:53.29 ID:FlX08ahi.net
- もうC++界隈から引退するってよ。
- 851 :デフォルトの名無しさん:2016/01/04(月) 08:17:34.99 ID:dFEpTHdS.net
- 後ろ楯と言いたいのかな。
- 852 :デフォルトの名無しさん:2016/01/04(月) 13:02:58.09 ID:4YgdLYhO.net
- そろそろ C# や Java に奪われた失地を回復できそうな機能やライブラリは追加されたかね?
- 853 :デフォルトの名無しさん:2016/01/04(月) 14:06:34.94 ID:3ZUvyneM.net
- 級者「C++全然わからんw」
中級者「C++全然わからんw」
上級者「C++全然わからんw」
標準化委員会「C++全然わからんw」
スコット「C++全然わからんのでもうやめるわw」
- 854 :デフォルトの名無しさん:2016/01/04(月) 14:23:47.74 ID:x5rHK6YB.net
- スコットさんは単なる駄文商人だからどうでもいい
- 855 :デフォルトの名無しさん:2016/01/04(月) 15:12:07.50 ID:7pom0hWz.net
- C++分からんという事はコンピュータが分かってない。プログラマは無理だろ
- 856 :デフォルトの名無しさん:2016/01/04(月) 17:01:44.28 ID:N9vPeoWw.net
- もともと、どんな機械語が生成されるか見えそうなくらい低レベルなC言語をベースにしていたのに、
C++は逆に、ソースコードから動作を想像するのがもっとも困難な言語になってしまったなぁ。
どうしてこうなった。
- 857 :デフォルトの名無しさん:2016/01/04(月) 17:14:02.24 ID:x5rHK6YB.net
- んなこと言ってる奴はC++触るなバーカ
- 858 :デフォルトの名無しさん:2016/01/04(月) 17:48:30.86 ID:N9vPeoWw.net
- 逆に、そのへん問題意識を持っていない奴はC++で他人に読ませるコードを書くな。迷惑だから。
自分ひとりでやってる分には好きにしろと思うが。
- 859 :デフォルトの名無しさん:2016/01/04(月) 18:04:53.45 ID:x5rHK6YB.net
- そんなもんどの言語でも同じことだわ
自分の能力の無さをC++のせいにするな
- 860 :デフォルトの名無しさん:2016/01/04(月) 18:43:21.19 ID:PWQd7yEq.net
- >>859が正論すぎて感動した
- 861 :デフォルトの名無しさん:2016/01/04(月) 19:11:11.24 ID:mH8w9NDh.net
- C++は異常に複雑だと思うけど
全てを把握してる人なんていないでしょ
- 862 :デフォルトの名無しさん:2016/01/04(月) 19:11:23.16 ID:XdSW49u/.net
- コードが汚いか、コードを読む知識が足りない
- 863 :デフォルトの名無しさん:2016/01/04(月) 19:22:17.78 ID:sMTgy5ar.net
- C++の仕様で大変複雑なのがオーバーロード
13節を読破していい気になっていたら
テンプレートのパーシャルオーダリングで挫折した
- 864 :デフォルトの名無しさん:2016/01/04(月) 22:02:43.29 ID:MCDNvKGQ.net
- スコットが引退するんだったら
ホモダチの議長も引退しないといかんな
- 865 :デフォルトの名無しさん:2016/01/05(火) 03:51:05.13 ID:Gtg7XWw8.net
- バカがC++を触ると決まって大惨事になる
- 866 :デフォルトの名無しさん:2016/01/05(火) 08:38:53.15 ID:Uwspl53Y.net
- >>856
具体例を。
- 867 :デフォルトの名無しさん:2016/01/05(火) 20:28:32.10 ID:0kQoSY1y.net
- バカが触っても大惨事にならない言語はあるのだろうか
- 868 :デフォルトの名無しさん:2016/01/05(火) 20:31:35.16 ID:vJsW+BrL.net
- python
- 869 :デフォルトの名無しさん:2016/01/05(火) 22:42:21.38 ID:7Q2tXWc2.net
- >>865じゃないけど
クラスウィザードで作ったハンドラの関数に全処理をぶち込んで同じ処理はコピペでユーザー関数を呼ばない
デバッグを担当したので仕様書を見ると3千行くらいだろうかと思ってたら桁が一つ違った
- 870 :デフォルトの名無しさん:2016/01/05(火) 22:46:13.84 ID:7Q2tXWc2.net
- >バカが触っても大惨事にならない言語
VBでocxとかAPIとかアクティブXを意識しないで済むような条件ならどうだろ?
- 871 :デフォルトの名無しさん:2016/01/06(水) 07:55:53.24 ID:LK889b8U.net
- 言語関係ないな。ファイル削除とか。
- 872 :デフォルトの名無しさん:2016/01/08(金) 20:42:50.02 ID:R3C0rIaN.net
- C++とjavaをそれぞれ微妙に間違えて覚えた感じのC++コードは見た事がある
あれは色々クソだった
- 873 :デフォルトの名無しさん:2016/01/08(金) 21:37:00.02 ID:p/Qz8y2X.net
- バカはdeleteを知らない
- 874 :デフォルトの名無しさん:2016/01/08(金) 23:36:28.61 ID:TMtMk1T6.net
- ま、待て落ち着け
最近はdeleteなんか使わんぞ
- 875 :デフォルトの名無しさん:2016/01/09(土) 00:35:58.93 ID:fiu0c9MZ.net
- いまどきdeleteなんてbad know howじゃないか?
- 876 :デフォルトの名無しさん:2016/01/09(土) 00:45:38.64 ID:5sGg2rIv.net
- いや、 delete を隠蔽する手法は色々とあって自動的に delete されるようにできるから見かけ上は消せるけど、
知らないっていうのはかなり問題があるぞ。
- 877 :デフォルトの名無しさん:2016/01/09(土) 02:05:19.45 ID:e4D1bXEw.net
- 別に、バグらない自信があるなら表面で使ってもいいかと。
私には無いが。
- 878 :デフォルトの名無しさん:2016/01/09(土) 08:08:26.21 ID:9YbuGRIo.net
- >>876
それもそうか
>>877
その危険を迂回できるようになるためにも、知っとく必要だけはあるってことか……
- 879 :デフォルトの名無しさん:2016/01/09(土) 08:17:05.09 ID:n4h15amY.net
- class Hage {Hage() = delete;};
- 880 :デフォルトの名無しさん:2016/01/09(土) 08:32:57.66 ID:9YbuGRIo.net
- >>879
バカはオレであった
- 881 :デフォルトの名無しさん:2016/01/09(土) 13:10:41.45 ID:e4D1bXEw.net
- >>879
私が間違っていました
- 882 :デフォルトの名無しさん:2016/01/09(土) 14:55:36.48 ID:OJ3RzNty.net
- ほんとおまいらバカだな
- 883 :デフォルトの名無しさん:2016/01/10(日) 13:56:15.14 ID:OzNStxiO.net
- streamの書式付き文字列ってどうなったの?
何年か前に提案されてた気がするんだけど
- 884 :デフォルトの名無しさん:2016/01/11(月) 01:48:07.39 ID:6D6y+3+b.net
- >>880,871
なんか癒やされた。好きだぜ
- 885 :デフォルトの名無しさん:2016/01/13(水) 16:46:28.54 ID:Uatu39YL.net
- https://gcc.gnu.org/gcc-6/changes.html
C++ Concepts are now supported when compiling with -std=gnu++1z or -std=c++1z.
使ってる人いますか?
- 886 :デフォルトの名無しさん:2016/01/13(水) 16:58:41.33 ID:W/VWXs4P.net
- clangでサポートされたら使う
- 887 :デフォルトの名無しさん:2016/01/19(火) 01:34:05.07 ID:RsG+AB1B.net
- C++、冗長だし汚いし抽象度低すぎでクソだな、て思う。
もうC++1zとかいいから、
高速で安全でモダンな、ンギモッヂイイ感じの
C++の後継言語を開発することにリソースを割いた方がいいんじゃなかろうか?
- 888 :デフォルトの名無しさん:2016/01/19(火) 16:11:15.39 ID:kwdF0Xnf.net
- 低レベルな部分を書く必要がないなら c/c++ である必要はないから好きなの使ってくれ。
c/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
- 889 :デフォルトの名無しさん:2016/01/20(水) 21:21:22.91 ID:aoGFDkjX.net
- 抽象化ってのはプログラマがするもんじゃないの?
- 890 :デフォルトの名無しさん:2016/01/20(水) 21:41:23.81 ID:Ci1f4cma.net
- C++を使っていながらC++がアセン鰤言語よりどれだけ抽象化されているか知らないと申すのか
- 891 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 21:59:07.29 ID:C563gif+.net
- 私から意見がある。
void型の変数を作ること、voidにvoidを代入すること、
voidをreturnすることを可能にしてほしい。
- 892 :デフォルトの名無しさん:2016/01/20(水) 22:02:50.07 ID:7pHwgTRU.net
- >>891
純粋に興味で聞かせてほしいのだが、用途は何?
- 893 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 22:05:20.88 ID:C563gif+.net
- 私の考えは間違ってるだろうか?
テンプレートによるメタプログラミングで
voidの扱いが一般的じゃないので、
「void値」というものがあれば便利だと思った次第である。
- 894 :デフォルトの名無しさん:2016/01/20(水) 22:10:31.94 ID:e8aI9wBz.net
- C++でもまったく抽象化せずにガチガチにチューニングしたようなソフトもあるけど
- 895 :デフォルトの名無しさん:2016/01/20(水) 22:10:53.23 ID:7pHwgTRU.net
- むしろ用途のない事を表現する特殊な型がvoidなのでは?
- 896 :デフォルトの名無しさん:2016/01/20(水) 22:11:16.56 ID:e8aI9wBz.net
- >>891
おれもそれ思ったことある
- 897 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 22:13:50.51 ID:C563gif+.net
- C#からC++への移植で、C#スタイルのデリゲートが必要になって
デリゲートの戻り値の扱いで壁にぶつかった。
現状では、戻り値がvoidの関数と非voidの関数を統一的に扱うことができない。
- 898 :デフォルトの名無しさん:2016/01/20(水) 22:14:36.92 ID:Ci1f4cma.net
- 今更無理だろうな
戻り値が無い関数の戻り値をvoid型と書いてる今の文法の方が不自然なので
この構文ならvoid値を認めた方がすっきりする
- 899 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 22:26:20.35 ID:C563gif+.net
- void型の変数を宣言できる。
そのサイズはゼロである。
それは常にvoid値という特殊な値を持つ。
void型の変数にvoid値を代入できる。
voidを戻り値の型とする関数では、void値を返すことができる。
- 900 :デフォルトの名無しさん:2016/01/20(水) 22:26:35.34 ID:7pHwgTRU.net
- それは値を受け取るコードが問題を起こしているんだよね?
であれば、「delegate的オブジェクト」の受け取りインタフェースでvoid戻りオブジェクトを禁止するように規定した方がc++的な気がする。
enable_ifとかで。
出来るかわからんが。
- 901 :デフォルトの名無しさん:2016/01/20(水) 22:27:50.99 ID:I6UYKzry.net
- 除数がコンパイル時定数で2の階乗ならシフト使うこともあるだろうけど
そうじゃなきゃ割り算命令(または逆数乗算)使うから
- 902 :デフォルトの名無しさん:2016/01/20(水) 22:28:34.84 ID:I6UYKzry.net
- あれ、すまん誤爆した
- 903 :デフォルトの名無しさん:2016/01/20(水) 22:31:36.42 ID:Ci1f4cma.net
- >>899
サイズ0を認めると問題が起きるからメンバーの無いクラスもサイズを1以上にした経緯が有るので却下
- 904 :デフォルトの名無しさん:2016/01/20(水) 22:39:03.41 ID:Ci1f4cma.net
- >>899
最後のやつについて、知ってるとは思うが
return []{}();は今でもできるぞ
- 905 :デフォルトの名無しさん:2016/01/20(水) 22:41:51.66 ID:YRRWnUr3.net
- これみたいなこと?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0146r0.html
- 906 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 22:46:15.23 ID:C563gif+.net
- >>899
修正。
× そのサイズはゼロである。
○ そのサイズは1である。
これでどうだろう?
void *p, *q;
*p = *q;
- 907 :デフォルトの名無しさん:2016/01/20(水) 22:54:55.15 ID:j6lgTSdi.net
- >>905
それそれ
江添のトコでも書いてたはず
- 908 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/20(水) 23:07:26.13 ID:C563gif+.net
- >>905
有り難う。長文読む時間ねー。
- 909 :デフォルトの名無しさん:2016/01/20(水) 23:15:44.32 ID:ftWUH7Q0.net
- voidを完全型にするって話ね
- 910 :デフォルトの名無しさん:2016/01/20(水) 23:19:50.39 ID:6oFqVMm1.net
- >>888
低レベルな処理を書く必要あるけど、C++はいろいろイケてないから
低レベルを扱えるというコンセプトは継承しつつ、文法とかをンギモッヂイイ感じに直して欲しいという話なんすよ
以下C++のイケてないとこ羅列。
・型安全でない。少しずつ強い型付けに寄りつつあるがまだ弱い型付けが残っている。
・finalとかoverrideとかの位置がおかしい。final classとか書きたい。
・関数を = delete とかで消すのがイケてない。
・初期化リストの文法がイケてない。改行しないとクッソ長くなるし、改行すると{の位置に困る。
・; をつけるのが面倒くさい。
・if文とかで条件式を()でくくるのが面倒くさい。
・プロパティがない。
・検査例外がない。ドキュメントに乏しいAPIは、しばしば想定外の例外を投げてユーザーを困惑させる。
・Interfaceがない。多重継承は、オブジェクトのサイズを肥大化させるため嫌われる。
・メソッドの呼び出し方に.と->2通りの方法があり、使い分けが面倒くさい。
つづく
- 911 :デフォルトの名無しさん:2016/01/20(水) 23:20:46.68 ID:6oFqVMm1.net
- つづき
・virtualを書くのが面倒くさい。finalでないクラスのメソッドは、デフォルトでvirtualであるべきである。
・純粋仮想関数の= 0という文法がイケてない。
・overrideはあまり意味がない。関数がoverrideされるとき、overrideは常に必須であるべきである。
・テンプレートのtypenameを書くのが面倒くさい。
・テンプレートの実装をクラス外に書くとき、テンプレートの記述が毎回必要なのがイケてない。
・継承のアクセス指定子はデフォルトでpublicであるべきである。
・コピーコンストラクタ以外の1つ以上の引数をもつコンストラクタは、デフォルトでexplicit指定されるべきである。
・optionalが標準サポートされていない。
・標準ライブラリの命名は、一般的でないものが多すぎる。vectorやpush_backやeraseは、C++独特の命名である。
・ヘッダと実装でファイルを分ける時代は、とうの昔に過ぎ去った。
・namespaceは暗黙的に設定されるべきである。
・拡張メソッドがサポートされていない。
・C++は、C++11においてメモリ管理を安全に行う手段を手に入れたが、後付けされたそれを扱うコードはひどく冗長である。
・コピーコンストラクタとコピー代入演算子は、中身がほとんど一緒になるのに、別々に実装しないといけないのが面倒。
・テンプレートの型パラメータが満たすべき性質を制約する手段がない。
・enum型引数にenumの値を渡すとき、型は自明なので省略できるべきである。
- 912 :デフォルトの名無しさん:2016/01/20(水) 23:21:50.36 ID:ntutQCMG.net
- >>910
D か Go か Rust でがんばれ。
- 913 :デフォルトの名無しさん:2016/01/20(水) 23:40:32.62 ID:I6UYKzry.net
- ガキがゴネてるとしか思えんw
- 914 :デフォルトの名無しさん:2016/01/21(木) 00:38:23.74 ID:aXQag5k7.net
- >>910
自分の不満だけ羅列されても困る。
せめて、こうしたら良くなるのに的な案も書いてくれ。
じゃないと、そうですか、としか言いようがない。
- 915 :デフォルトの名無しさん:2016/01/21(木) 01:01:27.27 ID:JOkcCaxW.net
- 非互換な変更を望んでるあたりDが一番お似合いだと思うのだがどうだろう
- 916 :デフォルトの名無しさん:2016/01/21(木) 01:09:14.17 ID:RQbtFNgK.net
- ・; をつけるのが面倒くさい。
とか言ってる限りDでもダメだろう
マイ・イケテル言語を作るしかないね
- 917 :デフォルトの名無しさん:2016/01/21(木) 01:12:53.34 ID:hac+mbg1.net
- >>916
Dなら強く要望出し続けて作者に気に入られれば非互換でも変更される可能性もあるかもねという皮肉的な意味も込めてな
- 918 :デフォルトの名無しさん:2016/01/21(木) 03:09:26.68 ID:PSri+HWg.net
- 同意できるのはtypenameうざいくらいだな
- 919 :デフォルトの名無しさん:2016/01/21(木) 08:09:19.92 ID:mPKjkruo.net
- ・そもそも場面に応じて適切な言語を使い分けるという発想がない
- 920 :デフォルトの名無しさん:2016/01/21(木) 14:10:33.88 ID:rjdv+GpY.net
- ヘッダと実装は分けて欲しいわ。
- 921 :デフォルトの名無しさん:2016/01/21(木) 17:25:51.41 ID:zWLKoVei.net
- >>910
878 に書いたけど、
> c/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
必要としてるのがお前なら、お前がやれ。
ここは「僕ちゃんの考えた最強言語」を披露するスレではない。別にスレを立ててそこでやれ。
- 922 :デフォルトの名無しさん:2016/01/21(木) 23:14:47.21 ID:0HmD462y.net
- 一つ一つに突っ込み所を残してある
よく考えられた釣りだな
>しばしば想定外の例外を投げて
>C++11においてメモリ管理を安全に行う手段を
この二つはちょっと何言ってるかわからない
- 923 :デフォルトの名無しさん:2016/01/22(金) 21:48:23.16 ID:aYF/fDXw.net
- 名前付きブロックとブロック指定のbreakとかほしい。
forやwhileに名前付けるでもいいけど
- 924 :デフォルトの名無しさん:2016/01/23(土) 10:44:17.51 ID:JHPm6Jjq.net
- 既にある。ラムダと言う。
- 925 :デフォルトの名無しさん:2016/01/23(土) 10:53:56.76 ID:ZDlTAjvh.net
- なんか違わね?
- 926 :デフォルトの名無しさん:2016/01/23(土) 11:20:17.95 ID:JHPm6Jjq.net
- インラインで書きたいと言うなら、それもある。
gotoと言う。
- 927 :デフォルトの名無しさん:2016/01/23(土) 11:24:07.86 ID:UiSDb387.net
- ↑会話のでないあすぺ
- 928 :デフォルトの名無しさん:2016/01/23(土) 12:02:09.80 ID:JHPm6Jjq.net
- 皮肉も通じない馬鹿にプログラマは無理じゃないか?
- 929 :デフォルトの名無しさん:2016/01/23(土) 12:16:37.78 ID:9P3xRRKy.net
- まず文脈の成立した日本語が書けない低能には無理だろうな
- 930 :デフォルトの名無しさん:2016/01/23(土) 13:48:52.61 ID:ZDlTAjvh.net
- 普通はgotoを使うけど、それがイヤだっていう主張でしょ
break [個数];
とかならラベル名を考える手間も省ける
- 931 :デフォルトの名無しさん:2016/01/23(土) 13:51:37.99 ID:7KDEJB/l.net
- gotoは素人
- 932 :デフォルトの名無しさん:2016/01/23(土) 14:27:31.09 ID:xYcOlVg1.net
- 多段に抜けるときgoto文はまぁ良いんだが
クラス内クラスのメソッドの中で使うと何故かVisualStudioのクラスビューがバグるから困る
今はラムダがあるので、多重ループ部をラムダに抜き出して
returnで多段に抜けるのが今どきのC++風だろう
あと、仮に名前付きブロックを作ったとき、名前付きブロック内で普通のbreakした場合、
break先はどこになるんだろう
名前付きブロックを抜けるのだろうか、はたまたその外のブロックを抜けるのだろうか
- 933 :デフォルトの名無しさん:2016/01/23(土) 14:32:20.94 ID:0jILSHar.net
- >>924
lambdaはオーバーヘッド考えたら代わりにはならんでしょ
この辺Swiftなら気持よく書けるんだけどなー
- 934 :デフォルトの名無しさん:2016/01/23(土) 14:37:03.78 ID:7KDEJB/l.net
- 何かしらのフラグを一つ用意しておくと良い
- 935 :デフォルトの名無しさん:2016/01/23(土) 15:02:25.67 ID:qXOiofIi.net
- わざわざgotoを使わない為にフラグとかアホ
- 936 :デフォルトの名無しさん:2016/01/23(土) 17:00:07.80 ID:pHSKwpj1.net
- >>932
一番内側で良いけど、言われてみればラムダでもいいのかな?
なまえ指定のbreakをほしいと思ったのはswitchの使いにくさからなんだ
最近、elseifでの代用が習慣に。。。
- 937 :デフォルトの名無しさん:2016/01/23(土) 20:43:39.77 ID:xYcOlVg1.net
- 一番内側ってのが何を指しているの?
名前付きブロックは勘定に入るの?
名前なしの普通のブロックはbreakのジャンプ先の勘定に入らないよね
だけど名前付きブロックは名前指定breakの対象になるってことは
名前付きブロック内で普通のbreakを呼ぶと名前付きブロックを抜けられそうにも思える
要するに名前付きブロックはどっちの仲間なの?
・for文、while文、do-while文のブロック ← breakの対象
・if文、関数、名前なしの普通のブロック ← breakの対象外
- 938 :デフォルトの名無しさん:2016/01/23(土) 21:13:44.10 ID:9P3xRRKy.net
- >>937
長文の駄文を書く前に、実装してる他の言語の仕様を見て来い
http://ideone.com/oJ6noS
- 939 :デフォルトの名無しさん:2016/01/23(土) 22:32:51.58 ID:/x5ELTU1.net
- 初めて見たけどそれgotoをbreakって書いてるだけに見える
- 940 :デフォルトの名無しさん:2016/01/24(日) 01:31:33.69 ID:0dMHn0ua.net
- goto文で痛い目見まくった世代はもういないのか?
- 941 :デフォルトの名無しさん:2016/01/24(日) 03:05:14.84 ID:6zzJ2ABK.net
- >>939
メジャーどこじゃjavaだって実装してるよ。
まさかjava見たことないなんて幸せな環境にいるわけじゃないよな?
- 942 :デフォルトの名無しさん:2016/01/24(日) 03:08:14.00 ID:6zzJ2ABK.net
- っつうか>938のjavaじゃん。
java以外ならAdaも実装してる。
- 943 :デフォルトの名無しさん:2016/01/24(日) 03:11:56.52 ID:6zzJ2ABK.net
- なんか>>939はwhileやforなんていらん。gotoだけでいいじゃんとかいいそうな感じ。
- 944 :デフォルトの名無しさん:2016/01/24(日) 08:02:13.27 ID:c5KOoDBb.net
- >>932
そんなプロプライエタリの糞IDE使わないでEclipse使えよ。
- 945 :デフォルトの名無しさん:2016/01/24(日) 12:54:54.47 ID:6/NVrtZ5.net
- >>943
逆だよ
このbreakはgotoとラベルに完全に同じだから制御構造の見通しの良さとかには
全く寄与してないってこと
- 946 :デフォルトの名無しさん:2016/01/24(日) 13:43:22.51 ID:fkWZRTEw.net
- >このbreakはgotoとラベルに完全に同じ
悪いのは目? それとも頭?
- 947 :デフォルトの名無しさん:2016/01/24(日) 13:50:04.52 ID:6/NVrtZ5.net
- 馬鹿かお前
そのコードのラベル付きbreakを機械的にgotoに置き換えて同じ動作のコードになるだろ
- 948 :デフォルトの名無しさん:2016/01/24(日) 13:55:40.38 ID:QjBwAYFF.net
- gotoに置き換えられるのはあたりまえだろw
- 949 :デフォルトの名無しさん:2016/01/24(日) 14:27:39.48 ID:fkWZRTEw.net
- この理屈で行くと通常のbreakもただのgotoで、制御構造の見通し向上には寄与しないことになるな
確かに>>939は普通のbreakを肯定した訳ではなかった
前提を見誤った これは失礼
- 950 :デフォルトの名無しさん:2016/01/24(日) 15:32:42.58 ID:L0EPgOj+.net
- 関数もgotoとか言い出しそうw
- 951 :デフォルトの名無しさん:2016/01/24(日) 17:23:28.67 ID:dfuZmhXc.net
- ただの break は最内のループを抜けるわけだが
名前つき break は名前のついたループを抜ける機能。
ループに名前をつけないといけない時点で
goto 先のラベルを用意するのと何の違いがあるわけ?
goto が使えない C/C++ 以外の言語なら違いはあるけどさ。
- 952 :デフォルトの名無しさん:2016/01/24(日) 17:43:53.31 ID:xtpCszE9.net
- break はそのブロックの範囲内だけで意味を持つという点では構造化の枠組みの中にある。
ラベル付きbreakも任意の場所じゃなくてブロックに対して名前を付けるんだから分かり難いとはいえ構造化を壊すというほどでもないし、
gotoと同じというのは言い過ぎだと思うけどな。
ただ、gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ。
だらだらとネストが深くなってるようなコードを更にブロックでネストしてもダメな構造化だ。
Javaマン的には「わかってても必要なんだよ!」ってことかもしれんけど、
そんなの考えても本当にうんざりするだけで実につまらん。
- 953 :デフォルトの名無しさん:2016/01/24(日) 18:18:58.87 ID:OiBFYb4I.net
- gotoまみれのBASICはもう見たくないです
- 954 :デフォルトの名無しさん:2016/01/24(日) 18:26:48.47 ID:fkWZRTEw.net
- >>952
>gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ
名前指定のbreakが出来ないC++で多重ループを抜けるのにフラグを使うマヌケなコードが散乱しているというのに何を言っているんだお前は。
「更にブロックでネスト」とかアホな事言ってないで
Java言語仕様の14.7の最初の6行とか、C++言語仕様6〜6.1でも読んできた方がいいぞ
- 955 :デフォルトの名無しさん:2016/01/24(日) 18:43:11.13 ID:B29niI3e.net
- ループ脱出は邪悪なgotoの使い方に当たるか
ラベルは上か下のどっちにあった方が便利か
殆ど好みの問題じゃね
- 956 :デフォルトの名無しさん:2016/01/24(日) 18:53:45.05 ID:DQslD/RG.net
- 行番号で飛べるgotoは凶悪だよねw
- 957 :デフォルトの名無しさん:2016/01/24(日) 18:53:50.83 ID:xtpCszE9.net
- >>954
だからさぁ、どうせマヌケなのにそれが名前付きbreakになったからってどうだっていうんだ?
それのどっちがマシか議論したってうんざりするだけだろって言いたいの。
- 958 :デフォルトの名無しさん:2016/01/24(日) 19:42:24.72 ID:fkWZRTEw.net
- gotoが少なくない人に避けられている理由を回避する方法として名前指定のbreakを挙げたのが>>923だったと思うのだが
「どうせマヌケ」という発想がどこから湧いてきたのか不思議だ
- 959 :デフォルトの名無しさん:2016/01/24(日) 20:07:22.34 ID:dUerMYxr.net
- かのN88BASICでさえラベルでgotoできるというのにこの子は・・・
- 960 :デフォルトの名無しさん:2016/01/24(日) 20:10:05.52 ID:YiP+HMh4.net
- break 2;
- 961 :デフォルトの名無しさん:2016/01/24(日) 20:43:29.58 ID:ZJqNWdUH.net
- #define BREAK goto
こんなのでいいんじゃないの
他の使い方に使わなければいいんだし
- 962 :デフォルトの名無しさん:2016/01/24(日) 21:40:27.58 ID:RJuYOlx1.net
- 名前付きブロックよりもラムダにくくり出してreturnで抜けたほうが良いんじゃないの?
適切な名前を付けて、戻り値と引数を設定してやれば、ドキュメンテーションも上がるよ
- 963 :デフォルトの名無しさん:2016/01/24(日) 21:41:45.51 ID:fAWjFRDX.net
- >>962
るーぷ中からreturnしたいときはどうすんだよタコ
- 964 :デフォルトの名無しさん:2016/01/24(日) 22:02:39.80 ID:sg/AqKzO.net
- https://books.google.co.jp/books?id=s40pvgbtOZ8C&pg=PA337#v=onepage&q&f=false
この本を元に接尾辞配列の実装をしようとしています
ここでは配列rankをグローバル変数として宣言して,比較関数で利用しています
この配列rankを内部変数にしたいのですが,比較関数から内部変数を参照する方法ってありますか?
- 965 :デフォルトの名無しさん:2016/01/24(日) 22:14:17.51 ID:7wa58CB+.net
- >>964
クラス化してメンバ変数にするだけじゃダメなん?
- 966 :デフォルトの名無しさん:2016/01/24(日) 22:17:43.86 ID:RJuYOlx1.net
- >>963
戻り値チェックすればよいじゃん、ラムダに抜き出した時点で一つのまとまった処理になるんだからさ
少なくともフラグよりは良いでしょ
- 967 :デフォルトの名無しさん:2016/01/25(月) 04:40:47.42 ID:Ooj0Sb7l.net
- continue 3;
- 968 :デフォルトの名無しさん:2016/01/25(月) 18:33:32.30 ID:hFILJJKp.net
- for(...){
:
while(...){
:
do{
for(...){
if(...) break,do,while;
:
}
:
:
}while(...);
:
}
//ここ
:
}
みたいな書き方できるようにして欲しい。break:do,while;でもいい
- 969 :デフォルトの名無しさん:2016/01/25(月) 19:21:27.84 ID:FsV3SdbP.net
- キモ
- 970 :デフォルトの名無しさん:2016/01/25(月) 21:20:22.06 ID:pmBmtkmx.net
- いくらなんでもそれはないわwww
- 971 :デフォルトの名無しさん:2016/01/25(月) 21:42:05.62 ID:THeGRZ35.net
- キモィ━(lll´Д`)━(lll´Д`)━!!
- 972 :デフォルトの名無しさん:2016/01/25(月) 23:48:25.40 ID:NUBvUwQI.net
- gotoがお似合いな糞コードやな
- 973 :デフォルトの名無しさん:2016/01/26(火) 19:15:27.76 ID:Gm6Wv9Eo.net
- 関数に切れよ
<algorithm>使えよ
データの格納方法見直せよ
そもそもそんな処理を本当に自分で実装する必要があるのか考え直せよ
言語規格にケチをつけるのはその後だ
- 974 :デフォルトの名無しさん:2016/01/26(火) 20:36:35.29 ID:BCQYLgw5.net
- 必死にalgorithmにこじつけようとしたらかっこつけてないでベタなコード書けって叱られた
どうしたらいいんだ…
- 975 :デフォルトの名無しさん:2016/01/26(火) 21:17:53.61 ID:3irWjzYe.net
- どうしようもない
マ板で愚痴ると良い
- 976 :デフォルトの名無しさん:2016/01/27(水) 00:00:38.13 ID:fwu/2NaQ.net
- せっかくgotoの機能があるんだから、使い所では使えよ
- 977 :デフォルトの名無しさん:2016/01/27(水) 00:14:12.84 ID:NVZ3RE3B.net
- それがバルスのような禁断のスペルであってもか?
- 978 :デフォルトの名無しさん:2016/01/27(水) 04:36:16.92 ID:BGK1Phdb.net
- >>977
まさに使いどころで使ったじゃないか
- 979 :デフォルトの名無しさん:2016/01/27(水) 21:56:22.98 ID:tWCEbZpw.net
- breakは許す
gotoも許す
goto caseだけは絶対に許さない
- 980 :デフォルトの名無しさん:2016/02/06(土) 18:23:35.87 ID:K1T12T5X.net
- ダメだ!gotoで後藤さんの斬首が脳裏に…
- 981 :デフォルトの名無しさん:2016/02/06(土) 22:03:19.61 ID:64Pydz+a.net
- gotoblas
- 982 :デフォルトの名無しさん:2016/02/08(月) 21:06:04.12 ID:Uaac4ssQ.net
- アスキー文字に≠がなかったばっかりに、かなり面倒だったと思う
- 983 :デフォルトの名無しさん:2016/02/08(月) 22:41:07.66 ID:3QcKIDeA.net
- 仮にアスキーに≠が有ったとして
日本では ≠ が \ に割り当てられてたら面白かったのにね
- 984 :デフォルトの名無しさん:2016/02/09(火) 01:12:05.96 ID:uwbW3/OC.net
- タイプライター的発想だと≠は=に/を重ねて作れるから不要
- 985 :デフォルトの名無しさん:2016/02/09(火) 08:50:34.71 ID:nv/jsaUe.net
- タイプライターの話は実際にありそう。
!を否定とした最初の人は良いセンスしてると思うわ。文章で否定の形が強調になったりするから驚くことではないかもしれないけど。
- 986 :デフォルトの名無しさん:2016/02/09(火) 13:18:04.91 ID:i8FfOnoz.net
- 等しいを表すのに==は最悪のセンス
- 987 :デフォルトの名無しさん:2016/02/09(火) 14:19:19.81 ID:NzQQLXim.net
- ==
=/=
- 988 :デフォルトの名無しさん:2016/02/09(火) 14:32:28.99 ID:0vL2Anni.net
- だからってPASCALみたいに:=で代入するのも糞面倒臭い
- 989 :デフォルトの名無しさん:2016/02/09(火) 14:35:17.82 ID:i8FfOnoz.net
- それのがマシ
- 990 :デフォルトの名無しさん:2016/02/09(火) 21:30:45.03 ID:DH+vdKhf.net
- !が否定なのは当たり前だろ
アクセントとアクシデントは同じ意味だろ
- 991 :デフォルトの名無しさん:2016/02/09(火) 22:38:21.75 ID:T+WeLdAU.net
- それマジ?言語学に自信ニキ解説頼む
- 992 :デフォルトの名無しさん:2016/02/10(水) 02:12:38.91 ID:QHgBf3oE.net
- アクセントって ` のことだからな?
- 993 :デフォルトの名無しさん:2016/02/10(水) 19:39:41.28 ID:FUpM9Alw.net
- >>992
それは第二アクセントなんだが
- 994 :デフォルトの名無しさん:2016/02/11(木) 01:31:26.66 ID:yz2/azqc.net
- んなこと言われても右上がりのやつはキーボードに無いし
- 995 :デフォルトの名無しさん:2016/02/11(木) 07:46:45.07 ID:OZhLkZUr.net
- `ω´
- 996 :デフォルトの名無しさん:2016/02/11(木) 08:18:48.03 ID:1o5YIpjF.net
- 〜(´・ω・`)〜
- 997 :デフォルトの名無しさん:2016/02/11(木) 13:22:42.45 ID:chyZ04S/.net
- >>990>>991
語源からして違う。アクセントはad+cantus(歌!)アクシデントはad+cadere(降ってくる!)
ついでに意味も違う。
- 998 :デフォルトの名無しさん:2016/02/11(木) 17:07:33.48 ID:R5nKPKgb.net
- 洒落にマジレス
- 999 :デフォルトの名無しさん:2016/02/11(木) 21:30:44.06 ID:1IH1NiG/.net
- >>983
似てるから良いんじゃないか?
総レス数 999
225 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★