2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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


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 ★