トップページ⇒tech
989コメント281KB

C++14/C++1z 20

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2014/09/11(木) 06:02:04.60ID:qJWLxxew
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/
0002デフォルトの名無しさん2014/09/11(木) 16:43:25.38ID:ojbvfKZR
< `∀´>ニダー
0003デフォルトの名無しさん2014/09/11(木) 18:33:13.97ID:K0+B6Pp2
サンダー(バリバリ
0004デフォルトの名無しさん2014/09/13(土) 09:46:33.10ID:qZU1LPcz
このスレは早くも終了なのかよ
0005デフォルトの名無しさん2014/09/13(土) 20:25:43.97ID:Y+GSO1Mi
CodeLiteのスレないの?
0006デフォルトの名無しさん2014/09/16(火) 10:52:42.11ID:zSFpHmgt
VS2014のconstexprフル装備祈願
0007デフォルトの名無しさん2014/09/16(火) 19:23:26.19ID:iJ2KM/M6
>>6
先月のプレビュー版ではthread_localが入ったし
このままならconstexprは入りそうではある
https://h70tha.dm2302.livefilestore.com/y2pO_T96yqnsay4tnPVnyTEENlK3YRiIV0uKLAaDg8O1qSB5bjhnYKyUlDm2ZOU8a6rXgqV9dZGU2sHOpN3ziLXEPLJCIVH0dWYLbhJ_jGrCAs/cppconform.png?psid=1
0008デフォルトの名無しさん2014/09/17(水) 02:34:32.03ID:epONY4U2
CTPで入ってたのにVS2013のまさかのconstexpr全omitあったからまだ信用できない
costexpr完全に入ったらしばらくバージョンアップしないつもり
0009デフォルトの名無しさん2014/09/17(水) 19:49:48.85ID:LDo1pzJu
November 2013という日付をバージョン2013だとでも勘違いしたのか?
0010デフォルトの名無しさん2014/09/18(木) 13:10:26.54ID:/Tic6iSd
>>7
VS14は割と楽しみだが、VC++だけでもそろそろポータブルにしてくれんかな?
0011デフォルトの名無しさん2014/09/18(木) 13:21:54.31ID:ITm6la/o
>>10
ポータブル化したとして何GBになるんですかね……?
と言うか何気に環境変数とか管理者権限云々で開発環境のポータブル化難しくね?
0012デフォルトの名無しさん2014/09/18(木) 13:29:31.28ID:kxzq7V59
仮想マシンじゃダメなのか
0013デフォルトの名無しさん2014/09/18(木) 23:05:37.14ID:jPU85ALV
Visual C++というかWindows SDKとかMicrosoft SDKとかPlatform SDKに含まれる「コンパイラツールセット」だよね
サイズはそんなに大きくないはず
実は丸ごとコピーして開発者コマンドプロンプトの環境変数を設定したら動くんじゃないの?
0014デフォルトの名無しさん2014/09/19(金) 01:41:57.82ID:UwNOujrp
>>10-13
The Microsoft Keyboard Layout Creatorのver1.3.4073 4.6 MBやver14 10.1MB
をインストールするとCL ver14のサブセットがbinフォルダにインストールされます。
コイツは恐ろしいことに、このツールはレイアウト情報からソースコードを生成して、
(といってもグローバル変数の初期値を書き換えるだけでコードは全て同じだが)
CLでコンパイルしてキーボードレイアウトDLLを生成するというシロモノなのだ。

なんというか、CLの無駄遣い感が半端ないぞマイクロソフトォッ!
MSKLCはインストールタイプのアプリケーションだけど、
インストール先のフォルダをコピーすれば普通にポータブルに動いた気がする。

>>13
動くんじゃないの?というか動かなかったらちょっとびっくりする。
0015デフォルトの名無しさん2014/09/19(金) 06:29:36.75ID:POGo0wF3
MSBuildは確実、clとかもそうなんじゃないかな
.netかcliで作られてるから.netインストール必須でそのバージョン入ってない環境へのポータブル化無理かな
0016デフォルトの名無しさん2014/09/19(金) 22:07:04.33ID:NULeqarn
>>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かな?
0017デフォルトの名無しさん2014/09/20(土) 22:33:38.82ID:en7FecTi
>>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
0018デフォルトの名無しさん2014/09/23(火) 20:12:30.04ID:49Grt2TR
コマンドラインコンパイルするときそういうのはMSBuild任せにすんだよ
0019デフォルトの名無しさん2014/09/26(金) 19:11:59.86ID:5FN85gvw
http://www.microsoft.com/en-us/download/details.aspx?id=44266
0020デフォルトの名無しさん2014/10/06(月) 18:12:27.11ID:lAgiFd+Y
C++14はいつ出るの?
0021デフォルトの名無しさん2014/10/06(月) 21:54:37.57ID:2jlCLSza
2014年中でしょ。
0022デフォルトの名無しさん2014/10/07(火) 07:46:59.59ID:Ty8b7rWw
もう出てるぞ
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
0023デフォルトの名無しさん2014/10/07(火) 07:56:10.18ID:8ffJrscy
標準と標準でないものの区別がつかない低脳は
プログラミングに携わるべきではないな
0024デフォルトの名無しさん2014/10/19(日) 17:09:22.99ID:/f9ejQX4
std::arrayのbegin()呼び出しが省略できたらいいのに
0025デフォルトの名無しさん2014/10/20(月) 00:56:30.98ID:95VZotEp
beginじゃなくてdataだった
0026デフォルトの名無しさん2014/10/25(土) 21:51:58.38ID:se+g30wO
std::arrayって何か使い道あんの?
関数の戻り値に使えたりコピーが便利なくらい?
0027デフォルトの名無しさん2014/10/25(土) 21:56:38.97ID:dFV7jCVh
begin,endがあるから各種algorithmを使えたり
今はstd::begin,endあるけど
0028デフォルトの名無しさん2014/10/25(土) 22:05:50.92ID:vC010Lko
>>27
algorithmとbeginは関係無くね?
それにarrayとstd::beginは両方とも11で追加されたはず
0029デフォルトの名無しさん2014/10/25(土) 22:28:46.56ID:JcXeoZEW
生配列でも出来るけど、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";
0030デフォルトの名無しさん2014/10/26(日) 05:29:02.67ID:avQ7NUoD
質問なんだけど

http://cpplover.blogspot.jp/2014/09/c14-lambda.html
↑の途中に出てくる

struct X
{
  int data = 0 ;
  void get_lambda()
  { // コピーキャプチャーしているつもり
    return [=](){ return data ; }
  }
} ;

って、
戻り値がvoid宣言なのにラムダ返しているのなんで?
0031デフォルトの名無しさん2014/10/26(日) 05:34:24.13ID:yJlRO0wF
ミスでしょう。
0032デフォルトの名無しさん2014/10/26(日) 07:18:34.73ID:x2QWGOO7
>>30
ドワンゴ広告ウッゼーw
0033デフォルトの名無しさん2014/10/26(日) 09:13:32.77ID:YG7wtUNO
std::type_infoでも型が派生クラス型か判断ができるようになればいいのにな
型消去使うとdynamic_castが使えない場面が出てくる
any_castがダウンキャストサポートできないのもその絡みもあるようだし
0034デフォルトの名無しさん2014/10/26(日) 09:24:43.71ID:rLkTHiAH
>>30-31
その時はそれに対応したコンパイラなかったのか
それとも、脳内コンパイラで確認したってことかな
0035デフォルトの名無しさん2014/10/26(日) 16:25:33.68ID:GFqFczi9
コードは規格に基づいて理想的にコンパイルされるべきで、実装で確かめる奴はアホっていうのが本の虫の人の主張
なお理想コンパイラはよく間違えるもよう
0036デフォルトの名無しさん2014/10/26(日) 20:53:19.66ID:4u3Xx+E7
微妙にわかる気がする。
朝から晩までコード見る度に規格と照らし合わせてると
脳内コンパイルが出来るようになって
ネイティブスピーカーの域に達した感覚になるんだわ。
それまでとは比べものにならない速さで読み書きできるようになる。
0037デフォルトの名無しさん2014/10/27(月) 13:54:57.02ID:MTe62n5j
配列も使えるようstd::begin(array)追加したけど やっぱりarray.begin()
なんて、さっちゃんが言い出した
0038デフォルトの名無しさん2014/10/27(月) 21:25:43.77ID:4ApD5/+I
array なー、初期化リストの要素数で template 引数に与える配列サイズを省略出来れば完璧なんだけどな
0039デフォルトの名無しさん2014/10/27(月) 22:51:33.32ID:xtFW0vyk
そういやどうしてinitializer_listは型にサイズ情報が無いんだろう?
template<typename E>
class initializer_list_base;
template<typename E, int N>
class initializer_list : initializer_list_base<E>;
があったらよくね?
0040デフォルトの名無しさん2014/11/04(火) 12:36:41.71ID:SSMCKloW
>>39
initializer_list が constexpr 対応なら size メソッドで取得して、必要なサイズと合致しなければ static_assert するという方法で対応できる。
0041デフォルトの名無しさん2014/11/04(火) 14:16:39.79ID:TAxFdUHz
>>40
基本的なことですまないけど
size()がconstexprってどういうことなん?
template<typename T>
void f(std::initializer_list<T> data) {
 data.size(); //constexpr?
}
呼び出し側の実引数によってsize()は変わるから
定数じゃないと思ったのだけれど
0042デフォルトの名無しさん2014/11/04(火) 15:57:15.50ID:4Av9OkMR
初期化リスト内の要素数自体がランタイムで変化することってあったっけ…?
無いようならコンパイル時に決定できるのでは (C++14)
0043デフォルトの名無しさん2014/11/04(火) 16:19:26.58ID:dNiQr+8C
C++14のinitializer_listからはconstexprじゃないメンバ関数は全部消されたぜ
0044デフォルトの名無しさん2014/11/04(火) 16:51:59.88ID:SSMCKloW
ところで、従来から immutable な値 (const オブジェクト) は定数って用語で呼んでたと思うんだけど、
コンパイル時に値が作成されるような値の呼び名ってあるの?
なんとなく >>41 みたいな場合で「定数」っていう言葉を使うとちょっと微妙だなと思ったので。
0045402014/11/04(火) 17:42:59.22ID:SSMCKloW
>>41
スマソ。 constexpr 関数内で static_assert は呼べないらしい。
http://boleros.hateblo.jp/entry/20130319/1363719366
でもまあ他のなんだかんだの方法で検出することは出来る程度にコンパイル時に確定してるのは間違いない。
0046デフォルトの名無しさん2014/11/04(火) 23:48:12.39ID:Rug3DE9L
実行時定数と静的定数の区別は必要になったよねえ
constexpr関数はメタ関数に使えるから
template < int N >
struct meta_dosomething
{
0047デフォルトの名無しさん2014/11/04(火) 23:50:19.37ID:Rug3DE9L
enum { value = constexpr_dosomething( N ), };
static_assert( !value, "error!" );
};
途中で送信して泣きそう
0048デフォルトの名無しさん2014/11/05(水) 10:33:08.72ID:J65JsdQf
constexpr な関数内では変数が使えるから、
それだけでも進歩だよ
0049デフォルトの名無しさん2014/11/14(金) 17:54:24.74ID:6MnqTsm2
auto f() -> auto
{ return true; }

の二つ目のautoって何のためにあるんですか?
書かなきゃいいだけに思えるんです。
0050デフォルトの名無しさん2014/11/14(金) 18:06:11.70ID:G/YaetuK
そうだよ書かなきゃいいよ
0051デフォルトの名無しさん2014/11/15(土) 08:01:50.93ID:TdH6O9+D
auto※1 f() -> auto※2
{ return true; }

※1 型は->を見てくれ。->が無かったらreturnから推論して
※2 気が変わった。やっぱ型はreturnから推論して
0052デフォルトの名無しさん2014/11/19(水) 13:52:09.82ID:meW/TIzh
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
0053デフォルトの名無しさん2014/11/19(水) 20:06:17.55ID:oXOCRAV5
>>52
ようやく constexpr が入るのか
わくわく
0054デフォルトの名無しさん2014/11/19(水) 20:08:37.37ID:lJVSEwou
継承コンストラクタ入るのか
0055デフォルトの名無しさん2014/11/19(水) 21:46:53.07ID:10cdBpQx
ユーザー定義リテラル
実用性があるかしらんが楽しそう
0056デフォルトの名無しさん2014/11/20(木) 15:46:34.87ID:4NRJHvjM
boostのformatが
"x=%02X, y=%02X\n"_format % x % y
と書けたら少し嬉しい
0057デフォルトの名無しさん2014/11/20(木) 15:48:08.32ID:4NRJHvjM
あと
std::this_thread::sleep_for(5 * 1000ms)
と書けるのがすばらしい
0058デフォルトの名無しさん2014/11/20(木) 17:49:09.58ID:VEbq8foD
忌み子だったユーザー定義リテラルさんがいよいよメジャーデビューしてしまうのか
胸が熱くなるな
0059デフォルトの名無しさん2014/11/20(木) 18:15:07.02ID:SrHOb8b0
constexpr がコンパイル時エラーとか返せると良いのだが。
ダメな引数を与えられたときとかに。
0060デフォルトの名無しさん2014/11/20(木) 18:59:33.77ID:xKb9FhzG
定数式しか渡せないconstexpr引数が有ればよかった
0061デフォルトの名無しさん2014/11/20(木) 21:31:43.81ID:W3wU8KPK
satatic_assertでがんばる
0062デフォルトの名無しさん2014/11/21(金) 20:42:02.83ID:e1i4D7mo
#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!!
}


・・・ないな。これは酷い
0063デフォルトの名無しさん2014/11/22(土) 07:15:18.84ID:OKQ5CsFI
質問です
decltype ( (bool const)false )
がbool const型でなくboolになってしまうようなのですが何故でしょうか?
clangです
0064デフォルトの名無しさん2014/11/22(土) 08:44:23.42ID:nSOp3wBm
constは型じゃなく属性だな
0065デフォルトの名無しさん2014/11/22(土) 11:15:48.83ID:vkM9bADj
>>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. (略)
0066デフォルトの名無しさん2014/11/22(土) 11:43:35.39ID:07mFrfCY
type-idはconstの有無が別だが
decltype()の中が式なので変換されるのか
decltypeに宣言の型と式の型の両方の
機能を持たせるなんて糞文法だな
0067デフォルトの名無しさん2014/11/22(土) 12:06:41.75ID:18N8Upow
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から推論
0068デフォルトの名無しさん2014/11/22(土) 14:01:49.41ID:uFJdFI2z
>>67
4つめだけが用途思いつかないなあ。
0069デフォルトの名無しさん2014/11/22(土) 19:10:51.70ID:G0qqsEhR
>>67
4番目の意味を教えて。3番目とは違うの?
0070デフォルトの名無しさん2014/11/22(土) 19:17:06.08ID:ROyo8ZjH
4番目は T&型がT型になるのを防ぐと思った。
0071デフォルトの名無しさん2014/11/22(土) 19:41:44.85ID:18N8Upow
>>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
0072デフォルトの名無しさん2014/11/22(土) 19:42:51.01ID:18N8Upow
ごめん間違えた

誤
識別子でないけどlvalue/rvalueの時はT&/T&&

正
識別子でないけどlvalue/xvalueの時はT&/T&&
0073デフォルトの名無しさん2014/11/22(土) 19:59:50.92ID:18N8Upow
典型的な違いをもう一つ。
void f(int && v) {
 auto v1 = v; // int 
 decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
 decltype(auto) v3 = (v); //式(v)は左辺値なのでint &
}
0074デフォルトの名無しさん2014/11/22(土) 22:32:21.86ID:DmPVZ8JC
多すぎる括弧で挙動が変わることはない、と思っていたけどそうじゃないんだな
0075デフォルトの名無しさん2014/11/23(日) 00:07:36.68ID:zh3m6fa7
C++は糞文法だからね
0076デフォルトの名無しさん2014/11/23(日) 06:28:56.41ID:uAltGaNh
11になったから、よーしパパ初期化は{}つかっちゃうぞ
とおもったらvectorは()じゃないと初期化できないな
0077デフォルトの名無しさん2014/11/23(日) 06:32:20.14ID:gLhfEvRo
ttp://ideone.com/Ymwwk4
{}使えるじゃん
0078デフォルトの名無しさん2014/11/23(日) 06:38:14.38ID:uAltGaNh
引数が2つのとき
0079デフォルトの名無しさん2014/11/23(日) 06:39:50.75ID:fVyePvWV
>>73
std::move(v)しなくても左辺値として認識されんの?
0080デフォルトの名無しさん2014/11/23(日) 06:42:57.74ID:gLhfEvRo
>>78
ttp://ideone.com/lbUj0K
使えるけど
0081デフォルトの名無しさん2014/11/23(日) 07:08:27.11ID:lS9ATFcQ
vectorでは使えるけど、arrayで使えなきゃあんまりうれしくないけど。
0082デフォルトの名無しさん2014/11/23(日) 07:10:41.45ID:uAltGaNh
std::vector<pa> v{ 1, 2};
0083デフォルトの名無しさん2014/11/23(日) 07:58:34.18ID:5M0zvydY
>>82
何が言いたいんだ?
0084デフォルトの名無しさん2014/11/23(日) 08:05:53.99ID:dIaKKb39
そういえばVisualStudio2013だと
stringとかvectorとかを{...}で初期化しようとしたら型変換のコンパイルエラーが出たな
感覚では、{...}だとinitializer_listを引数にしたコンストラクタとして解釈されてるっぽい挙動だった
VS特有の不具合なのか言語で規定された振る舞いなのかは調べてないから知らない
0085デフォルトの名無しさん2014/11/23(日) 08:07:01.55ID:vlSDqlqi
あれだろ。initializer_listを引数に取るコンストラクターがあると
他のコンストラクターを呼び出すのに
{}じゃなく()にしないといけなくなってマヌケになるってことだろ。
0086デフォルトの名無しさん2014/11/23(日) 08:09:10.84ID:vlSDqlqi
>>84
初期化についてはVCはバグが結構あるし
MSも認識してたはず。たぶんVC固有
0087デフォルトの名無しさん2014/11/23(日) 08:09:10.85ID:uAltGaNh
{}はナローキャストを防ぐ機能がついてる。
0088デフォルトの名無しさん2014/11/23(日) 08:11:37.59ID:5M0zvydY
>>81
ttp://ideone.com/mI9C26

なんなんだこの流れ
0089デフォルトの名無しさん2014/11/23(日) 08:17:46.56ID:vlSDqlqi
>>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 &)を呼び出す
}
0090デフォルトの名無しさん2014/11/23(日) 08:33:51.05ID:vlSDqlqi
>>81
array<int, 3> a = {1,2,3};
この初期化は単なるCの構造体や配列の期化構文だぞ
0091デフォルトの名無しさん2014/11/23(日) 08:42:30.96ID:87V1WXhZ
C++03でも通るしな
0092デフォルトの名無しさん2014/11/23(日) 09:03:38.65ID:vlSDqlqi
>>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/
0093デフォルトの名無しさん2014/11/23(日) 09:25:15.48ID:ov3z4yP9
C++14のISO改訂はまだなの?
次スレが立つまでには出て欲しい
C++15になってしまう
0094デフォルトの名無しさん2014/11/23(日) 09:49:38.07ID:fVyePvWV
>>89
あごめん右辺値と左辺値間違えた
>>73で
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
とあったからvはint &&と認識されるのかなと
0095KUSO KOTE ◆unko./w.Osri 2014/11/23(日) 10:17:38.46ID:tffEMZrq
>>94
decltypeはその名の通り式の値に基づくのでなく
expression対象のもともとの宣言を流用するものゆえ。
0096デフォルトの名無しさん2014/11/23(日) 10:25:22.27ID:fVyePvWV
サンキュー
decltypeの有用性感じた
0097デフォルトの名無しさん2014/11/23(日) 10:38:38.74ID:t4LQPotv
decltype(i):変数iの宣言の型
decltype(f()):一応、関数fの宣言の戻り値の型
decltype((i)):もはや宣言(decl)と関係無い便利テクニック

((i))ってなんだよ。糞すぎる
0098デフォルトの名無しさん2014/11/23(日) 10:51:28.01ID:uAltGaNh
名前以外の左辺式のdecltypeは&がつくからな
0099デフォルトの名無しさん2014/11/23(日) 10:59:16.48ID:85Qt5X9k
マンコ
0100デフォルトの名無しさん2014/11/24(月) 00:31:00.09ID:QorXfa9A
>>88 >>90
引数が2つのとき
0101デフォルトの名無しさん2014/11/24(月) 06:15:49.50ID:J9vWCCAB
constをつけたりoverrrideをつけたりnoexeptをつけたり
するのは自由だけどあるとつけなければならない気分になって
負担が増すばかりだな
0102デフォルトの名無しさん2014/11/24(月) 08:16:33.34ID:0/XZ1dPC
mainの引数も付けないとソワソワします
int main(int c, char *v[])
{
 return safe_main(c, v);
}
int const safe_main(int const, char const *const *const argv) noexcept; // これで安心(^^)
0103デフォルトの名無しさん2014/11/24(月) 10:16:36.98ID:XbvFM8cR
>>101
> つけなければならない気分になって

付けとけば安心できるので負担と思ったことないわ
まあ、おっちょこちょいだからそれだけ痛い目にあってるだけだけど w
0104デフォルトの名無しさん2014/11/24(月) 11:28:14.71ID:fPPxYid8
fianalもきっちり付けます
struct A final {
 double x, y;
};
class D final : public B {
 inline virtual void Test() const noexcept final override;
};
0105デフォルトの名無しさん2014/11/24(月) 12:06:03.69ID:+w/djodu
なんで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&と書くべき?
0106デフォルトの名無しさん2014/11/24(月) 12:22:04.44ID:XZf3PEWH
前後で意味が変わる
0107デフォルトの名無しさん2014/11/24(月) 16:06:27.96ID:pb79/BSn
>>106
どう違うの?
0108デフォルトの名無しさん2014/11/24(月) 16:10:01.64ID:EXpXIrWI
後ろから前から
0109デフォルトの名無しさん2014/11/24(月) 16:32:29.34ID:Z8R6fzqg
その20世紀のAVタイトルを彷彿させるセンスはまさにジジイ
っstd:back_inserter
0110デフォルトの名無しさん2014/11/29(土) 13:27:56.54ID:Ppi1W3oY
おまえらいつもどうやって勉強してんの?
規格や論文に目通してるわけ?
0111デフォルトの名無しさん2014/12/01(月) 00:27:33.95ID:gRrDjFp+
// どっちも同じく、xの参照先の値を書き換えられない
const X &x;
X const &x;
0112デフォルトの名無しさん2014/12/01(月) 00:38:01.68ID:gRrDjFp+
// どちらも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(); // こっちもらめぇぇぇ!!.
0113デフォルトの名無しさん2014/12/01(月) 07:46:20.98ID:wjupjIrr
>>112はDT
0114デフォルトの名無しさん2014/12/01(月) 16:04:09.98ID:3AzrNbDE
>>110
言語仕様知るのに論文読まんて
どうせ規格化されたものしか共通仕様じゃないし
#pragma once除く
0115デフォルトの名無しさん2014/12/01(月) 23:59:15.29ID:TejZMH/v
>>112みたいなコメントが書いてあったら殺害だな

int main()
{
DeviceConnect(); // アカンで.
DeviceConnect(); // ダメなのぉっっ・・・.
DeviceConnect(); // こっちもらめぇぇぇ!!.
DeviceConnect(); // もう堪忍して・・
}
0116デフォルトの名無しさん2014/12/02(火) 18:22:33.87ID:hrM51f0J
docomo deviceconnect 4回
で検索すると出てくるやつには
そんなコメントは無かった
0117デフォルトの名無しさん2014/12/02(火) 19:50:53.67ID:4lPIVtOy
ネタ解説ヨロ
0118デフォルトの名無しさん2014/12/02(火) 21:55:39.93ID:Emi9Jogj
エロゲーのやり過ぎだろう。細かいことは気にしないのが吉。
サンプルコードに
std::printf("おちんぽじゅぽじゅぽ");
とかよく見かける
0119デフォルトの名無しさん2014/12/03(水) 07:04:37.92ID:SnuHs4CF
漫画かもしれん。
ttp://homepage2.nifty.com/kujira_niku/okayu/misa.html
>>116
これ元ネタが有ったのか
0120デフォルトの名無しさん2014/12/03(水) 13:32:05.22ID:mmPYJ323
effectiveよんでたらstd::bindがかわいそうに思えてきた
0121デフォルトの名無しさん2014/12/03(水) 17:35:36.46ID:8JkTKL6j
bind何ソレうまいの?
そろそろdeprecatedでしょ
0122デフォルトの名無しさん2014/12/06(土) 12:27:42.47ID:JxChFgy6
超絶ウルトラ役に立つテンプレートを考えた。
template<typename T>
using type = T;

使い方はいろいろ。
 auto p = type<char const *>{nullptr};
 operator type<char const *>();
 typedef type<int(void*)> my_func;
便利じゃね?
0123デフォルトの名無しさん2014/12/06(土) 13:19:08.05ID:4TWdKRQe
つidentity
昔からあって何度か標準入りの機会がありながらその都度拒否されている可哀想な子
0124デフォルトの名無しさん2014/12/08(月) 19:34:17.46ID:dG3YdRcj
[](){
signed int a = 10;
std::cout << "out a value : " << a << std::endl;
return a;
}();

って、実はC++11では違法だったんだな・・・何も意識せずに使ってたから気付かなかったわ
0125デフォルトの名無しさん2014/12/08(月) 21:58:03.79ID:QJRTZs6a
>124
どのへんが問題なのよ?
0126デフォルトの名無しさん2014/12/09(火) 11:42:33.43ID:hZR3cOBJ
>>125
戻り値の型推論は、ラムダの処理内容が
{
return expression;
}
の時にしか働かないはず。C++11では
C++14では全てのreturn文で曖昧さの無い同一の型を戻す場合は推論されるはず
0127デフォルトの名無しさん2014/12/09(火) 12:50:20.18ID:g1fAS7xT
戻り値の型推論ってあんまり使いたくないな
0128デフォルトの名無しさん2014/12/09(火) 21:00:52.11ID:jBcG0R18
むしろラムダに戻り値の型を書く人を見たことがない
0129デフォルトの名無しさん2014/12/10(水) 22:56:47.16ID:nZE7xrpC
多層ラムダが使いたくて仕方がない
0130デフォルトの名無しさん2014/12/11(木) 06:36:43.52ID:dxPi+MRx
N4228: Refining Expression Evaluation Order for Idiomatic C++
この提案通ってほしいな (若干の修正はあるとしても)
式の評価順序をいつまでも未規定のままにしてはいけない
0131デフォルトの名無しさん2014/12/11(木) 12:10:37.25ID:u+WFZ3/N
規定してもパフォーマンス悪化はない、とする研究結果がでてそれを皆が信じない限り基本仕様にするのは無理だろうな
0132デフォルトの名無しさん2014/12/11(木) 13:05:12.88ID:3INmN49U
素人考えだけど、パフォーマンス悪化はそれなりにある気がするんだよなあ
特に呼び出し規約がややこしい、かつ、レジスタ数の少ないマシンで
規定するとしても最近のCPUに合わせた規定になるだろうし
0133デフォルトの名無しさん2014/12/12(金) 20:26:39.09ID:5deZ+VYw
そらそうよゼロオーバーヘッドなんて幻想だ
最適化は魔法じゃない
(たとえ静的なものでも)無駄な機能の濫用は抑えてコードはシンプルにして、
クリティカルなとこはアセンブリ見てチェックする以外にないのよね
0134デフォルトの名無しさん2014/12/12(金) 20:27:30.99ID:5deZ+VYw
誤爆した気がする
0135デフォルトの名無しさん2014/12/13(土) 07:20:21.79ID:/fUpqDZF
提案された変更はスタックに積む順序がMSVCと逆になるので
計算してpushして、という流れを阻害するとゴネる奴が出てくる
0136デフォルトの名無しさん2014/12/13(土) 08:34:29.93ID:NHM062eU
代入と.と->だけ決めてやればいいと思う
他は未規定でいいだろ
0137デフォルトの名無しさん2014/12/13(土) 09:20:03.10ID:HH3VwBsv
順序を強制できるホルダーを用意しようよ
構文レベルでさ
func(REEO_LEFT(a++,a,a)); // func(0,1,1);
func(REEO_RIGHT(a++,a,a));// func(0,0,0);
0138デフォルトの名無しさん2014/12/13(土) 10:02:59.79ID:ysyQzUOY
よし新しいキーワード追加しよう。
名前はstrict_order_funcでいいだろう。文法はこうだ
inline virtual auto f() const & noexcept strict_order_func [[noreturn]] -> void final override;

属性でもいい。
inline virtual auto f() const & noexcept [[strict_order_func]] -> void final override;

>>137はfuckとの評価順序が指定できないので却下
0139名無しさん@そうだ選挙に行こう2014/12/13(土) 12:28:19.76ID:UaeG+OzW
順序が未規定なのがツマラン罠になってるから決めようって話なのに、罠増やすような文法足してどうする気だよw
0140名無しさん@そうだ選挙に行こう2014/12/13(土) 14:56:17.33ID:i/Znjmf4
ゼロオーバーヘッドに固執する人がいるので
[[eo_left_to_right]] void f();//この関数内の式は左から右
みたいに明示的に使う文法にしないと荒れる。
0141名無しさん@そうだ選挙に行こう2014/12/13(土) 15:08:42.62ID:YsPzxHkX
>>139
> 順序が未規定なのがツマラン罠になってるから

警告出せるようにできないもんだろうか...
0142名無しさん@そうだ選挙に行こう2014/12/13(土) 15:11:30.40ID:rg/f35yI
そもそも関数毎に指定したいようなものじゃなくね?
0143名無しさん@そうだ選挙に行こう2014/12/13(土) 15:51:02.17ID:c0Duqkea
順序は関数を呼び出すときに必要なものだから、
func [[eo_left_to_right]] (a++, a, a);;

みたいな
0144名無しさん@そうだ選挙に行こう2014/12/13(土) 15:55:04.14ID:UaeG+OzW
>>141
ひとつの式の中で同じ変数の変更と参照を行ってると警告、としても
a = a + 1; すら引っかかるだろうからなあ
実用的な警告の規定はそれはそれで難しそう
0145名無しさん@そうだ選挙に行こう2014/12/13(土) 16:19:57.39ID:UaeG+OzW
そうだな、左辺値参照としての評価は値のロードよりも後回し

a = a + 1; //aの値のロード、+1、aのアドレスのロード、ストア(operator =)の順
func (a++, a, a); //aの値のロード、後ろ2つの引数のpush、a++、最初の引数のpushの順

で、ひとつの式で2回左辺値参照を取ると警告

a = a++; //=と++の両方が左辺値参照を要求するので警告

とかだろうか……
二つ目の例は>>143の意図と逆だけど、operator=で左辺は後から評価したいだろうから
0146名無しさん@そうだ選挙に行こう2014/12/13(土) 17:04:11.57ID:bSC9qJa5
>>144
一応規格はあるし、単純なケースならチェックはできると思う
https://www.jpcert.or.jp/sc-rules/c-exp30-c.html
0147名無しさん@そうだ選挙に行こう2014/12/13(土) 17:13:14.33ID:Ib3n5uTG
『このルールが意味するのは、たとえば次のような文は許されるということである。
i = i + 1;』

「このルール」とやらを読んでも
そのような結論が導き出せないのだが
0148名無しさん@そうだ選挙に行こう2014/12/13(土) 17:22:33.54ID:UaeG+OzW
>>146
CERT(やMISRA他)ルールを守る必要がある気はしないが……
operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう

でも、式だのなんだの適当に書かずに「副作用完了点」は意識するべきだったと反省。そこはありがとう
0149名無しさん@そうだ選挙に行こう2014/12/13(土) 17:24:35.73ID:eB2azqJA
そういやCから受け継いだシーケンスポイントって用語が
最近規格から消されてるのは何故なんだぜ
0150名無しさん@そうだ選挙に行こう2014/12/13(土) 18:18:21.96ID:FMvzTkOT
>>148
> operator+の呼び出し順が未規定だからってfunc(a + 1, b + 1);にも警告出されても困るだろう

それ副作用が発生しないから警告しちゃダメ
0151名無しさん@そうだ選挙に行こう2014/12/13(土) 18:37:44.24ID:UaeG+OzW
>>150
C++には演算子オーバーロードという機能があってな……
0152名無しさん@そうだ選挙に行こう2014/12/13(土) 18:51:29.60ID:U8eX8arB
オーバーロードされた演算子内で、実はグローバルな a や b を使っていても文句はいえないね‥
0153名無しさん@そうだ選挙に行こう2014/12/13(土) 19:03:29.25ID:54ajxy39
>>151
単純なケースならと書いたはずだが?
0154デフォルトの名無しさん2014/12/14(日) 01:44:04.31ID:3jNKm1IN
>>153
ならこの単純なケースはどうなの
f(g1(), g2());
0155名無しさん@そうだ選挙に行こう2014/12/14(日) 03:26:06.21ID:Twa9q4id
関数の引数評価順は__fastcall、__stdcall、__cdeclの違いだろ
それ意識してたら順番になる

bool func(〜, bool& bValue);

bool bValue =fase;
if(func(〜, bValue) && bValue) ...
は最適化でbValueの変化キャッチできないケースがあった
0156名無しさん@そうだ選挙に行こう2014/12/14(日) 03:54:35.97ID:ahXhAHEb
>>155
最近は馬鹿真面目にpushせずに、最初にスタックポインタをずらしておいて後から値をぶち込む最適化も使ってくるので
cdeclだからって必ずしも右から評価されるわけでもない

あとそのbValueの例は単なるバグでしょ
0157名無しさん@そうだ選挙に行こう2014/12/14(日) 06:41:43.26ID:DVcU1Dgz
>>154
それ単純じゃないでしょ
コンパイル時点では、g1( ), g2( ) の中身わからないから原理的に静的チェックできない
0158名無しさん@そうだ選挙に行こう2014/12/14(日) 10:06:22.09ID:1gbAaHF6
>>157
お前はアスペか。
チェックできないからと言ってこの程度で警告
出しまくられたら困るだろうというのが
>>148,>>154のレスな訳だが
0159名無しさん@そうだ選挙に行こう2014/12/14(日) 10:26:30.70ID:niKTVHiJ
>>158
チェックできないから警告出すと言う設計するおバカさん乙
0160名無しさん@そうだ選挙に行こう2014/12/14(日) 10:51:40.60ID:ahXhAHEb
なんか途中から他の人が代わりに言い争ってくれてるようなw

さて、intをラップしてint同様に振る舞うライブラリも多くあるのに、そういうので警告出せないのもな
警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ

妥協点としては、constexpr関数なら副作用無しと推定、そうじゃなければ副作用有りと推定して
推定込みで副作用の順序が未規定に触れるようだと警告する、ぐらいかなあ
それでも要らん警告まみれになりそうだけど
0161名無しさん@そうだ選挙に行こう2014/12/14(日) 11:18:59.09ID:uiX6InFo
そんな難解なことするなら順序を固定
C/C++だけ中世の言語仕様というのはいただけない
0162名無しさん@そうだ選挙に行こう2014/12/14(日) 11:29:17.24ID:niKTVHiJ
>>160
> 警告出せる分スマートポインタよりも生ポインタのほうがいいじゃん、なんて事にもなりかねんぞ

なんでそんな結論になるんだよ w
0163名無しさん@そうだ選挙に行こう2014/12/14(日) 16:19:39.08ID:8tq+4KOg
f(a[0],a[1])とかf(a+1,b+1)とか(*p)(-a)とかでいちいち警告されてたらたまんねえよ
0164名無しさん@そうだ選挙に行こう2014/12/14(日) 17:19:20.11ID:DVcU1Dgz
>>163
アホは割り込んでくるなよ...
0165名無しさん@そうだ選挙に行こう2014/12/14(日) 19:53:46.71ID:IDQMN66T
C++14が12/8に最終ドラフトの投票に入ったようだけど
どこかでダンソロードできない?
0166デフォルトの名無しさん2014/12/14(日) 22:06:12.70ID:PxebKEww
日本語訳たのむ
0167デフォルトの名無しさん2014/12/14(日) 22:11:10.92ID:iaqWif0b
訳:ボクは馬鹿です。
0168デフォルトの名無しさん2014/12/15(月) 14:50:37.08ID:nf/x2oQo
きっと本好きな人がいいタイミングで教えてくれるさ
0169デフォルトの名無しさん2014/12/15(月) 18:27:03.70ID:OL+lbztu
FDISの承認はあと2ヶ月かかるらしいね。
もはやC++14じゃなくなった。C++15
0170デフォルトの名無しさん2014/12/16(火) 22:12:16.41ID:Xf7YD5Lp
まじでか。
でも既に完全実装品が出回ってるC++14
0171デフォルトの名無しさん2014/12/17(水) 10:40:42.42ID:KoA4/QGg
最近gccからclangに乗り換えた
0172デフォルトの名無しさん2014/12/17(水) 14:02:17.61ID:W7CBukf0
最近WindowsからLinuxに乗り換えた
0173デフォルトの名無しさん2014/12/17(水) 22:54:44.52ID:hVqOiBaG
最近大橋未久から竹内真琴に乗りかえた。
0174デフォルトの名無しさん2014/12/18(木) 21:50:07.53ID:s0aNM13b
最近浅見リリスから神崎灯代に乗りかえた
0175デフォルトの名無しさん2014/12/18(木) 22:10:37.68ID:1U1dQxOa
ISO/IEC 14882の4版が承認されて出版フェーズ来たぞ
今年じゅうに出るか?
0176デフォルトの名無しさん2014/12/23(火) 12:01:02.82ID:BQnh9/V+
なんでいつまでたってもlocale指定が国別のみなんだよ
さっさとUTF8とかUTF16とか指定出来るようにしろよ
0177デフォルトの名無しさん2014/12/23(火) 13:23:17.91ID:ZJtK38Zj
>>176
ユニコードは文字集合であって、localeはまた別の話なんだよなぁ。
「スペイン語ではchを1文字として扱い、ソート順はcの後」が望まれ、英語圏とは両立できない。

まぁ、WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢。
かといって、glibcはエラーにならないだけで、まともに実装されていないが。
0178デフォルトの名無しさん2014/12/23(火) 13:47:13.09ID:GcvQJyK4
Windows以外だとja_JP.UTF-8って感じで指定出来るでしょ
0179デフォルトの名無しさん2014/12/23(火) 14:14:38.23ID:WKIgJwyI
>>177
>WindowsのCRTが .65001 のlocaleを受け付けないのは、MSの怠慢

MS「CライブラリじゃなくてWindows本体が
 マルチバイトを最大2文字固定で作り込んで
 修復不能だったわw すまんww
0180デフォルトの名無しさん2014/12/23(火) 14:56:52.46ID:ATuB6kuL
うにこーど初期「え?まるちバイトが3バイトとかないから‥そんな辺境の古代文字はそのうち消えるから知らん‥
0181デフォルトの名無しさん2014/12/23(火) 15:03:48.81ID:egk/n0nz
楔形文字とか採用してなかったっけあいつら
0182デフォルトの名無しさん2014/12/25(木) 11:26:51.22ID:Y5il8ylR
>>178
さすがに絵文字にも文字コード振られる時代がくるとは予想出来なかった
0183デフォルトの名無しさん2014/12/25(木) 11:27:28.16ID:Y5il8ylR
アンカまちがえた
>>180
0184デフォルトの名無しさん2014/12/28(日) 13:53:45.48ID:6AHAC7RL
C++17って初期化でのinitialzer_listの扱いが何か変わる?
0185デフォルトの名無しさん2014/12/28(日) 14:21:29.61ID:yfmtRvIy
部分特殊化がill-formedになる
0186デフォルトの名無しさん2014/12/30(火) 01:06:36.02ID:3lD+Q1+/
C++14とは何だったのか
結局2014年には出ずにC++15か
C++17もC++18に改名した方がいい
0187デフォルトの名無しさん2014/12/30(火) 05:43:08.42ID:+7B8jKAW
C++14+
0188デフォルトの名無しさん2014/12/30(火) 05:47:25.52ID:h/Ey9oea
16進数なら20だからあと6年あるぞ
0189デフォルトの名無しさん2014/12/30(火) 06:00:16.82ID:engT/SqQ
昔はC++1yと言ったな
つまり36進数ってこった
0190デフォルトの名無しさん2014/12/30(火) 06:09:05.64ID:JWtJz6A1
C+1
0191デフォルトの名無しさん2014/12/30(火) 22:18:02.74ID:M4h+pRm4
変数テンプレートが特殊化/部分特殊化できないのはなんのため?
すっごく不自由なんだけど
0192KUSO KOTE ◆unko./w.Osri 2014/12/30(火) 22:33:19.84ID:TpS86nB6
>>191
書き忘れたのでは。次の改定では可能になる予定。
というか、そろそろ出るはずなのだけれど。
0193デフォルトの名無しさん2014/12/30(火) 23:57:42.32ID:1zc8xpv9
>>189
それはC++1xの次ってだけじゃね。なんでxだったのかは知らない
0194デフォルトの名無しさん2014/12/31(水) 03:25:07.13ID:50Uir9+t
C++11も2011年には間に合わなかったし、もう数字やめたら?
検索もしにくいし、いいとこないじゃん?
0195デフォルトの名無しさん2014/12/31(水) 03:30:15.82ID:Imw1KDaA
ttps://www.google.co.jp/search?hl=ja&q=C%2B%2B11&lr=lang_ja&nfpr=1&gws_rd=ssl
普通に11の情報が出てくるけど
0196デフォルトの名無しさん2014/12/31(水) 03:31:48.23ID:n+VO5zpK
2100年問題が!
0197デフォルトの名無しさん2014/12/31(水) 04:54:36.46ID:69RlDRjx
C++21
0198デフォルトの名無しさん2014/12/31(水) 06:27:41.62ID:pQziN1CJ
>>195
2012年に出版する文書に2011の名前を使うなってことでしょ。
でも規格の文書番号は「ISO/IEC 14882:2011(E)」で
ISO 9001的には文書が2011/9/1に承認されたことになっているらしい
0199デフォルトの名無しさん2015/01/04(日) 20:30:12.79ID:8eyhX8Ev
14の次の改定の主な変更を日本語で解説しているサイトはありませんか?
0200デフォルトの名無しさん2015/01/05(月) 05:56:26.02ID:yIG755cC
まんまC++1zでググれよ
0201デフォルトの名無しさん2015/01/09(金) 04:16:20.68ID:vwXS0V2o
目新しい話ないかな〜
0202デフォルトの名無しさん2015/01/11(日) 18:39:31.70ID:FnSQDCUV
残念ながら特になさそうね
0203KUSO KOTE ◆unko./w.Osri 2015/01/15(木) 13:15:46.99ID:84hdTpR+
ISO/IEC 14882:2015来た。
ちょっと買ってくる。
0204デフォルトの名無しさん2015/01/15(木) 18:41:24.66ID:cjiwWuZ5
>>194
普通にC+++でいいと思う。
0205KUSO KOTE ◆unko./w.Osri 2015/01/15(木) 20:06:34.62ID:vTD+rm7S
「ISO/IEC 14882:2015」と言うのを買ったら
中身は「ISO/IEC 14882:2014」と書いてあったでござる。
ISOが文書の版管理もできないとは。。
0206デフォルトの名無しさん2015/01/15(木) 22:37:23.13ID:ih50NDRC
C++++
それはC#
0207デフォルトの名無しさん2015/01/16(金) 01:20:10.69ID:4LKVySGb
C++11と比べてC++14の目玉仕様って何?
0208デフォルトの名無しさん2015/01/16(金) 01:40:07.04ID:PwhGSXRH
generic lamda
0209デフォルトの名無しさん2015/01/16(金) 01:46:55.97ID:AShWB8/e
平均以上のC++プログラマにとっては
lambda式の拡張(キャプチャ・ジェネリック)と普通の関数の返却値型導出
加えてもっと踏み込んだプログラマにとっては
constexprの制限緩和と変数テンプレート
かな
0210デフォルトの名無しさん2015/01/16(金) 02:03:05.04ID:4LKVySGb
>>209 >>208
サンキュ。
変数テンプレートだけ知らないなー。
ちょっとggってくるわ。
0211デフォルトの名無しさん2015/01/16(金) 10:32:52.46ID:uUQ5rBcg
constexpr拡張は平均以下のC++プログラマにも利益大きいと思う。
0212デフォルトの名無しさん2015/01/16(金) 17:13:30.72ID:xOuiDA1S
STLが対応したら大きな恩恵だな
VS2015はSTLのconstexpr化しないんだっけ?
0213デフォルトの名無しさん2015/01/16(金) 22:06:52.40ID:u6SuX1CK
STL?
今から出荷される製品にそんな過去の異物はありません
0214デフォルトの名無しさん2015/01/16(金) 23:09:14.83ID:WOASOGM6
異物ではないな、必須と言える機能のベースとなってるし
0215デフォルトの名無しさん2015/01/16(金) 23:36:00.91ID:ggG599Ak
×異物
○遺物
0216デフォルトの名無しさん2015/01/17(土) 09:55:56.25ID:zXscvdzs
VSよ最初のプレビュー版はconstexprになってなかったけど
先日またプレビュー版が出たんだっけ。
インスコしてみるか
0217デフォルトの名無しさん2015/02/11(水) 22:46:08.24ID:/ZRaoi8o
C++はオワコン
0218デフォルトの名無しさん2015/02/11(水) 22:53:08.37ID:5YrTgD1Z
生ポインタが触れて、ネイティブを吐けて、GCの無い言語は他にあればな
C++を書く必要のある人間は減るだろうが、
そういった人間の使う環境の足回りはどうしたって C/C++ だぞ
0219デフォルトの名無しさん2015/02/12(木) 02:11:41.54ID:Cso7caDU
C言語との互換性がいらなきゃいくらでもあるだろうが
流石に>>218は言い訳にしか聞こえん
Rustが成熟するのを待たなくたって、最近のFortranなんか
生ポインタが触れて、ネイティブを吐けて、GC無くて
モジュールがあって、OOPLで、可変長配列あって、並列処理も超充実してるぞ
0220デフォルトの名無しさん2015/02/12(木) 08:21:16.90ID:hBWmgXOx
>>219
俺は別に他に良い言語あれば乗り換えるクチだ
Forranは流石に冗談だろうが、
Rustなら処理系自体もRustで書かれているようだし、代替にはなりうるんじゃないか?

ただ、成熟するためには、まずは大手スポンサーが付く、しかも複数付く必要がある
このご時勢だと、マルチプラットフォームに対応し、オープンソースの実装があることも必要だろう
そのレベルまで達している足回り用言語を探すと、なかなかに代替品はみつからない
0221デフォルトの名無しさん2015/02/12(木) 09:50:30.77ID:Cso7caDU
いやマジでFortranは>>218や>>220の条件を全部満たしてるぞ
Intelをはじめ複数の大手スポンサーが付いてるし、対応プラットフォームも広くてオープンソースの実装もある
古い言語だからケチはいくらでも付いてるが、悪い点をあげつらう勝負ならC++のほうがずっと酷いしな

Pascalも最近はDelphiはまるでダメだが、代わりにOxygenやNimが台頭してるし上記条件は満たすだろう
規格が無く言語仕様がメーカーごとにまちまちなのでその点はC++やFortranからはだいぶ落ちるが
そこを重視するならRustなんて使えたもんじゃない

RustやD言語をもてはやす連中は何故かこの辺の言語群をスルーするんだよなあ
0222デフォルトの名無しさん2015/02/12(木) 10:16:36.80ID:OHdOpWYk
歴史を積み重ねている分だけ現実的な問題はことごとく解決されているという安心もあるな。
まあその解決方法が綺麗なやり方とは限らないけど、現実は汚ないものなので新しい言語が頑張って解決してもやっぱりそれほど綺麗にはならないのが世の常というもので。
0223デフォルトの名無しさん2015/02/12(木) 13:26:42.76ID:vrOhEijb
end xxxって書かせるところが正気の沙汰じゃない
0224デフォルトの名無しさん2015/02/12(木) 15:40:07.09ID:w7TqvLPe
RustとかFortranとかないからw
とりあえず各アーキテクチャで動くbusybox程度のシステム実装が実用レベルになってからの話だ。
0225デフォルトの名無しさん2015/02/12(木) 17:41:21.74ID:OHdOpWYk
スーパーコンピュータ用に数値計算を並列化で頑張るなら Fortran しか選択肢がなかったりするのが実情なので C++ 処理系実装マンは頑張ってくれ。
0226デフォルトの名無しさん2015/02/12(木) 19:26:06.25ID:fhFtYAtR
Fortanの案件が年々増えてるんだよなぁ
0227デフォルトの名無しさん2015/02/12(木) 20:49:10.91ID:/UHnUpd+
本当かよ?
あんなクソ言語書く研究者とかどうかしてるわ。
0228デフォルトの名無しさん2015/02/12(木) 20:58:08.38ID:69w0QsPU
みんな Fortran 77 の範囲でしかコードを書かないから
それ以降のFortranの新機能なんて全然枯れてない可能性が高い
0229デフォルトの名無しさん2015/02/12(木) 21:57:25.92ID:kkCjf0Ug
昔、Fortran使ってた中年共は、あの糞MATLABに乗り換えているんじゃないかえ?

あと、Fortranに行主順のオプションがあるのには笑ったわ。C言語、C++に
合わせたのねw そりゃあ、列主順よりも行主順の方が自然だと思うわなw

しかし,C++も終わりだね。C++16なんて勝手にやってろ。糞どもが。

C#を発展させたらええ。C++の問題点を巧みに避けてね。もう禿の時代は終わったんだ。
あきらめろ
0230デフォルトの名無しさん2015/02/12(木) 22:49:44.88ID:1NeWkOve
ユニフォームイニシャライザーの糞仕様は直してもらわないと困る
0231デフォルトの名無しさん2015/02/13(金) 12:22:49.21ID:+PsHKEax
Fortranは全然ジャンルが違うだろw
Fortranで書いたカーネルVMとかねえだろ。
0232デフォルトの名無しさん2015/02/13(金) 12:25:55.80ID:dpVVOxpY
そんなこと今更ドヤ顔で言われてもω
0233デフォルトの名無しさん2015/02/13(金) 13:13:31.16ID:yEU7o13Z
>>227
HPCでパフォーマンスだすには配列のループアクセスしかない。
C、C++みたいに間接参照に頼りがち、エイリアス問題がでやすい言語はだめなんよ。
オブジェクト志向も論外。
ランダムアクセスでペナルティの少ないメモリシステムが出来ない限り
数値解析でFORTRANの地位は揺るがない。
0234デフォルトの名無しさん2015/02/13(金) 14:56:38.50ID:O4tzh+w4
>>231
探せばあるだろ、相当古い物に限られるだろうけど
なんせFortranは唯一の高級言語だった時期が結構長い
0235デフォルトの名無しさん2015/02/13(金) 15:25:45.23ID:gZGS2CAM
>>233
いつの話だよ。
最近のスパコンはほとんどFortran、C、C++のコンパイラはフロントエンド以外は共通だし、
その他ミドルウェアだって、例えばOpenMPのコンパイラやライブラリ、C/C++で書かれてるだろ。
0236デフォルトの名無しさん2015/02/13(金) 15:27:49.52ID:gZGS2CAM
技術的にはFortranの優位性は枯れたライブラリと枯れたプログラマの既存リソースくらい。
0237デフォルトの名無しさん2015/02/13(金) 15:36:50.43ID:O4tzh+w4
>>235
そうでもない
コンパイラが最適化のために仮定できることに差があるからな
勿論バックエンドが同じだから同じコードを吐かせることもできるが、拡張キーワード付けまくりーのオプション付けまくりーのになる
0238デフォルトの名無しさん2015/02/13(金) 15:48:43.47ID:O4tzh+w4
あと、C/C++が長年入れよう入れようとして今だ実現してないモジュールやら実行時にサイズの決まるオブジェクトやらもサクッと入ってるぞ
並列化もOpenMPの反省を踏まえてco-arrayにシフトしてきてるしな
0239デフォルトの名無しさん2015/02/13(金) 15:52:19.29ID:kSt7Ebtt
スパコンなんて言語仕様より処理系実装でしょう?
貧民数値計算には言語仕様も重要だと思うが。
0240デフォルトの名無しさん2015/02/13(金) 17:23:50.08ID:gRsKeB2m
科学技術計算でFortranが最強なのは今更語るまでもないが、
C/C++の代替を目指すD/Rustの代わりにFortranとか言われても笑うしかない。
0241デフォルトの名無しさん2015/02/13(金) 17:25:15.80ID:GLFZ3lKo
template というか汎用型もあるの?
それない言語はつまんない
0242デフォルトの名無しさん2015/02/13(金) 17:40:32.87ID:WPBSIOvr
>>233
>HPCでパフォーマンスだすには配列のループアクセスしかない。
C/C++でHPCやる場合は(素人プログラマ以外は)コンパイラにベクトル化させるんじゃなくて
最適化されたベクトル/行列演算ライブラリを直接使うんだよ
0243デフォルトの名無しさん2015/02/13(金) 17:46:44.32ID:WPBSIOvr
付け加えると、インテル製などの一部のC/C++コンパイラは配列のループアクセスをベクトル化
できるが、OpenMPを含め、そういうのはプログラマとしては素人な数学屋さんとか
物理屋さん向けのもの
0244デフォルトの名無しさん2015/02/13(金) 17:52:50.31ID:qJaCJPEr
大勢に影響はない
0245デフォルトの名無しさん2015/02/13(金) 17:59:40.77ID:yEU7o13Z
>>242
それこそ素人じゃん。
0246デフォルトの名無しさん2015/02/13(金) 18:11:21.96ID:yEU7o13Z
>>235
言語仕様としてaliasをみとめてて、restrictもないC++がバックエンドが同じであろうが最適化阻害してるの当たり前だろうが。
0247デフォルトの名無しさん2015/02/13(金) 19:44:33.65ID:nAr45dUn
FORTRANと言えばcommonとequivalenceを思い出す。
0248デフォルトの名無しさん2015/02/13(金) 21:28:07.17ID:wdSxf+0q
専用スレで外の言語の話始める人って、大抵なんか重箱の隅をつつくような事例を上げて優位性を主張するよね
0249デフォルトの名無しさん2015/02/13(金) 22:07:44.06ID:1kPxT1Pp
なんでC++にはrestrictが無いの?禿が馬鹿だから?
0250デフォルトの名無しさん2015/02/13(金) 23:23:44.12ID:yZ9EvJNI
fortranの特徴ってユーザが他スレで喚くとこなのん
0251デフォルトの名無しさん2015/02/13(金) 23:39:20.41ID:O4tzh+w4
そもそも、C/C++の用途で使える言語はC/C++だけではない、という話なんだが……
Fortranは77のイメージしか持ってない奴多過ぎて、話も最適化の方面にしか行かんな
0252デフォルトの名無しさん2015/02/14(土) 00:06:03.44ID:4tVx2rNF
Fortran製の、他の言語から使える汎用ライブラリを見せてくれたら信じるわ。
0253デフォルトの名無しさん2015/02/14(土) 06:39:08.56ID:Tkxk4fdM
>>252
BLASとかLAPACKとか良くCのアプリからも使われてるの知らんか?これも計算用だけど
0254デフォルトの名無しさん2015/02/14(土) 07:07:35.83ID:6cAGLKLO
計算機以外はねーのかよ
0255デフォルトの名無しさん2015/02/14(土) 08:52:31.27ID:4tVx2rNF
計算用以外でたのむ。 それでやっとDSLでは無いと認められる。
0256デフォルトの名無しさん2015/02/14(土) 10:23:07.10ID:jdFzeg2B
認められなくても何の問題もないが
0257デフォルトの名無しさん2015/02/14(土) 10:33:53.37ID:KJLqYxlY
A: FortranがC/C++の用途で使えるってことを認めろよ
B: ホントかよ。マジなら数値計算以外でマトモなライブラリあるだろ?あんの?
A: 無いよ
B: じゃあやっぱりDSLじゃねーか。C/C++の代わりとしては認められねーな
A: 認められなくても何の問題も無い
0258デフォルトの名無しさん2015/02/14(土) 10:35:40.49ID:Coc8XA/t
やっぱり認められなくてもいいです。
お時間を取らせてしまって申し訳有りませんでした。
でもボクにとってはFortranは人生です
0259デフォルトの名無しさん2015/02/14(土) 11:10:26.04ID:Ffdv9gIp
そうですか
ここはC++のスレですのでくだすれFortranのスレに移動をお願いします
0260デフォルトの名無しさん2015/02/14(土) 18:46:45.09ID:sFHU6bVn
時間を取ったのはどうでもいい
でもC++専用スレで他言語が人生とか語られても片腹痛い
0261デフォルトの名無しさん2015/02/14(土) 19:16:58.38ID:hv/hxM1q
restrictってC99のrestrictのこと?
あんな予約語時代遅れでしょ
restrict修飾なくても同様の最適化は自動で可能
0262デフォルトの名無しさん2015/02/14(土) 19:44:53.46ID:X7Vdi7/j
インラインなら最適化できるかもしれないけど、関数の引数とかだと無理じゃね? 呼び出し側がどんなアドレス渡してくるかなんて分かんないし
0263デフォルトの名無しさん2015/02/14(土) 19:57:58.87ID:0HcNv3Vt
今時リンク時最適化が普通じゃね?
0264デフォルトの名無しさん2015/02/14(土) 20:00:30.71ID:c5GE7VHu
共有ライブラリもリンク時最適化できるの?
0265デフォルトの名無しさん2015/02/14(土) 21:00:12.31ID:+Y8SOq6f
>restrict修飾なくても同様の最適化は自動で可能

明らかに不可能なことを
もっともらしい用語を並べて
スレを荒らすな
0266デフォルトの名無しさん2015/02/14(土) 21:11:08.48ID:vNjYGoXz
>>262
最近は LTO という仕組みがあるんやで。
リンカが中間構文木をコンパイラに戻してあらためて最適化したりする。
渡されるポインタ (配列) の範囲がかぶるかどうか看破することは可能。
0267デフォルトの名無しさん2015/02/14(土) 21:13:51.65ID:KJLqYxlY
マジで同様の最適化が可能なら
停止判定問題も解けるぞ
新事実だな頑張れ
0268デフォルトの名無しさん2015/02/15(日) 01:22:06.02ID:UOWPKbNm
>>267
頭悪
最適化のことを最適解を見つけ出すと勘違いしてる阿呆並。
0269デフォルトの名無しさん2015/02/15(日) 01:31:58.99ID:pg1XKTVq
反論できないからってレッテルはって逃げようとするの良く無い
実際、主要なC++コンパイラに__restrict__拡張があるくらい有効
0270デフォルトの名無しさん2015/02/15(日) 08:52:17.00ID:PHrUZGDg
restrictを使わないと最適化できないコードは確かに存在する。
同時にrestrict修飾を行わなくとも自動で最適化できるコードも存在する。
安易なrestrict修飾はわかりにくいバグを埋め込む原因にもなる場合があるし、
手動でrestrictしなければ最適化できないコードは書くべきではない。
inline修飾並に時代遅れだし、inline修飾以上に害悪。
0271デフォルトの名無しさん2015/02/15(日) 08:59:29.60ID:PHrUZGDg
>>267
最適化は常にプログラムの動作を全て最適なものにする処理ではない。
効用の増加に伴い準指数時間超で解析に掛かる時間が増えていくので通常は途中で打ち切る。
restrictに関わらず、最適化の余地を残さず処理を施すのであれば、それはどれも停止判定問題に属する。
0272デフォルトの名無しさん2015/02/15(日) 09:02:13.84ID:PHrUZGDg
>>269
__restrict__拡張の目的はコンパイラの判定に関わらずメモリの重複がないとプログラマが強制的に宣言するもの。
その需要はforce inlineの位置に近い。
0273デフォルトの名無しさん2015/02/15(日) 09:05:05.63ID:PHrUZGDg
死ね
0274デフォルトの名無しさん2015/02/15(日) 09:14:35.52ID:vlkDTTJ8
バカほど長文を好むな
 デメリット→わかりにくいバグを埋め込む
 メリット→都合が悪いので触れず。時代遅れでごまかす
これがrestrict否定派の主張のすべて
0275デフォルトの名無しさん2015/02/15(日) 09:17:24.08ID:PHrUZGDg
自分で調べろカス
0276デフォルトの名無しさん2015/02/15(日) 09:36:30.07ID:k13A89i2
てか、現実的にはc++でrestrict使えないから最適化に不利云々って話は存在しない。

環境依存とはいっても、実在のコンパイラはほぼ間違いなく対応しているから移植性の問題もないし、例え対応していない環境でも遅くなるだけでdefine一つでなかったことにできる。
それが有効な場面でrestrictを知っていて書かないとかないし、ライブラリ側がそうなっていれば使う側は無意識に恩恵にあずかることが可能
0277デフォルトの名無しさん2015/02/15(日) 09:46:56.34ID:Mzsi91Ys
>環境依存とはいっても、実在のコンパイラはほぼ間違いなく対応しているから移植性の問題もない
だからさっさと標準化しろって話なんだけど?
0278デフォルトの名無しさん2015/02/15(日) 12:49:01.38ID:0lwrVYis
volatileは標準化するくせにrestrictを拒否する謎
0279デフォルトの名無しさん2015/02/15(日) 12:56:05.36ID:k+aSZwci
標準化委員会は適当だからな。
昔入ったものはともかく新しいものを無駄に嫌う。
alignasとか糞キーワード増やしてないで[[restrict]]入れとけっての
0280デフォルトの名無しさん2015/02/15(日) 17:03:20.38ID:lDLakZlT
>>266
共有ライブラリもリンク時最適化できるの?
0281デフォルトの名無しさん2015/02/15(日) 17:12:19.38ID:m7R4D9qI
昨日の恥ずかしい奴が発狂して帰ってきててウケる>ID:PHrUZGDg
0282デフォルトの名無しさん2015/02/16(月) 12:58:07.83ID:3pQJG7SS
restrictはプログラマ側に正常動作の責任をおっかぶせ過ぎではある。
alias出来ないポインタとか新しい概念でコンパイラ側が頑張る仕様にしないと。
0283デフォルトの名無しさん2015/02/16(月) 14:22:43.29ID:Uy9DHC+A
> alias出来ないポインタ

それがrestrict修飾されたポインタなのでは?

C++のobjectに対するrestrictの意味を考えるのは、労ある割には益が少ない。
けどないと、Cのライブラリを呼び出す時は不便だよな。
extern "C" の時だけ使えれば十分では?
0284デフォルトの名無しさん2015/02/16(月) 14:59:40.87ID:3pQJG7SS
>>283
違う。
restrictはプログラマ側にエイリアスないつもりでいくから、ちゃんとしとけよという
プログラマ側への強制だったりする。
一方、コンパイラとしては、restrictはアグレッシブな最適化をしてもよいという許可であって
最適化しないでするーしてもいい。
0285デフォルトの名無しさん2015/02/16(月) 15:11:47.88ID:yzFhOePD
restrictポインタの意味がイマイチよくわからないんだよなぁ
memcpyとmemmoveの違いを例で目にするが、restrictされるのはポインタが指す領域なのか?
指す領域のバイト数が第3引数というのはどこから読み取ればいいんだ?
たまたまmemcpyだから第3引数はバイト数だと知っているが、
他の名前の関数で、例えば第3引数の2倍のバイト数が領域の場合はどう表現するんだ?

MicrosoftのSAL拡張ほどの表現力があれば、まだ動作のイメージはできるんだが……
0286デフォルトの名無しさん2015/02/16(月) 15:43:32.79ID:eXIsD5sf
C++にはテンプレートがあるから
restrictなんて仕組みが必要なかったんじゃないか?
0287デフォルトの名無しさん2015/02/16(月) 15:55:45.78ID:iU8n1Okp
禿がいってるように、便利でもややこしい仕様は使わない。結局、
トラブルの元になって使い物にならない。

どうでもいい細かい仕様を得意げに書いてる馬鹿がいるが、こいつらは
上司からも部下からも馬鹿にされていることに気づいていない
0288デフォルトの名無しさん2015/02/16(月) 18:44:41.92ID:wAVd4uvS
>>285
restrict ポインターの指す領域や
restrictポインターに加減算して得られたアドレスの領域が
他の引数由来の領域とかぶらないってだけじゃないの
明確じゃないか
0289デフォルトの名無しさん2015/02/16(月) 19:18:57.00ID:yzFhOePD
>>288
そういう、ふんわりとした意図はわかるんだけど、
char mem[30];
memcpy(mem, mem + 10, 10); // ← OK
memcpy(mem, mem + 10, 20); // ← NG
なわけでしょ? 第3引数で意味が変わるから、専用の型を持てず、コンパイルエラーも出せないんじゃないの?

memcpyの提供側は、restrictの有無に関わらず被らない前提で実装するだろうし、
memcpyを使う側は、restrictがあるからといって使い方のミスをコンパイラに教えてもらえる保証がない。
ドキュメントやコメントに「被らせるなよ」と記す以上の効果を提供できるんだろうか?
0290デフォルトの名無しさん2015/02/16(月) 19:49:09.76ID:9v9OeP8e
・被らせちゃいけないことをドキュメントやコメントに書かなくても表現できる
(ただし被らせてもエラーになるわけではない)
・被ってないこと前提の最適化をコンパイラが出来るようになる
ということ
0291デフォルトの名無しさん2015/02/16(月) 20:31:52.18ID:JjLEtIMd
registerみたいなもんで、コンパイラはやってもやらなくても良い。
ただし、プログラマ側にはエイリアスがないことを保障する義務がある。
めんどうくさいだけで効果があるかどうかわからないという。
やっぱ言語仕様としてfortranのようにポインタではない配列がないと。
複素数も言語仕様レベルで欲しい。
0292デフォルトの名無しさん2015/02/16(月) 20:38:46.89ID:0bcBlPt4
またfortran君か
0293デフォルトの名無しさん2015/02/16(月) 20:44:32.41ID:T5MheqpD
>>291
そんな面倒くさく無い上に効果はあるんですけどね
0294デフォルトの名無しさん2015/02/16(月) 20:53:08.48ID:yzFhOePD
>>288
もう一度読み直したら、自分が誤解してた。

その処理内で触る、あるrestrictポインタからの連続した領域と、
他のrestrictポインタからの連続した領域に重なりが無い、と解釈すれば、
実際のサイズが明記されていなくても最適化には役立つんだね。

コンパイラがどうやってメモリ領域のサイズをチェックするのかばかり考えてた。 すまぬ。
0295デフォルトの名無しさん2015/02/16(月) 21:38:08.15ID:JjLEtIMd
>>292
そもそも、今時fortranとか言い出したアホが悪い。
使われるには理由がある。
C++はC++らしく使おうとしたら間接参照の嵐になるし、
fortranぽく使おうと思ってもエイリアス問題が出る。
HPC用にはfortranでいいわけで、今時とかそういう話をしてもしゃーないと。
そんだけ。
0296デフォルトの名無しさん2015/02/16(月) 21:54:17.59ID:H27f7K4Z
名前を言ってはいけないあの言語か何か
0297デフォルトの名無しさん2015/02/16(月) 21:57:55.86ID:sA+mR1Lp
FORTRANにはCOMMONとEQUIVALENCEが… は、置いといて…

C、そしてC++も配列型はポインタへ自動変換されるだけで別の型なんだけどな。
関数の引数としても渡せるし。ただし問題はそこではない。
ところでFORTRANは配列は値渡しなの?
そうじゃなきゃC++とエイリアスの問題は同じじゃん。
0298デフォルトの名無しさん2015/02/16(月) 22:20:05.31ID:8eApH2Qw
>>297
>関数の引数としても渡せるし
ここだけは違う。引数リスト中で配列のように書いてもポインタになる。
0299デフォルトの名無しさん2015/02/16(月) 22:24:48.99ID:0bcBlPt4
CはそうだけどC++なら配列の参照を渡せる
0300デフォルトの名無しさん2015/02/16(月) 22:37:31.33ID:L2tliPgO
>>299

すみません。よーく読んでみると、意味がわかりません。
配列名を定数ポインタとして使えば良いじゃん。

それとも、テンプレート関係で配列の参照が要るのかよ。めんどくさい言語だよ。
もう、C#とか次世代の言語に任せろよ。MFCくらいに面倒なんだよ。
0301デフォルトの名無しさん2015/02/16(月) 22:40:04.07ID:L2tliPgO
そろそろ、息の根を止めるべき言語だと思うけど。

禿もいつ死んでもおかしくない歳だし
0302デフォルトの名無しさん2015/02/16(月) 22:43:23.90ID:l2mG8606
>>301
なんでこんな所いんの?
0303デフォルトの名無しさん2015/02/16(月) 22:43:48.20ID:0bcBlPt4
そう思うならC#のスレに逝けばいいと思うよ
0304デフォルトの名無しさん2015/02/16(月) 22:46:52.78ID:sA+mR1Lp
確かに1次元目はポインタになるな。なんてこったい。
まあでもエイリアスには影響しないよね。
配列の参照渡しも、配列またはスカラーへのポインタだった変数が関数内で変更できても変わらない。
0305デフォルトの名無しさん2015/02/16(月) 22:48:14.13ID:l2mG8606
配列名を定数ポインタってなに?FORTRAN語?
0306デフォルトの名無しさん2015/02/16(月) 22:57:24.19ID:9v9OeP8e
>>295
一部の分野で今でもFORTRANが使われてる理由はそんなことじゃないと思うがね
そういう分野では歴史的にFORTRANに慣れてる人や既存のコードが多いからというだけだろ

FORTRANだってHPCするときはスピードネックになるところではBLAS/LAPACKを呼び出すわけだろ?
んでBLAS/LAPACKの高速な実装はCやアセンブラで書かれてるわけだ
0307デフォルトの名無しさん2015/02/16(月) 23:01:55.79ID:l2mG8606
C言語もFORTRANもスレ違いなんですが
0308デフォルトの名無しさん2015/02/16(月) 23:04:53.44ID:8eApH2Qw
>>306
LAPACKはFortran製だって上にあるじゃんよ
0309デフォルトの名無しさん2015/02/16(月) 23:06:03.73ID:L2tliPgO
大学の爺はFORTRANなんて使わないよ。MATLABを使うんだよ。
Mathematicaも使いこなせないw
0310デフォルトの名無しさん2015/02/16(月) 23:06:23.67ID:VIjVttWA
>>308-309 荒らすなボケ
0311デフォルトの名無しさん2015/02/16(月) 23:09:06.67ID:L2tliPgO
>>305

わかった。わかった。馬鹿は黙ってろ
0312デフォルトの名無しさん2015/02/16(月) 23:13:22.46ID:9v9OeP8e
>>308
もとの実装はね
でも高速化された実装、例えばGotoBLASとかはコア部分はアセンブラで最適化されてる
0313デフォルトの名無しさん2015/02/16(月) 23:27:40.46ID:l2mG8606
誰か配列名を定数ポインタってなんなのか教えてよ
配列の参照渡せることも、それのメリットも知ってるけどC言語に同等のものがあるなんて知らなかったよ
0314デフォルトの名無しさん2015/02/16(月) 23:27:55.96ID:9v9OeP8e
ちなみにC++向けの行列演算ライブラリとして評判が良いEigenのベンチマーク
http://eigen.tuxfamily.org/index.php?title=Benchmark
高速化されていないBLASより遥かに速いし、Intelプロセッサ向けに最適化された
商用のMKLやGotoBLAS2に迫るパフォーマンスを出している
これはFORTRANのコンパイラによる最適化の無力さを表していると思う
0315デフォルトの名無しさん2015/02/16(月) 23:30:59.52ID:0bcBlPt4
>>313
配列名の識別子は配列の先頭アドレスを表すことを言いたいんじゃないかな。そもそもC++でいう参照が何か全く理解しないで批判しているものと思われる
0316デフォルトの名無しさん2015/02/16(月) 23:37:30.57ID:JjLEtIMd
>>306
原理上行列演算に落とせるからといって、
数値計算で行列演算に落としてBLASまかせにするのがいいとは限らない
0317デフォルトの名無しさん2015/02/16(月) 23:38:07.00ID:s0ySUBJd
>>315
いやいや、そんな人間がこんな所に来るわけないじゃないか。
0318デフォルトの名無しさん2015/02/16(月) 23:41:13.75ID:0bcBlPt4
それもそうだな。俺が馬鹿だった。いくらなんでも配列の参照が何か分からない人間が他の言語とC++を比較して批判なんてできるわけないよな
0319デフォルトの名無しさん2015/02/17(火) 00:01:08.91ID:R49GSZUF
Eigenとやらを覗いてみたら、案の定__restrictが使われてるわけだが
やっぱりさっさと入れろよこれ……
0320デフォルトの名無しさん2015/02/17(火) 00:09:47.62ID:pCoLYmoP
当然のことながら、ループ間で依存関係がないと保障されない限り
ベクトル化やSIMD化してくれんしな。
とはいえ、restrictやコンパイラ独自pragma持ってても、
コンパイラ様のお気に召すソースの書き方しないと並列化してくれないんだよね。
0321デフォルトの名無しさん2015/02/17(火) 00:41:43.25ID:PFysqCso
>>319
EIGEN_RESTRICTの#defineを見てもコンパイルオプションでEIGEN_DONT_USE_RESTRICT_KEYWORD
が定義されない限り__restrict使うようになってるからね
誰かも言ってたけど実質的にメジャーなコンパイラでは__restrictはサポートされてると思って良いということだろ
0322デフォルトの名無しさん2015/02/17(火) 00:52:11.85ID:T1al5/bY
何もしてないってわけじゃないみたいだけど、何で話が止まってるのかよくわからない。
N3988 (2014-05-23): Towards restrict-like aliasing semantics for C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3988.pdf
0323デフォルトの名無しさん2015/02/17(火) 00:59:35.61ID:5Y72KlE+
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4150.pdf
0324デフォルトの名無しさん2015/02/17(火) 22:47:56.75ID:17lLv4ax
>>318

なんだ機能かよw 配列の個数のチェックができるのが利点?呪文みたいな
コード書いて職場で得意になってるんだろ? 馬鹿が。

それともテンプレートテクニックで使うというのかい?

まったく、くだらん機能だ。おタクの糞だけ使ってろ
0325デフォルトの名無しさん2015/02/17(火) 22:49:52.40ID:17lLv4ax
なんだ機能かよw→なんだこんな糞機能かよ
0326デフォルトの名無しさん2015/02/17(火) 22:59:44.50ID:+XI3A1OA
配列の参照はC++にしか無いが配列のポインターはCにもある。
本質的には参照と何も変わらない
int a[10];
int (*a)[10] = &a;
(*a)[0] = 0;
0327デフォルトの名無しさん2015/02/17(火) 23:00:25.01ID:+XI3A1OA
↑ちょっと間違えた。
int a[10];
int (*pa)[10] = &a;
(*pa)[0] = 0;
0328デフォルトの名無しさん2015/02/18(水) 00:38:15.47ID:c/tcZvht
配列の個数をチェック出来るだけのコードが呪文みたいってどんだけー
0329デフォルトの名無しさん2015/02/18(水) 08:11:21.33ID:04Uy6nsI
配列が絡んだ変数宣言の気持ち悪さはどうしようもないな
using を使えば多少マシになるか?
0330デフォルトの名無しさん2015/02/19(木) 14:18:34.76ID:Nf1QZOin
>>322
Cと同じの入れてもC++的にはいまいちだから。
0331デフォルトの名無しさん2015/02/19(木) 19:42:53.69ID:Qw0v9eHu
C++標準としてSTL押しなわけじゃん。
コンテナ操作にrestrictをどう取り込むかとか難しいわな。
最適化の努力目標であって確約じゃないrestrictのために
restrict_vectorとか作ってもなぁ。
0332デフォルトの名無しさん2015/02/19(木) 19:43:30.70ID:4dC5fmDk
???
0333デフォルトの名無しさん2015/02/19(木) 20:01:43.05ID:7oFSdK4O
restrictは型にするのか?とか暗黙でrestrictへ変換できていいの?それってC++の思想とちがくね?とか、型だったらrestrictあり版無し版でオーバーロード出来るの?とか
色々決めなきゃいけないことがある訳ですよ
0334デフォルトの名無しさん2015/02/19(木) 20:04:02.20ID:MJrK0vGE
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修飾として導入できない
0335デフォルトの名無しさん2015/02/19(木) 20:40:58.69ID:TS7jO9Iz
つまり速度的な観点から言って
C++はCよりウンコってことだね
0336デフォルトの名無しさん2015/02/19(木) 20:43:12.50ID:MJrK0vGE
そうだね、C使ってなさい
0337デフォルトの名無しさん2015/02/19(木) 20:55:46.40ID:YKDWyqEz
restrictポインタは std::unique_ptr と意味的に似ている面もあるけど、扱いが面倒だな。
C++だと用途的には std::valarray もあるし、特定のクラスを特別扱いするような方向で取り込んで欲しい気もする。
0338デフォルトの名無しさん2015/02/19(木) 21:54:56.98ID:bIU6Qc54
Cのマネして形の一部にすると発狂必死
C++には属性が有るんだから
restrictはattribute指定子 一択だろ
char * declarator-id [[restrict]]
0339デフォルトの名無しさん2015/02/19(木) 22:01:58.07ID:Qw0v9eHu
unique_ptrが言語レベルでの型ならともかく、
unique_ptrに食わした生ポを他が握ってててもいいわけで
やったら死にそうだけど。
0340デフォルトの名無しさん2015/02/19(木) 22:05:37.58ID:OBGtJlAr
>>331
なんで標準規格の話にSTLみたいな
廃れた過去のものが出てくるのですか?
0341デフォルトの名無しさん2015/02/19(木) 22:16:30.20ID:MJrK0vGE
標準規格はコア言語機能とSTLの二本から成り立ってるんですが
0342デフォルトの名無しさん2015/02/19(木) 22:29:06.06ID:7oFSdK4O
>>323
に書いてるけど最近はalias_set()っていうattributeにする提案が挙がってる。
流し読みしてみたけどタグとかよくわからんかった
0343デフォルトの名無しさん2015/02/19(木) 22:54:04.76ID:Qw0v9eHu
>>340
ええええええ
廃れてるのかよ。
moveとかunordered_mapとかc++11で入ってきたのに?!
0344デフォルトの名無しさん2015/02/19(木) 23:34:23.07ID:3CBExIvY
>>341
荒らすなボケ
お前みたいな低脳発言する奴がいるから
STLの定義のコンセンサスがどうとか言いだす奴が出てくる
0345デフォルトの名無しさん2015/02/20(金) 12:03:03.78ID:b77POhTv
B. Stroustrup and A. Sutton
A Concept Design for the STL
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3351.pdf
0346デフォルトの名無しさん2015/02/20(金) 15:25:12.54ID:8Is4JBs/
ISO/IEC 14882:2014にSTLなどという用語は出てこないのに
URL貼るだけの低脳はどうしようもないな
0347デフォルトの名無しさん2015/02/20(金) 22:20:22.64ID:zOUglcHa
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。
意味もなく文頭に付けておくのがトレンド👀
0348デフォルトの名無しさん2015/02/21(土) 06:20:28.27ID:FlDtTMp/
少なくともstringとiostreamはSTLではない
0349デフォルトの名無しさん2015/02/21(土) 06:50:30.28ID:E5FitgPs
標準(standard)のtemplateのlibraryだからな。
日本語で書かれたら何らかの特別なものって扱いも出来るだろうが、原文だと混乱するのは当たり前
0350デフォルトの名無しさん2015/02/21(土) 07:20:13.17ID:5TYZO6lJ
テンプレートでも何でもないstd::exceptionとかも
STLだと考えてる人も多いようだが
0351デフォルトの名無しさん2015/02/21(土) 07:38:41.63ID:naHue2Us
>少なくともstringとiostreamはSTLではない

これは確かにそうだけど
STL版のiostreamも存在するよね
すごく紛らわしい
0352デフォルトの名無しさん2015/02/21(土) 08:00:30.33ID:78/Ireu0
std::stringもstd::iostreamもテンプレート使われてるのに?

正直どっちでもいいし、個人的には標準ライブラリとか標準コンテナと呼ぶけど、拘る人の執着っぷりは尋常じゃないのを感じるよね。
広島風お好み焼きを広島焼きいうなっていう広島人と、大阪風お好み焼きのみが唯一無二のお好み焼きだっていう大阪人みたいな。
0353デフォルトの名無しさん2015/02/21(土) 10:23:37.87ID:hSp51/ZE
C++の標準はお好み焼きだったんだ
0354デフォルトの名無しさん2015/02/21(土) 10:44:41.39ID:b3TAXLfH
テンプレートとSTLってどっちが先にできたの?
もちろんテンプレートが無ければSTLは書けないとは思うけど、
STLができるまでテンプレートの存在意義が無かったような?
string も iostream も大昔は非テンプレートだったはずだし
0355デフォルトの名無しさん2015/02/21(土) 10:50:26.23ID:U+VRYI5S
えっω
0356デフォルトの名無しさん2015/02/21(土) 10:50:33.86ID:4hTepQjD
>>352
国際規格ってのはそういう異論だらけの主張の間に一応形成された合意だよ
むしろ技術者が不正確な用語であるSTLを使う方が不思議
>>354
テンプレートが先でしょ
stringがテンプレートじゃなかったってホント?
0357デフォルトの名無しさん2015/02/21(土) 10:56:46.75ID:4hTepQjD
>iostreamもテンプレート使われてるのに?
こういうレスを見ると
コピペもあながち間違いじゃないとは思うわ
『話し手双方の認識がずれているのに
不思議と会話できてしまった気分にさせてしまう魔法の言葉STL』
0358デフォルトの名無しさん2015/02/21(土) 12:10:24.03ID:5NiNn0Ae
技術文書を読む際にある表現が
用語(term)かどうか見分けられない奴は
プログラミングをやめた方がいい
あとURL貼るだけの低脳も
0359デフォルトの名無しさん2015/02/21(土) 12:31:39.53ID:d5O+uncj
死ね
0360デフォルトの名無しさん2015/02/21(土) 12:34:39.18ID:Qj5PkULS
たしかにMSDNの自動翻訳は糞すぎる
0361デフォルトの名無しさん2015/02/21(土) 14:49:14.01ID:78/Ireu0
>>358
標準化WGですらSTLって言葉使ってるのにここでSTLって言葉出しただけでそんな言葉はC++にないって噛みつくやつもどうかと思うけど
”こいつはC++の規格で定められた用語だと思ってSTLって言葉を使ってる”というのを見分けれる力を持ってんの?
0362デフォルトの名無しさん2015/02/21(土) 15:10:08.37ID:qawIJ4u+
初期のテンプレートとSTLとともに整えられたテンプレートはほぼ別物じゃね
0363デフォルトの名無しさん2015/02/21(土) 15:23:20.38ID:s76k4WVR
反面教師だな。どうでいいことに時間かけるのやめね
どうしても必要なら明確に定義して
0364デフォルトの名無しさん2015/02/21(土) 16:07:45.35ID:FlDtTMp/
>>363
昔あった"STL"に含まれていたコンテナ・イテレータ・アルゴリズム・ファンクタ
の4つに該当するものを今でもSTLと呼ぶ人が多い
std::stringは含まれない
ただ初心者は、テンプレートは全部STLとかライブラリは全てSTL
と思っている
定義は無い
0365デフォルトの名無しさん2015/02/21(土) 16:43:47.66ID:78/Ireu0
定義とかどうでもよくね?
大抵は文脈でアレの事言ってんだろうなって解るだろ
0366デフォルトの名無しさん2015/02/21(土) 17:22:04.77ID:zlhhs5UV
みんなそんなことわかってるのに
ごちゃごちゃ言うやつがいるんだよな
AA板でアスキーアートなんて用語使うなって言ってたキチガイと同じだわ
0367デフォルトの名無しさん2015/02/21(土) 17:37:21.05ID:oGsLucOX
直近のレスを少し読んでもSTLの認識が違っているというのに
事実すら認めなれない低脳はどうしようもないなヤレヤレ
0368デフォルトの名無しさん2015/02/21(土) 17:39:59.17ID:Qj5PkULS
全部iostreamのせいだ
0369デフォルトの名無しさん2015/02/21(土) 18:01:31.11ID:78/Ireu0
>>367
だからお前の中のSTLの定義とか認識とかどうでもいいんだよ
0370デフォルトの名無しさん2015/02/21(土) 18:10:49.86ID:FlDtTMp/
ここはキチガイの多いインターネットですね
STLを化石と連呼する奴もキチガイ
認識の違いを見ても都合の悪いことはスルーして"わかるだろ"を連呼する奴もキチガイ
0371デフォルトの名無しさん2015/02/21(土) 18:23:51.19ID:78/Ireu0
>>370
都合の悪いってどれだよ。
お前の中では一度が連呼になんの?
日本語通じない人と同じ認識持てるとは思えないわ。
0372デフォルトの名無しさん2015/02/21(土) 18:40:08.39ID:NoRQyCne
最初にステパノフのSTL見たときはそりゃ衝撃的だった
0373デフォルトの名無しさん2015/02/21(土) 20:15:34.02ID:vFgxohPd
>>372
そういう人が、ここにいるんでしょう。
0374デフォルトの名無しさん2015/02/22(日) 00:45:01.58ID:sAwrKU4y
お前が標準ライブラリと呼びたければそれでいい。昔の通りSTLと読みたければ
それでいい。どうでもいいことだろが。

それをゴチャゴチャぬかしやがって、お前らは額に「馬鹿」の字をかいたパリサイ人か!
イスラム国で首切られて来い
0375デフォルトの名無しさん2015/02/22(日) 05:16:49.04ID:x6orKTOm
STLはもともと固有名詞だから用語の正確さで因縁つけられてんだろ。
オペレーティングシステムをOSと呼んでいいかみたいなもので
公式の文書では避けなければならない言葉。
どうでもいいかと言ったらどうでも良くはない
0376デフォルトの名無しさん2015/02/22(日) 05:44:22.81ID:sOGNk0U/
>>375
何の話?
Bjarne StroustrupがC++WGの論文でSTLって言葉を使ったことの批判?
0377デフォルトの名無しさん2015/02/22(日) 06:25:19.07ID:Il9QBtRY
誰かこの糞談義を止めて欲しい
いつまで続くんだ
0378デフォルトの名無しさん2015/02/22(日) 10:05:00.26ID:tyley4te
で、restrictの話しはどうなったの?
0379デフォルトの名無しさん2015/02/22(日) 11:13:46.42ID:0JOE1lwg
どうでもいいわ。
そこのホッチキスとマジック取って
0380デフォルトの名無しさん2015/02/22(日) 12:15:10.87ID:rIRRZTlZ
そこはフロッピーを宅急便で支社に送ってと言うべきだった
0381デフォルトの名無しさん2015/02/22(日) 12:19:52.26ID:0JOE1lwg
>>377
実のある議論ができない奴ほど形式論を語るしかないのさ。
0382デフォルトの名無しさん2015/02/22(日) 12:23:34.85ID:VRC+VXQD
「はなししってなんですか」と言ってた奴のことですね
0383デフォルトの名無しさん2015/02/22(日) 12:37:52.29ID:TRUNFqhM
あれはあぶり出しとしては秀逸な論法、実によく効く
0384デフォルトの名無しさん2015/02/22(日) 12:50:30.37ID:I1ETafX4
マジックは意図が明確だけど
STLは>>352のように範囲の認識が違う人がいるから粘着が湧く
0385デフォルトの名無しさん2015/02/22(日) 13:47:16.48ID:sOGNk0U/
>>384
粘着するやつは範囲の問題じゃなく現代のC++にSTLなんて存在しないって主張だから
0386デフォルトの名無しさん2015/02/22(日) 14:26:18.14ID:mDB3/i8f
STLの開発は止まってるし
https://www.sgi.com/tech/stl/
ISO/IEC 14882:2014にSTLなんてものが出てこないのは事実ですよ。
事実を認識したり論理的な思考をする能力の低い人は
プログラミングに携わるべきではないですね。
0387デフォルトの名無しさん2015/02/22(日) 14:32:04.10ID:DVQv7PP4
もうSTLはどうでもいいから1zとかTSとかの話しろよ
0388デフォルトの名無しさん2015/02/22(日) 14:32:28.03ID:33oFsXpr
>>385
マ、マジックテープは、宇宙でも使えるから
0389デフォルトの名無しさん2015/02/22(日) 14:37:59.90ID:J+2bP69K
よしバイナリフォールド式について話しをしようか
auto f(param_types &&... params) {
 return 0 + ... + std::forward<param_types>(params);
}
C++11/14のパック展開が使い物にならない糞なのでようやくマトモになった感じ?
0390デフォルトの名無しさん2015/02/22(日) 15:16:06.21ID:oKNrTzen
たしかにC#のことを「あれはJ++だ」と言って執拗に絡んでくるひとがいたらキモい
0391デフォルトの名無しさん2015/02/22(日) 15:23:15.40ID:+WCHq4X5
>>389
... が万能すぎて怖いくらい。 この手の書き方って他の言語で先行例ってあるの?
C++ に似つかわしくないほどやわめな構文で驚いた。
0392デフォルトの名無しさん2015/02/22(日) 15:54:03.58ID:DVQv7PP4
std::forward<param_types>(params);

これわざわざコピーしてないか?
0393デフォルトの名無しさん2015/02/22(日) 16:06:56.71ID:iZtaTVrr
forwardしてるんだからコピーはしないだろ
0394デフォルトの名無しさん2015/02/22(日) 16:21:44.43ID:DVQv7PP4
ああそっか、ごめん、勘違いしてた
0395デフォルトの名無しさん2015/02/22(日) 16:55:44.35ID:uY8y3iUC
fold式にleft/rightが何であるのかわからん
演算子のルールに従うじゃだめだったのか?
0396デフォルトの名無しさん2015/02/22(日) 23:10:10.24ID:pTum2WVa
>>391
Cの可変個引数がある
C++ほど色んな所で使えるわけではないけど
あとPerlぐらいの変態言語ならこういうのありそう
0397デフォルトの名無しさん2015/02/22(日) 23:36:44.34ID:3PxrY4i8
むしろ予約語を増やせないC++らしい危険なクソ構文だわ
絶対後で文法上の問題出るぞ
0398デフォルトの名無しさん2015/02/23(月) 13:10:36.58ID:9GBuLC9G
foldr (+) 0
0399デフォルトの名無しさん2015/02/23(月) 21:35:46.74ID:AjwZ0bQG
むしろマトモな予約語が増やせなくて糞キーワードだらけのCが心配だ
_Bool, _Alignas, _Generic, _Static_assert, _Atomic, _Thread_local
0400デフォルトの名無しさん2015/02/23(月) 21:36:17.11ID:+BeEL7x5
名前空間ぐらい入れればいいのに
0401デフォルトの名無しさん2015/02/23(月) 21:53:31.94ID:zZTzM7Nf
Cに名前空間なんて入れたらC++でええやんってなる。
0402デフォルトの名無しさん2015/02/23(月) 22:46:22.93ID:cTqeesdS
仕組みの一部だけ取り入れればいいと思うんだよね
#include<stdname.h> みたいな宣言で識別子 bool generic等を予約語に昇格そのまま使える状態にして
#include<stdname.h> が無いときは非予約語で相当する予約語は StdC99_Bool StdC11_Generic な用法になる感じで

影響する範囲をinclude入れ子の一段目に限定
例えば"my.h"に #include<stdname.h>があっても"my.h"を includeしたファイルでは StdC99_Boolと書く必要がある
0403デフォルトの名無しさん2015/02/23(月) 22:55:42.10ID:xos6Ur9w
そんな C++ になりきれない C+ みたいな言語を新たに作って誰が喜ぶんだよ?
0404デフォルトの名無しさん2015/02/23(月) 22:59:30.65ID:cTqeesdS
実際 boolが影響範囲のコントロールは出来てないけどそんな使い方だろ?
0405デフォルトの名無しさん2015/02/23(月) 23:18:19.23ID:5h1ypUSf
#define _Generic generic とか書いたincludeファイルを
自分のソースコードに読み込む分には
勝手にしたらええんやで
0406デフォルトの名無しさん2015/02/23(月) 23:34:11.39ID:cTqeesdS
反論になってない反論でしかコミュニケーションとれないお子ちゃまは回線切ってママのおっぱい吸ってなさいってこった
0407デフォルトの名無しさん2015/02/23(月) 23:45:54.08ID:5823dt6R
すると>>406はそろそろママのおっぱい吸ってるころかな
0408デフォルトの名無しさん2015/02/24(火) 21:40:37.78ID:pJ3tHQCB
大人はパパのチンポ吸うんですね。 わかります。
0409デフォルトの名無しさん2015/02/25(水) 00:14:11.12ID:xC+4K0Zl
お前らって好きな女に告発したことあるの?
お前らって女とデートしたことあるの?
お前らって女と手をつないだことあるの?
お前らって女と抱き合ったことあるの?
お前らって女とチスしたことあるの?
お前らって女の父吸ったことあるの?
お前らって女にク○ニしたことあるの?
お前らって女にフラチオされたことあるの?
お前らってDTなの?
お前らってなんで大人の女性とふつうの恋愛できないの?

というか美人で処女で性格もよくお前らにも優しい天使のような女性が現れたとしてどうすんの?
とりあえず声掛けるなりしてメアドでも聞くの?
だって、そんな超優良物件なんだから過去にお前らよりイケメンや金持ちや女性にやさしい男だっ
て言い寄ってただろうに、なお処女なんだよ。
そんな鉄壁防御の女落とせんの?処女マンゲットできんの?
それとも、まさか…まさかとは思うけど、自分は何もせず、相手が勝手にホレてくれて告白でもし
てきてくれるのをじっと待つの?
そんなんあり得なくね?エ口ゲじゃないんだから。自分から動くしかないよ?
0410デフォルトの名無しさん2015/02/25(水) 08:46:54.97ID:nKN7f0Au
告発
0411デフォルトの名無しさん2015/02/26(木) 20:57:39.53ID:jVM3Cxbi
告発わろた
そこが狙いだったのか
0412デフォルトの名無しさん2015/02/27(金) 21:45:21.33ID:jWIxKLNs
先生、保健室で待ってるね.
ムンムキ、ムンムン、ムキムキ、満万戸♪

あーあ,
0413デフォルトの名無しさん2015/02/27(金) 22:17:54.47ID:Ip5cIlNH
告発してどーする‥
0414デフォルトの名無しさん2015/02/28(土) 15:03:19.62ID:aEcZnvpG
declaration -- 告白
0415デフォルトの名無しさん2015/03/02(月) 23:11:20.10ID:AjrAxNss
女検察官か。
それでは皆さんさようなら。
0416片山博文MZ ◆T6xkBnTXz7B0 2015/03/03(火) 04:44:56.57ID:t6l1EelO
>>405
キーワードを直接置き換えるマクロはオススメできないよ
0417デフォルトの名無しさん2015/03/03(火) 21:57:50.02ID:PB4JLOyS
#define complex _Complex
とかいうマクロが標準ライブラリにあるんですがそれは
0418デフォルトの名無しさん2015/03/03(火) 22:34:58.05ID:Bw5+Afu6
>>417
405は逆だったり間違えたんだろうなってのは見たら解るからわざわざ突っ込むまでもないけど
0419デフォルトの名無しさん2015/03/04(水) 13:34:51.92ID:p/ReeUop
>>417
それはベンダーが提供しているものだから問題ない。
そういう用途のために、アンダースコアから始まり大文字が続くシンボルと、アンダースコアが二つ以上続くシンボルは、処理系のために予約されている。
0420デフォルトの名無しさん2015/03/04(水) 14:46:58.37ID:5bBOwxE3
>>419
そういう話じゃねーよ。

そもそも >>417 のようなコードをユーザーが書いても問題ない
処理系が予約してるような名前付けてないんだから。#defineの仕様ぐらい知ってるだろ?

まぁcomplexはぶつかるけど
0421デフォルトの名無しさん2015/03/04(水) 14:53:24.33ID:4pfVor2U
typedef じゃなくて #define なんだな。 ちょっと意外。
0422デフォルトの名無しさん2015/03/04(水) 23:52:43.51ID:GFJSAFgJ
そりゃtype-specifierだからね
0423デフォルトの名無しさん2015/03/07(土) 16:24:41.73ID:xoLws0MD
>>417のように、
そのコンテキストにおいて予約されている名前を定義あるいは宣言したら動作は未定義。
>>405は問題なし。
0424デフォルトの名無しさん2015/03/07(土) 16:47:24.15ID:djYSXMQa
>>423
#defineの使い方ぐらい調べてから知ったかぶろうね。
0425KUSO KOTE ◆unko./w.Osri 2015/03/08(日) 08:00:02.25ID:q4fLP6rF
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)
0426KUSO KOTE ◆unko./w.Osri 2015/03/08(日) 08:33:51.01ID:q4fLP6rF
むしろ>>405の方が微妙な気がする。
ISO/IEC 14882 17.6.4.3.2だと「__」は常に予約だけど、
「_」で始まる名前はグローバル名前空間
(=プリプロセス後)で予約なのでセーフ。
ISO/IEC 9899 7.1.3だと(翻訳フェーズ問わず)
file scopeで予約となっているけど、
file scopeの概念は6.2.1でプリプロセス後と読めるからセーフ?
0427デフォルトの名無しさん2015/03/08(日) 08:41:18.85ID:AA0BAvq6
つまり素人は手を出すなってこと
0428デフォルトの名無しさん2015/03/08(日) 09:25:35.66ID:a1iMakmn
マクロ置換は悪
0429デフォルトの名無しさん2015/03/08(日) 09:47:47.85ID:MjKQfbtK
>>425
新しいのが手元にないので古い規格(1998)だけど、標準ライブラリのインクルードファイルで
で予約されている名前をマクロ定義に使うのはNG。CもC++もライブラリの章に書いてある。
reserved namesとmacro names。
C++だとstdに付け加えるなとかいてあるなあ。これは新しいやつだと変わったんだっけ?

標準ライブラリのインクルードファイルって翻訳フェーズを通さなきゃいけないって
決まってたっけ? NDEBUG定義以外で。
0430デフォルトの名無しさん2015/03/08(日) 12:04:59.60ID:TmgpNONE
インクルード処理はtranslation phaseの一つ
stdへの追加禁止は消えてないはず
0431デフォルトの名無しさん2015/03/09(月) 23:23:29.08ID:DVZhIFmH
#ifdefや#ifはともかくマクロ置換(定数値含む)は近年使ったことがないな
0432デフォルトの名無しさん2015/03/10(火) 03:44:34.60ID:O3tT2l2+
C/C++ 雑談
http://next 2ch.net/tech/1425296203
       ↑
      ツメル
0433デフォルトの名無しさん2015/04/17(金) 23:39:08.70ID:KeRAGdVv
std::lock()とstd::try_lock()はある
std::timed_mutex::try_lock_for()はある
何故std::try_lock_for()がないのか?
0434デフォルトの名無しさん2015/04/17(金) 23:47:43.04ID:pPdceNUI
効率よく待てないからじゃね
0435デフォルトの名無しさん2015/04/23(木) 11:35:05.73ID:VMIg3Gos
どうせ糞POSIXスレッドをコピペして規格を作成してそうなったんだろ
0436デフォルトの名無しさん2015/05/16(土) 02:14:55.14ID:5vlSH4lz
Unicode関連はすっかり停滞しちゃってるなあ
regexでUTF-8を扱える日は来るんだろうか
0437デフォルトの名無しさん2015/05/16(土) 11:43:54.84ID:Q6oFxN8a
停滞してるのは436のおつむだけじゃね?
0438デフォルトの名無しさん2015/05/17(日) 12:28:01.90ID:B4HbLI1y
char8_tがないからこれからもUTF-8をまともに扱える日は来ない
0439デフォルトの名無しさん2015/05/17(日) 21:00:07.19ID:MdVbR0ci
いつのまにか 1 バイトは 8 ビットになっていた。
0440デフォルトの名無しさん2015/05/17(日) 21:10:50.48ID:3p4iQKQh
もう、最小単位が8ビット以外のCPUにC言語実装するの無理だよね……
0441デフォルトの名無しさん2015/05/17(日) 21:12:52.92ID:ZJ6cYS77
実装はできるでしょ
既存の環境との互換がないだけで
0442デフォルトの名無しさん2015/05/17(日) 23:06:27.88ID:D+ZZ1tPa
>>439
ソースは?
0443デフォルトの名無しさん2015/05/18(月) 00:17:39.67ID:owFvwpuo
マイナーな環境は切り捨てて良い
ビジネスだからね
0444デフォルトの名無しさん2015/05/18(月) 00:19:44.88ID:GTaXuX3q
むしろcharが9ビットだったとして動かないようなコードを書いたことがない
0445デフォルトの名無しさん2015/05/18(月) 00:21:05.89ID:/MqUjnzg
その環境で動かしたことすらないのに断言しちゃうのは…
0446デフォルトの名無しさん2015/05/18(月) 01:14:56.23ID:QSgWNScG
16bit/byte な環境なら実際に使った事がある。
0447デフォルトの名無しさん2015/05/18(月) 01:28:51.99ID:Cbg5+jca
Unicodeがらみの文書は2013年のN3572が最後かな
停滞というのか推進役がいないというのか
0448デフォルトの名無しさん2015/05/18(月) 02:20:15.62ID:K5O9DUWc
>>442
IEC 80000-13:2008 にあるそうですが、有料みたいですね。
0449デフォルトの名無しさん2015/05/18(月) 08:54:57.01ID:57s0R/T6
>>439
そうだよなぁ
昔、1バイトはそのCPUの基本処理単位で
8bit以外にも、32、11、7などがある、、、
なんて習ったのは遠い昔話か

初めて読んだ高級言語の教科書には
文字型は1文字で32bit消費するから、もったいないと思ったらPacked付けて
めもりに詰め込んで使ってねとかも書いてあったな
0450デフォルトの名無しさん2015/05/18(月) 09:10:55.77ID:708meOe9
>>449
1バイトの前には、1ワードというのがあって、
1短ワードは21ビットで、長ワードは41ビット
なんていうこともあった。
日立のパラメトロン電子計算機HIPAC-101は
こういうようになっていたと思う。
ドラム式記憶装置で短ワードで8kワード、
長ワードで4kワードの記憶容量だった。
0451デフォルトの名無しさん2015/05/18(月) 11:38:20.70ID:IhfoHK+f
>>449
C言語の規定を満たさない7はねーだろ
0452デフォルトの名無しさん2015/05/19(火) 05:30:22.52ID:Ri/mEtfG
C++は何故これが出来ないのですか?
http://www.kmonos.net/alang/d/ctod.html#forwardfunc
0453デフォルトの名無しさん2015/05/19(火) 08:02:20.21ID:Nw+B6083
>>452
クラスメンバならできてるのにね
0454デフォルトの名無しさん2015/05/20(水) 23:47:34.73ID:xjUyMT9v
ふと仕様をみていたら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;
}
0455デフォルトの名無しさん2015/05/21(木) 00:54:30.76ID:v1+yhA+h
>>454
istreambuf_iterator 使わないとダメなんじゃないの? skipws したら大丈夫なもん?
バイナリ読むなら ios::binary 指定するとか?

copy_n だとファイルサイズがわからないのに必ず指定バイト読みにいっちゃうからやっぱり
根本的にダメかな。
0456デフォルトの名無しさん2015/05/22(金) 22:43:48.17ID:7DrLyQsZ
>>455
さんきゅ
istreambuf_iterator試してみたけど結果は一緒だった。

バッファの一文字目だけ更新されない
しかもループの二回目から

ってどんだけ器用なんだよ
0457デフォルトの名無しさん2015/05/22(金) 23:54:21.39ID:3ZbTlDNN
forward_listが上手くつかえない。
値を昇順に保存したい場合、
listだとlower_boundで探してinsertすればいいのだが、
forward_listだとinsert_afterしかないから
lower_boundで発見するiteratorの一つ前のiteratorをとる術がないと…
lower_boundに渡すcompに値ではなくiteratorを渡してくれるならまだなんとかなるが。
自力でlower_bound風のものを実装するのもアホくさいし、結局listを使ってしまう。
0458デフォルトの名無しさん2015/05/23(土) 20:04:09.70ID:rysQ2513
バカには無理
0459デフォルトの名無しさん2015/05/24(日) 14:09:01.84ID:LsP7CBZq
てかなんで二分検索系なのに ForwardIterator許してるんだろ
RandomAccess以外じゃ遅くて話にならん気が
advanceとdistance特殊化したForwardとか? そんなの無視でええやろ
0460デフォルトの名無しさん2015/05/24(日) 22:21:42.47ID:kX3rbHqn
>>459
O(N)だからかろうじて許容
だがリンクリスト構造のデータでバイナリサーチという発想がクレイジー
標準化委員会のオツムがその程度だったんでは
0461デフォルトの名無しさん2015/05/26(火) 13:20:27.85ID:T4vhUJyc
>>454
入力イテレータコピーしてインクリメントしたらコピー元のやつはもう使えない
0462デフォルトの名無しさん2015/05/26(火) 23:34:35.87ID:mR6iTcwD
>>460
バイナリサーチをするためにはソートされてないといけない。
listではlower_bound等中のadvanceにO(N)かかるとしても、insertがO(1)。
一方、vector, dequeではadvanceにO(1)だけど、insertにO(N)かかる。
サーチのときにコストがかかるか、挿入の時にコストがかかるかの差でしかない。
0463デフォルトの名無しさん2015/05/27(水) 00:42:21.48ID:ZXJ9GTEN
priority_queueってどうなの?
0464デフォルトの名無しさん2015/05/27(水) 08:53:06.53ID:49WOtAb2
>>461
さんきゅ、そこには考えがいたってなかった。

書き込み後、copy_n()した後でis++するとうまく動くことに気づいたのですが
copy_n()の仕様で入力側のイテレーターが
インクリメントされるとも保存されるとも言及されてい無いので
Isを再利用すべきでは無いですね
0465デフォルトの名無しさん2015/05/29(金) 17:53:57.11ID:zv3K9PIp
ところでfile systemライブラリーってどうなったんだ?
14でも採用されて無いの?
0466デフォルトの名無しさん2015/05/29(金) 17:59:38.06ID:R5dmPrAY
ないよ
0467デフォルトの名無しさん2015/05/29(金) 23:45:32.51ID:Gf25n3G0
>>463
pushとソートを自動でやるだけのvectorにつけた衣じゃん
0468デフォルトの名無しさん2015/05/30(土) 10:57:10.52ID:qPmgq1NQ
そもそもキューとコンテナは違うモノ
0469デフォルトの名無しさん2015/05/30(土) 12:18:02.36ID:DRtbRWlm
それは珍妙な説ですね
一般的にはキューはコンテナで
ISO/IEC 14882:2014もそうなってますよ
0470デフォルトの名無しさん2015/05/30(土) 15:35:34.13ID:kxccA5tT
だったらstd::queueに
begin()end()clear()が無いのは何故ですか?
0471デフォルトの名無しさん2015/05/30(土) 15:40:24.27ID:UawMEkCG
queueにはないからじゃね
0472デフォルトの名無しさん2015/05/30(土) 18:06:53.60ID:rz8vUkGO
キューだから無いんだろ
0473デフォルトの名無しさん2015/05/30(土) 18:15:30.40ID:kxccA5tT
キューだったらなぜないんですか?
キューなら各要素にアクセスしてはいけない、という決まりでもあるんですか?
0474デフォルトの名無しさん2015/05/30(土) 18:26:08.47ID:qC/pm06Q
std::dequeを使いなさい
0475デフォルトの名無しさん2015/05/30(土) 19:45:16.77ID:CEOL5S8X
コンテナであるためにはbegin()end()clear()がなければならないという決まりなどないからw
std::queueはイテレーション、途中の要素へのアクセス、clearを禁止してるキューってだけだろ
それで都合が悪いならstd::dequeを直接使えばいいだけの話で
0476デフォルトの名無しさん2015/05/30(土) 20:01:37.06ID:kxccA5tT
では何故std::queueは他のコンテナと差別化されているのですか?
0477デフォルトの名無しさん2015/05/30(土) 23:03:11.77ID:pCUd1Sfk
差別化とは何のことを言っているのですか?
意味不明です
0478デフォルトの名無しさん2015/05/31(日) 06:34:16.62ID:MBoVzqPE
適当なこと信じるなよw

stackとqueueはcontainer adaptorで、他のコンテナのラッパーとして
stackとqueueとして最低限必要な一部メソッド以外を隠すこと自体が目的なんだから
0479デフォルトの名無しさん2015/05/31(日) 07:15:02.92ID:KGZfLlUn
>>478
確かそうだよね。

コンテナアダプターとして他のコンテナ(デフォルトでdequeue)にqueueの殻をかぶせるものだと思う

リングバッファのコンテナ作って queueの殻をかぶせる人とか出てきそう
組込みとかだと
0480デフォルトの名無しさん2015/05/31(日) 07:29:21.31ID:991Qs8BY
>リングバッファの
それをstd::queueというのでは
0481デフォルトの名無しさん2015/05/31(日) 08:51:08.10ID:zG1uK5fD
キューの要素にアクセスする超絶便利なクラスを考えた。マジオススメ。
http://ideone.com/0XGq6C
0482デフォルトの名無しさん2015/05/31(日) 09:51:58.22ID:KGZfLlUn
>>480
std::queueはインターフェースの規定で
リングバッファは実装形態のひとつだと思うよ

少なくともstd::queueのデフォルトはstd::dequeueなので
リングバッファとして実装されてるわけじゃない
0483デフォルトの名無しさん2015/05/31(日) 14:14:03.84ID:b0F1vqJ9
リングバッファはdequeを実装する手段の一つであって
dequeが必ずリングバッファなわけじゃないな
0484デフォルトの名無しさん2015/05/31(日) 14:49:33.66ID:/H4GzWhn
リングバッファによるstd::dequeの実装なんてあるのか
要件満たせないだろ
0485デフォルトの名無しさん2015/05/31(日) 14:53:46.07ID:vc6Fo5Bi
>>484
http://togetter.com/li/36422

__ring_buffer<T*> を使う実装ならあり得るようだ。
0486デフォルトの名無しさん2015/05/31(日) 14:57:02.09ID:cT9cJREJ
むしろランダムアクセス&みなし定時間での追加の一番手抜きな方法
0487デフォルトの名無しさん2015/05/31(日) 15:10:59.51ID:/H4GzWhn
>>485
なるほどT*のリングバッファか
0488デフォルトの名無しさん2015/05/31(日) 15:57:00.48ID:XpV9WTjI
std::deque は償却定数時間じゃなくて定数時間での追加と削除を要求するから、リングバッファの動的拡張じゃダメなんだよ。
定数時間で拡張できるリングバッファとか実装できない限り。
0489デフォルトの名無しさん2015/05/31(日) 16:25:57.32ID:vc6Fo5Bi
>>488
ランダムアクセスの要件もあるんだから償却でもない定数時間で
バッファ拡張は無理でしょ?

なお、 C++ 規格で言うところのコンテナの計算量要件は
要素型操作の回数に対するものとされているるので、
T* のリングバッファを拡張する際のコピーの時間は無視して
考えることになる。
23.2.1 [container.requirements.general] p2
> All of the complexity requirements in this Clause are
> stated solely in terms of the number of operations on
> the contained objects.
これによれば vector<T*> を使う実装も可能になる。
0490デフォルトの名無しさん2015/05/31(日) 20:13:23.31ID:XpV9WTjI
そこ見落としてた。
確かにただの vector<T*> でも問題なさそう。
0491デフォルトの名無しさん2015/05/31(日) 22:13:35.94ID:GgyUUQ/3
では、begin()end()clear()すら無いのはやりすぎだと思うのですが、
何故そうしたのですか?
begin()end()は参照するだけなので、間違って呼び出しても危険では無いですし、
clear()は危険ですが、あってもよさそうに思いませんか?
この程度の物の使い方を誤るようなユーザー層を想定してC++は設計されているのですか?
0492デフォルトの名無しさん2015/05/31(日) 22:20:57.41ID:9qmomWku
>>491
でもね、リングバッファのbegin()とend()ってどこを示すの?
文字通りリング状に繋いだバッファだから始めも終りも無いと思うの(概念上はね)

でもリングバッファってキューなんだよね
0493デフォルトの名無しさん2015/05/31(日) 22:31:30.45ID:MBoVzqPE
STLはC++の言語機能デモみたいな側面も強いからなあ
実用的な意味で言うならアダプター自体存在価値無いし。生dequeそのまま使えで困らん
0494デフォルトの名無しさん2015/05/31(日) 22:49:47.87ID:vc6Fo5Bi
>>491
標準ライブラリがすべて完璧なんてことは無い。
コンテナアダプタに設計上の不完全さがあるのは認識されている
けども、嫌なら素のコンテナを使えばいいので、急いで何か変更する
必要もないから捨て置かれている、とかそんなところだろう。
N3479 (2012-11-02) Priority Queue, Queue and Stack: Changes and Additions
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3479.pdf
0495デフォルトの名無しさん2015/06/01(月) 00:00:41.46ID:s3ZcdtNu
>>492
std::dequeにはbegin()end()があります。
そして>>485には、std::dequeはリングバッファを使う実装もありえると書いてあります。
素人考えでは、リングバッファにbegin()end()を設けることは可能だと感じましたが。
どうしてリングバッファだとbegin()end()の実装が出来ないんですか?
0496デフォルトの名無しさん2015/06/01(月) 00:02:06.37ID:WxPiUJ33
>>495
何か勘違いしたんだろ
スルーしろ
0497デフォルトの名無しさん2015/06/01(月) 08:31:07.82ID:z1J9EcqB
>>495
こういう時は遅延解決と言うのはどうだ?
実際にオマエがリングバッファを使う/作る必要が出るまで放置しておくのだ。

どうしても気になるなら組込みプログラミングとか、
デバイスドライバープログラミングとか
の教科書が役に立つよ


dequeはdouble ended queueで文字通り両端のあるデータ構造

リングバッファは文字通り端の無いデータ構造
端部の処理を隠蔽して
プログラマーが気にしなくていいように作ったんだよ
0498デフォルトの名無しさん2015/06/01(月) 10:55:59.28ID:81ggMrem
>>497
いや、ふつうにリングバッファに begin()/end() 作れるからね。
http://www.boost.org/doc/libs/1_58_0/doc/html/circular_buffer.html

バッファの端部の処理を隠蔽するのと、コンテナとしての begin()/end() を
提供するのとは競合しない。
0499デフォルトの名無しさん2015/06/01(月) 18:17:51.18ID:z1J9EcqB
>>498
読み出し点がbegin()で書き込み点がend()と言う定義だね
これで便利に使えるんならこれでいいんじゃない?
std::にこだわらなきゃいけない理由もないし


std::queueを定義した人たちはわざわざ隠蔽したから違う意図があったんだろうけど
どういう議論でそこに落ち着いたのかは興味のある所だな
0500デフォルトの名無しさん2015/06/01(月) 18:34:30.61ID:s3ZcdtNu
>std::queueを定義した人たちはわざわざ隠蔽したから違う意図があったんだろうけど
>どういう議論でそこに落ち着いたのかは興味のある所だな

一週回ってまたもとの話題にたどり着きましたね。
std::dequeにはbegin()end()clear()があるのに、
std::queueにはないのは何故ですか?と。
やっと分かってもらえたようで、とてもうれしいです。
実装的な意味で隠す意味は全くないですよね。なにせstd::dequeには有るのだから。実装可能ですよね。
だから使い勝手の面で考慮して削ったのは明白なわけですが、
有ったほうが便利なのも明白なので、何故削ったか教えてください。
また、コンテナというコンテナにbegin()end()clear()が有るのに、
例外的に省く必要があったのは何故ですか?
std::dequeには有るのに、std::queueにはないのは何故ですか?
0501デフォルトの名無しさん2015/06/01(月) 18:35:28.27ID:Y92a5RD0
リングバッファは用意した格納領域に論理的な端はないが
リングバッファに格納しているデータには両端がある。
読み出し点とかいう珍妙な定義ではない。
リングバッファも理解できない低能は去れ
0502デフォルトの名無しさん2015/06/01(月) 18:47:00.78ID:Y92a5RD0
実装可能だからと言って意味も考えずに関数を追加しようとする低能には難しかったかな。
削ったんじゃない。必要だと判断する根拠が見いだせなかったから入れなかっただけ
0503デフォルトの名無しさん2015/06/01(月) 18:54:12.01ID:3aF8jH8E
>>500
隠す意味が全くないとは言い切れないし、std::queueの設計者はFIFOとしての
必要最低限な機能を提供するアダプターの例として作ったんじゃないの?
こんなアダプタの実装なんてあっという間に出来るんだから必要な機能があるなら
my::queueを作ればいいだけだろ
っかお前さんstd::queueに親でも殺されたのか?
0504デフォルトの名無しさん2015/06/01(月) 18:55:07.93ID:0D/a6Ypk
コンテナアダプタだからって結論が出ただろ…
何回ループするつもりだ
0505デフォルトの名無しさん2015/06/01(月) 19:00:07.36ID:Y92a5RD0
>>503
std::queueは「コンテナをprotectedにしておくので派生クラスを定義してくれ」という設計思想
0506デフォルトの名無しさん2015/06/01(月) 19:00:51.86ID:bL5wj5hB
>>504
脳みそがリングバッファだから仕方ない
0507デフォルトの名無しさん2015/06/01(月) 19:10:03.15ID:3aF8jH8E
>>505
本当だ、コンテナはprotectedになってるんだな
0508デフォルトの名無しさん2015/06/01(月) 19:20:31.72ID:s3ZcdtNu
>>504
コンテナアダプタだと、どうしてbegin()end()clear()は要らないのですか?
単純に、queueをdequeのスタック機能禁止版、
stackをdequeのキュー機能禁止版、として実装せず、
あえてbegin()end()clear()を削ったのは何故ですか?
そうすることで何のメリットがありますか?
0509デフォルトの名無しさん2015/06/01(月) 19:20:33.07ID:SF759XlG
>>500
俺様理論でよければ(標準化の論議を見てたわけじゃないので)

俺低レベルプログラムの出身だから、キューっていうと
ハードウェアとか、OSとか、別アプリとか、別スレッドとか、そういう時間軸の違うところからのアクセスを受け付けるところというイメージ。
なので、せっかくend()しても、だれか別の人がデータ付け加えたら本当のend()じゃなくなるし
begin()も同じ。
なので、俺がqueueを作るなら、begin()とかend()とか積極的に隠蔽したい。
百害あって一利くらいしかない。

本当に、begin()とかend()とかの必要な人は、初期化する人だから、そういう人は
0510デフォルトの名無しさん2015/06/01(月) 19:23:42.90ID:s3ZcdtNu
>>509
ではどうしてstd::dequeにはbegin()end()があるのですか?

>俺低レベルプログラムの出身だから
低レベルプログラマの間違いですか?
あなたの文章からは知性が感じられません。
0511デフォルトの名無しさん2015/06/01(月) 19:51:57.40ID:60FC1uF1
この話題C++14/17関係なくない?
0512デフォルトの名無しさん2015/06/01(月) 20:13:04.85ID:Ajumyg1G
あすぺがおるな。
なんでなんでなんでなんで
どうでもええやん。
0513デフォルトの名無しさん2015/06/01(月) 21:39:07.24ID:sxT4bift
dequeというキューにbegin/endを付けたのは間違いだった
標準化委員会のオツムはその程度
だから標準ライブラリはカオス
わかったら>>510はもう来るな
0514デフォルトの名無しさん2015/06/01(月) 22:23:47.35ID:CikCK20O
queueくらい自前でチョチョイと実装するほうが手軽だろ
0515デフォルトの名無しさん2015/06/01(月) 22:35:28.05ID:WzbSrIDw
おまいら、もちつくお。
std::queue は FIFO だお。
末尾に突っ込む事と、先頭から取り出す事に特化したのがFIFOだお。
シーケンシャルアクセスしたいのなら、それはそもそもFIFOを使うべきではないという事だお。
0516デフォルトの名無しさん2015/06/01(月) 22:39:24.96ID:XMlrS7pL
>>515
ほうほう
では何故、ダブルエンドなキューがbegin/endを持っているのですかな?
0517デフォルトの名無しさん2015/06/01(月) 22:40:54.82ID:CikCK20O
>>515
どんなアクセスしようが俺の勝手だろ!
0518デフォルトの名無しさん2015/06/01(月) 22:43:02.25ID:jRIiVMIx
>>516
デックはFIFOじゃないからだろ
0519デフォルトの名無しさん2015/06/01(月) 22:46:12.37ID:3aF8jH8E
std::dequeにはinsertもeraseもあるわFIFOじゃない
0520デフォルトの名無しさん2015/06/01(月) 22:57:36.37ID:bKrMq7bs
ほうほう
では先頭or末尾の追加削除に特化したdequeが
なんでbegin,insert,eraseを持って途中のアクセスをゆるしているのですか
0521デフォルトの名無しさん2015/06/01(月) 23:05:14.31ID:3aF8jH8E
許しちゃいかんのか?
0522デフォルトの名無しさん2015/06/01(月) 23:06:27.46ID:jRIiVMIx
あって、何が不思議なの?
0523デフォルトの名無しさん2015/06/02(火) 00:38:03.29ID:eS0bDxEp
>>508-509
標準化にあたってたいした議論も無く、 SGI STL のやつをそのまま持ってきちゃったんだろう。
http://www.sgi.com/tech/stl/queue.html
> ... Queue does not allow iteration through its elements. [2]
...
> [2] This restriction is the only reason for queue to exist at all.
> ... The only reason to use the container adaptor queue instead of
> the container deque is to make it clear that you are performing only
> queue operations, and no other operations.
0524デフォルトの名無しさん2015/06/02(火) 00:38:41.35ID:JAKrN9QP
>>513
どうして間違いなんですか?
begin()end()があったほうが、使えるシチュエーションが広がりませんか?
汎用性はC++の精神では無いんですか?
0525デフォルトの名無しさん2015/06/02(火) 00:59:02.07ID:4OJRpLbL
STLの古い部分、ほぼ前世紀の設計と言っていいものをなんでそこまで精神がどうのこうの妄信できるのかわからん
operator <<を出力に流用して喜んでたような時代だぞ
委員会に入って修正してあげてくれ
0526デフォルトの名無しさん2015/06/02(火) 01:36:45.46ID:BaZW+F2H
Qちゃんまだがんばってるんだw
0527デフォルトの名無しさん2015/06/02(火) 01:41:24.85ID:33LBbjfE
>>526
ありがたくROMって勉強させてもらってはいてもC++14のことに意見することなどあり得ません‥
0528デフォルトの名無しさん2015/06/02(火) 02:59:29.07ID:W334YSrv
以下、勝手な推測
本当に知りたきゃステパノフにでも聞いとけ


queueはアダプタということもあって先入れ先出し関係以外の機能は極力つけない
(実情はともかくとして)内部がイテレートできるような状態になってるかすら保証できない
よってbegin/endは意味を成さない

とqueueにbegin/endとかがない点はこういうこじつけができるわけだ


ではなぜdequeはそうなっていないのか

dequeのような両端キューはlistを使えば実現できるのでこれに対するアダプタとしてやればよさそうでもある
だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない

よって両端キューに向いてるコンテナを独自に作る必要がある
コンテナとして作る以上、コンテナとしての機能をつけなきゃならんのでbegin/endとかある
0529デフォルトの名無しさん2015/06/02(火) 04:56:05.32ID:JAKrN9QP
>dequeのような両端キューはlistを使えば実現できるのでこれに対するアダプタとしてやればよさそうでもある
>だがlistは各要素ごとにポインタを要するため容量の無駄ができやすい
>かといってvectorをそのまま使うようなアダプタもやっぱりあんまりよろしくない

これはqueueにも当てはまることではないんですか?
stackはともかくqueueでは同じような問題が発生するように思います。
それなのにstd::dequeにbegin()end()clear()があって、
std::queueにはないのは何故ですか?
0530デフォルトの名無しさん2015/06/02(火) 07:06:13.53ID:X1wiCAZl
>>529
いろんな階層の問題をごっちゃにしてるよ。

1) std::queueはインターフェースの規定であって、データ構造の実態は持たない
 std::dequeはデータ構造の実装であって、データ構造の実態を持つ

2) 設計された年代が違う(c++の適用範囲が拡大された)
 90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
 マルチスレッドが標準で取り込まれたり、デバイスドライバーとか今までc++の適用外と思われていたジャンルでも
 c++が使われるようになった。
 そのため、入力と出力で違う時間とタイミングで動作するプログラムを想定する必要が出てきた。
0531デフォルトの名無しさん2015/06/02(火) 07:15:17.80ID:GRJ74vYh
アダプターっていう名前だけで
設計がぜんぜんアダプターになってないんだが
コンポジションしてるだけだろ
05325232015/06/02(火) 10:18:56.81ID:eS0bDxEp
>>528-529
せっかく >523 で答えをもってきたのに何でまだループしてんだよ。いいかげんにしろ。

>>530
> 90年代に設計されたstd::dequeに対して2010年頃に設計されたstd::queue
deque も queue も C++98 からいっしょに規格に入ってるよ。
0533デフォルトの名無しさん2015/06/02(火) 12:27:56.96ID:lYSfTpen
>>532
あ、すまん。
勘違いしてた。だとしたら完全にスレチだな。

c++98からあるのなら
unix pipeとか、socketをラップしたかったのかな?
まいいや、スレチなので下りる。
0534デフォルトの名無しさん2015/06/02(火) 12:51:50.65ID:JAKrN9QP
下りないでください。
std::queueをインターフェースの既定にとどめて、
std::dequeをデータ構造の実装にした理由は何ですか?
0535デフォルトの名無しさん2015/06/02(火) 15:13:34.06ID:VK7JMTdH
>>511
これな
0536デフォルトの名無しさん2015/06/02(火) 16:49:36.14ID:lYSfTpen
>>534
スレチだからこれで最後な

1) まず適切なスレに移住しろ、もうこのスレでは誰も答えてくれないと思うぞ

2) 質問もいいが自分でコードを書いてみろ
とりあえず、pipeを使ったプロセス間通信の例題を拾って来て
std::queueで綺麗にラッピングしてc++らしいライブラリーに仕上げて
動かしてみよう
その上でbegin()とかend()を追加する意味があるのか考えてみろ
pipeの代わりにsocketでもいいぞ
実行環境が無いなんて言うなよ、お前の好奇心はその程度だと言うことだからな

3) 名前に騙されるな
たまたま似たような名前が付いてるからと言って同じものでは無いぞ
データを格納したかったからコンテナを作った、
データ交換インターフェースを統一したかったからインターフェースを規定した

--- のかもしれない ---

違うものだけど同じ名前がつくのは良くあることだ
0537デフォルトの名無しさん2015/06/02(火) 20:24:24.00ID:JAKrN9QP
どうしてstd::dequeはコンテナで、
std::queueはインターフェイスなんですか?
何故その必要があるんですか?
--- のかもしれない ---
って何ですか?
0538デフォルトの名無しさん2015/06/02(火) 21:57:41.72ID:5NHDuaxI
>>506にちょっと笑った
0539デフォルトの名無しさん2015/06/03(水) 10:12:15.93ID:Mg6w8zFx
>>538
モデルとしては合ってるんだろうか
0540デフォルトの名無しさん2015/06/03(水) 20:40:33.57ID:su0LbJfR
あすぺがおるな。
0541デフォルトの名無しさん2015/06/03(水) 21:59:10.99ID:dfdrJWoW
このご時世にまだC++なんか使ってる奴はまず間違いなくアスペ
0542デフォルトの名無しさん2015/06/03(水) 22:35:17.80ID:su0LbJfR
別になんでもええやん。
妙なマイルールにこだわるのがアスペ

なんでなんでとしつこく尋ねるやつも
C++を頑に拒否するやつも
0543デフォルトの名無しさん2015/06/03(水) 23:17:29.73ID:hYqfxVSD
>>541
で、ご推薦の言語は?
0544デフォルトの名無しさん2015/06/04(木) 06:16:53.70ID:UBpVhghT
D
0545デフォルトの名無しさん2015/06/04(木) 14:30:00.26ID:0Z7pWiJ+
:D
0546デフォルトの名無しさん2015/06/04(木) 14:43:47.36ID:++3aDFpK
ID++記念カキコ
0547デフォルトの名無しさん2015/06/04(木) 16:22:33.26ID:6vqO0I90
「D++」言語ができたのかと思った
0548デフォルトの名無しさん2015/06/04(木) 16:51:01.08ID:TldR44zJ
>>546
おめでとう
0549デフォルトの名無しさん2015/06/04(木) 23:48:06.16ID:aPnnxKdi
「妙なマイルールにこだわるのがアスペ」
「C++を頑に拒否するやつも」
⇒
俺が使ってる言語を拒否する奴はアスペ
と言うマイルール

やはりC++使いはアスペだな
0550デフォルトの名無しさん2015/06/04(木) 23:50:59.97ID:B1uuqHGD
なんという粘着
0551デフォルトの名無しさん2015/06/05(金) 00:35:34.29ID:wP4ahALK
だって脳みそがリングバッファだから
0552デフォルトの名無しさん2015/06/05(金) 15:36:09.45ID:Cf1vS3sG
馬鹿には無理
0553デフォルトの名無しさん2015/06/05(金) 19:07:40.23ID:+NkeWRnn
やけに伸びてると思ったらまたふっるい話してんな
14と1zの話して
0554デフォルトの名無しさん2015/06/06(土) 12:03:03.14ID:oLEmSHxB
14の話はもう相談室スレでいいだろう
14が出てからもう半年経った
0555デフォルトの名無しさん2015/06/06(土) 20:16:39.07ID:5qQSF7z/
でもあっち03の話すら通じないことあるよ
0556デフォルトの名無しさん2015/06/07(日) 01:38:09.50ID:bygzrjaL
11はともかく03が通じないなんて
どういうことやねん
0557デフォルトの名無しさん2015/06/07(日) 03:22:55.11ID:J7/rKSpK
狛江市
0558デフォルトの名無しさん2015/06/07(日) 16:03:47.42ID:Mo3OVMZQ
テンプレートは邪悪だから使うなとか
static_castは読みにくいし移植性がないからCスタイルにしろとか
vectorは重いから生配列にしろとかそういう人達の巣だよ
0559デフォルトの名無しさん2015/06/07(日) 20:59:31.19ID:PwylUBiq
エラー処理がクリティカルな場面では例外の使用が禁止なのは常識
0560デフォルトの名無しさん2015/06/08(月) 22:14:42.64ID:hVlKyA7q
static_castは読みにくいだけでなく危険なウンコキャストだから
忌み嫌われて仕方ない
0561デフォルトの名無しさん2015/06/08(月) 22:18:44.57ID:6B1qdYYr
そもそもキャスト使うなよ
0562デフォルトの名無しさん2015/06/08(月) 22:25:06.05ID:sT7wPUV4
void*に頼らざるを得ない場面は多い
0563デフォルトの名無しさん2015/06/08(月) 22:27:11.46ID:y0YTb2xC
auto dt = duration_cast<milliseconds>(te - ts).count();
これもキャストのうちですか?
0564デフォルトの名無しさん2015/06/09(火) 01:27:07.38ID:3PdUfKat
C++相談室でやれ。
0565デフォルトの名無しさん2015/06/09(火) 04:55:58.61ID:PjASmsip
公式のforumでchar8_tの話がまた始まったか
0566デフォルトの名無しさん2015/06/09(火) 15:26:48.09ID:Cm8lxY32
void * は reinterpret_cast だろ。
static_cast は c なら暗黙の変換してくれるようなのを変換するのに使う、ちょっぴりだけ危険度の少ないキャスト。
例えば enum と整数の変換や、ビット幅や符号の有無が違う整数同士の変換に使う。
読みにくいことは、危ないことをしていることろを見やすくしてくれるんだから有難い話だ。
0567デフォルトの名無しさん2015/06/09(火) 16:09:41.57ID:9FRXqzT5
ことろ
0568デフォルトの名無しさん2015/06/09(火) 18:42:41.92ID:Q+C1CVUK
値が確実に保存されている変換と
精度が落ちたり値によってはオーバーフローの恐れがある変換と
使い方を間違えていたらundefined behaviorな変換を
区別なしにstatic_castにまとめられるとマジ困るんだが
0569デフォルトの名無しさん2015/06/09(火) 19:46:35.81ID:Pop0C6b+
それはそうだけど
const外しと型再解釈までまとめられたCスタイルキャストとかいう更なる糞よりはましでしょ
0570デフォルトの名無しさん2015/06/09(火) 20:04:24.02ID:wqkyS0f8
static_castには更に、dynamic_castならチェックされるダウンキャストをノーチェックで通す機能もある
確かに更なる小分けがされてもいい

dynamic_castで「オーバーフローの恐れがある変換」もランタイムチェック有りでできてもいいような気はするけど
エラーをどうやって返すかは困るな
dynamic_cast (std::yesthrow) <char> (300) なんてな
0571デフォルトの名無しさん2015/06/09(火) 20:35:32.75ID:Q5wqvLxp
template<typename to_t, typename from_t>
auto numeric_cast(from_t) -> to_t; // 数値の変換。オーバーフロー時は例外std::overflow_error

よし>>570は中身を作ってくれ。
0572デフォルトの名無しさん2015/06/09(火) 20:46:28.56ID:wqkyS0f8
>>571

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;
}

こんなんでいいのか?
0573デフォルトの名無しさん2015/06/09(火) 20:49:41.71ID:wqkyS0f8
訂正、!= だった
0574デフォルトの名無しさん2015/06/09(火) 22:33:01.84ID:pp31NC3b
>>572
こうなるようにしたいぞよ
numeric_cast<float>(1.0/3) →1.0f/3に
numeric_cast<float>( std::numeric_limits<double>::quiet_NaN() ) →floatのNaNに
numeric_cast<int>( std::numeric_limits<double>::quiet_NaN() ) →例外
0575デフォルトの名無しさん2015/06/14(日) 03:34:34.59ID:IHeh8QZt
auto k = {1, 2, 3}; // kはinitializer_list
って誰得な仕様なん?
f({1, 2, 3}) と同様にコンパイルエラーにして欲しいんだけど
0576デフォルトの名無しさん2015/06/14(日) 03:49:57.94ID:iglu1H/1
C++17を待て
0577デフォルトの名無しさん2015/06/14(日) 09:45:06.28ID:CMzMEuB3
スコットさんのユニバーサルリファレンスと規格ドラフトのforwarding referenceって同一ではないんだな

auto && r = 0; ユニバーサルリファレンスだがforwarding referenceでない
vector::push_back(T &&) forwarding referenceだがユニバーサルリファレンスでない
0578デフォルトの名無しさん2015/06/27(土) 22:33:38.38ID:bsNfdhMT
久しぶりにC++を使うようになって
いい加減クラスや関数の宣言は新しいC++1yでは
なくせばいいと思う今日このごろ
ソースとヘッダに分けるのもなくせばいい

他の言語を使えば使うほどそう感じるわ
今後そういうそうしていく話とか無いの?
0579デフォルトの名無しさん2015/06/27(土) 22:50:31.98ID:e2zMBxYg
モジュール化の話が出てる
0580デフォルトの名無しさん2015/06/28(日) 05:32:25.05ID:92vB0cyt
Dでいいやん
0581デフォルトの名無しさん2015/06/28(日) 12:24:41.15ID:Yx6X9nfm
>>578

void test()
{
A * B;
}

これが宣言か掛け算かひと目で見分けられるようになったらまたおいで
0582デフォルトの名無しさん2015/06/28(日) 12:32:36.86ID:y9vfLW2M
一見関係有りそうで実際は関係の無いことを述べて話を攪乱するというのが
詭弁のガイドラインみたいなのに有ったな
0583デフォルトの名無しさん2015/06/28(日) 17:36:18.64ID:im5DcXMU
>>581
だがまぁ、宣言と定義の区別がない言語も多いのではある
0584デフォルトの名無しさん2015/06/28(日) 23:47:51.35ID:/6YrOuSs
>>581
Aが定義されていなければどっちにしろエラーなんだから、それはヘッダだのモジュールだのといった話とは関係ない

どっちかといえば、#ifdefで宣言されてなければ宣言する式に書かれてる、場所が一定しないようなのが問題になるだろうな
ssize_tとか
0585デフォルトの名無しさん2015/06/30(火) 08:54:31.31ID:bwgz9k+k
ちがう
ここまでの A の宣言を全て把握して意味解決しないと構文解析が進まないという根本的欠陥の話
#include があればその内容をすべて展開・解析しないと進まないという馬鹿げた話
0586デフォルトの名無しさん2015/06/30(火) 14:37:41.25ID:w7Ekwv0Z
コンパイラにとっては結局すべて解析しないといけないのは変わらんが、エディタでも作ってんのかな
0587デフォルトの名無しさん2015/06/30(火) 21:08:16.41ID:RlLmESno
>ここまでの A の宣言を全て把握して意味解決しないと構文解析が進まない

全く欠陥ではないと思うのだが何がいけないんだろう
static strong typingな言語を全否定?
0588デフォルトの名無しさん2015/07/01(水) 00:06:35.67ID:ZU1/EKD0
var B:A*;
とかがいいって言ってるんじゃない?
0589デフォルトの名無しさん2015/07/01(水) 02:14:31.91ID:1cGzpLPZ
ソースコード上に具体的なクラス名やクラスのメンバーの前方参照が無くても宣言を探す仕組みが必要
---A.cpp---
// (ここには前方宣言なし)
::myns::myclass::myfun (); // → 他ファイルの宣言を探しに行く
--------------

Javaならクラス名からファイル名を求め、
C#なら全てのコンパイル対象から探す
0590デフォルトの名無しさん2015/07/01(水) 05:37:05.50ID:Wee9bcwF
ソースとヘッダに分けるのは確かに面倒だな
でも分けないともっと面倒なことになる
0591デフォルトの名無しさん2015/07/01(水) 05:50:16.17ID:/48a4Fba
>>589
Javaならクラス=ソースファイルだからいいけど、moduleも従来型namespaceもclassも全部名前空間を作って :: を使うC++でそりゃ無理だ
いや無理じゃないけど衝突してるときにめんどくさいだろ
moduleの提案でもimportって書かせるようになってるだろ
0592デフォルトの名無しさん2015/07/01(水) 10:23:39.89ID:LAJVZcmt
個人的な趣味で言えば
コンパイラが頑張って人の労力を減らす方向に進んで欲しい

はじめてc言語で関数プロトタイピングを見たときなんじゃこれ?と思ったもん

そんなの2パスしてでもコンパイラが探せばいいやん
秒何円で課金されてた時代じゃないんだし


今のC++だと、テンプレートはヘッダに置くべきか、cppファイルに置くべきか
どこでテンプレートか実体化されるとか、何度も実体化されるのを防ぐにはどう書けばいいかとか
そんなのは人間が考えることではなくて
コンパイラが頑張るべきところだと思うよ
0593デフォルトの名無しさん2015/07/01(水) 12:28:43.93ID:k5RhOFay
勝手に探されたら隠蔽できないやん
0594デフォルトの名無しさん2015/07/01(水) 12:30:04.86ID:tlC5n+XG
C#だと関数プロトタイプ不要だけど、C++は互換性の問題もあって消せないんじゃないの
関数一覧表としても機能してるし
0595デフォルトの名無しさん2015/07/01(水) 12:42:44.94ID:gbbyRw8c
関数プロトタイプ不要にはできるんじゃないの
今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし
0596デフォルトの名無しさん2015/07/01(水) 12:47:53.20ID:tlC5n+XG
不要には出来るよ
というか本当は不要にしてほしい
classの前方宣言とか面倒くさいしコンパイル通らない事もしばしば
ただ関数templateのオーバーロードの順番は大事だったりするので入れ替えただけで
思った通りに正しく動かない事があるとか他にも解決しないといけない問題があるね
0597デフォルトの名無しさん2015/07/01(水) 13:08:29.02ID:/48a4Fba
不要にはできるけど、#includeを完全に捨て去るの必須だよな
現状でやっても、アプリケーションコードがシステムヘッダーの内容に影響して
プリコンパイルヘッダーが使えなくなるばかりか
ちょっとうっかりするとライブラリが内部で使ってる名前をオーバーロードしてしまい色々ぶっ壊す不幸な未来しか見えない
0598デフォルトの名無しさん2015/07/01(水) 13:48:59.83ID:gMCljQ/I
現実的な線はIDEでヘッダを自動生成するくらいだべ
0599デフォルトの名無しさん2015/07/02(木) 01:49:24.89ID:D1cbsXF3
ドキュメントも自動生成するための規格を策定して欲しい
0600デフォルトの名無しさん2015/07/10(金) 11:06:53.35ID:99yaLJY4
機械翻訳みたいに一件よさげでもよく読むとイミフなドキュメントを量産されると迷惑だ
ソース読めばわかることはせいぜい気の利いたIDEがあれば充分
ソース読んでもわからんことをドキュメントに求めるわけで
それは人力でしか作れない
0601デフォルトの名無しさん2015/07/10(金) 11:44:22.55ID:bM2M5Hwn
ドキュメント記述が目指すべき究極的な理想形、それは

モニタに貼られたログインパスワードの付箋
0602デフォルトの名無しさん2015/07/10(金) 12:38:31.58ID:rsWVLm23
>>600
ほんそれ
0603デフォルトの名無しさん2015/07/11(土) 14:27:22.00ID:I825HQOD
関数のプロトタイプ宣言を不要にすることは出来るけど、
C++のスタイルを維持するのであれば、厳しい条件があるね。
それは、「1コンパイル単位内であれば」、出きる、ということ。
例えば一つのcppファイル内であれば、関数のプロトタイプ宣言を無しにすることも可能。
ただし、現状の規格はそうはなってないが。
あちこちのcppファイルに実装が散らばっている状況なら原理的に無理。
だ・か・ら、
「今だってクラス内であればメンバ変数/関数順番関係なしに書いて使えるし」
ということになってる。
クラス定義は、絶対に1コンパイル単位内に収まるから、
その中であれば順不同でもOKってことになってる。
0604デフォルトの名無しさん2015/07/11(土) 15:33:34.10ID:iW45GXJ2
>あちこちのcppファイルに実装が散らばっている状況なら原理的に無理

どうして無理なのよ?
0605デフォルトの名無しさん2015/07/11(土) 16:56:33.12ID:HDTdm+Tv
クラス定義の中での前方参照も、型はダメとか中途半端なので、
どーでもいい前置きが本題より目立つレイアウトにさせられたり、
忘れた頃に不意に引っかかって脱力させられたりするね
0606デフォルトの名無しさん2015/07/11(土) 18:28:13.86ID:XZZz4YSC
つまり D だな
0607 ◆QZaw55cn4c 2015/07/11(土) 21:29:36.05ID:JDB4xEHW
ファイルスコープで前方参照OKだと,いろいろウけると思うよ
とりあえず C で誰かやってくれ
そのときにはオーバーロードとテンプレートもついでにつけてくれ

クラスは要らん
0608デフォルトの名無しさん2015/07/11(土) 21:38:57.56ID:Yv9cPz5q
だからさ、上から下というのが無いとアプリケーションコードがシステムヘッダーに影響して悲惨なことになるだろ
0609 ◆QZaw55cn4c 2015/07/11(土) 21:42:34.32ID:JDB4xEHW
あからさまに2-pass にして,矛盾が発生したら停止する,程度じゃだめなの?
0610デフォルトの名無しさん2015/07/11(土) 21:43:42.49ID:FdAid2Wa
何で前方宣言みたいなヘンテコなもんが必要なんだよ。宣言してなくてもコンパイラお前自身は何がどこで定義されているか全部知っているんだから適当に上手くやれよ。馬鹿みたいなエラーメッセージ吐くんじゃ無くて。
0611デフォルトの名無しさん2015/07/11(土) 22:01:02.75ID:Yv9cPz5q
>>609
例えば

hoge.h

void g(short);
inline void f() { g(1); } //上のを呼んでるつもり

app.cxx

void g(int) {...} //知らないで同名の関数を宣言、実際にはこっちが呼ばれてしまう

この例だとnamespace使って回避もできるけど、いちいち気にしてたらきりない
0612デフォルトの名無しさん2015/07/11(土) 22:18:19.84ID:I825HQOD
>>610
分割コンパイルするからそうはいかない。
a.cppコンパイル中はb.cppのことは忘れてる。
0613デフォルトの名無しさん2015/07/11(土) 22:40:40.62ID:FdAid2Wa
>>612
それをどうにかするのが工夫っていうもんだろ。出来ない出来ないって言ってたら何時迄も出来ない。
まあc、c++は何時迄も古臭い時代遅れな言語の欠点を引きずったまま、ヘンテコな仕様を馬鹿みたいに取り入れて迷走する運命だろうなあ。
0614デフォルトの名無しさん2015/07/11(土) 22:54:24.55ID:HDTdm+Tv
つまり、こうなっているべきだと言いたいのか?
内部結合または無結合の識別子は当該スコープで前方参照できる
外部結合が暗黙に行われることはなく
その識別子をexternを指定して宣言したスコープで前方参照できる
0615デフォルトの名無しさん2015/07/11(土) 22:55:33.43ID:Yv9cPz5q
そりゃー互換性をぶっ壊していいなら何でもできるよ
具体的にはモジュールが入ってかつ完全に#include捨てていなら、つまりDやC#みたいにしていいならできる
前方宣言を取り除くためだけに、C言語のヘッダーファイルを読めないC++になって誰からも見向きされなくなってもいいってんなら提案してみたら?
それこそ迷走だけどな
0616デフォルトの名無しさん2015/07/11(土) 23:04:21.23ID:6ws9vREv
互換性ないんならC++じゃなくていいよね
それこそD言語でいい
0617デフォルトの名無しさん2015/07/11(土) 23:18:59.54ID:I825HQOD
ともかく、今の文法では無理。
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 どちらを先にコンパイルしても問題が起こる。
こういうことが起こりうる言語で、前方宣言を許すために依存関係を調べてコンパイル順を
自動化するのは無謀。突然「依存関係エラー」とか言われても、エラーの意味が大きすぎる。
自動化できないならマニュアルで行くしかない。
0618デフォルトの名無しさん2015/07/11(土) 23:28:53.50ID:I825HQOD
訂正

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; };

前方宣言を許すために >> 前方宣言を無くすために
0619デフォルトの名無しさん2015/07/11(土) 23:56:25.53ID:I825HQOD
>>605 も 「クラス定義の中での前方参照も、型はダメとか中途半端なので、」
と書いているように、クラスや構造体のサイズ問題は色々と足を引っ張る。
型の前方参照がダメなのは、型のメンバ変数の定義に依存関係が出ると、サイズの決定が面倒なことになるから。
ちなみに、class a; と前方宣言しておくと、ポインタなら持てるようになる。
それから、メソッドの中で型をインスタンス化したりは問題ない。依存関係が発生しないので。メンバに持とうとすると怒られる。
よく考えられているギリギリの攻めの仕様だね。
コンパイラの都合を考えない人からすれば、まったく意味不明な仕様だが。
0620デフォルトの名無しさん2015/07/12(日) 00:10:07.93ID:RBuqBeAH
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{};
};
な、かなりカオスだろ。
0621デフォルトの名無しさん2015/07/12(日) 00:15:28.69ID:RBuqBeAH
まー単一コンパイル単位であることが保障されている、クラス内の前方参照ですらこんな有様なんで、
コンパイル単位間を跨った前方参照なんぞ、夢のまた夢なんですわ。
0622デフォルトの名無しさん2015/07/12(日) 01:04:07.12ID:wWInxoH0
>>621
待て待て、コンパイル単位間を跨がっている場合の「前方」とは
どんな意味であるべきだ?
0623デフォルトの名無しさん2015/07/12(日) 01:17:35.77ID:wUBcw7SV
全然カオスに見えないんだが
>>620が全部OKになればいいだけだろ
包含関係の循環依存なんてむしろコンピューターに検出させるべきこと
互換性についても今まで「宣言されてないエラー」だったのが
コンパイルできるようになるだけで問題ない
0624 ◆QZaw55cn4c 2015/07/12(日) 08:58:02.81ID:0rRLNK9E
>>609
それは数値リテラルがshot/longどうとでも解釈可能なことによる.
前方参照解禁となんら関係ない
0625デフォルトの名無しさん2015/07/12(日) 09:26:46.02ID:h/IZWasR
クラス(構造体)内のクラスメンバはC系の特権だからなー。
javaは暗黙にそれを禁止したからうまく成り立ってるよね。
あれ本質的に全部ポインタだもんな。

C#はどうなんだろうか?
後からstructが追加されてたよね
0626デフォルトの名無しさん2015/07/12(日) 10:23:28.30ID:BKAToTl0
つまり>>610の主張は完璧に正しい。
c++がこういう欠点を解決しない限りc++プログラマーはくだらないエラーに悩ませ続けられる。
0627デフォルトの名無しさん2015/07/12(日) 11:56:35.39ID:X+7tQsgp
D使え
0628デフォルトの名無しさん2015/07/12(日) 11:58:51.97ID:ahQPxZ3Y
>>625
C#は最初からstructがあるし>>618も問題ない。
これを実現するために複数ソースの同時コンパイル機能があるから
0629デフォルトの名無しさん2015/07/12(日) 13:38:42.96ID:9keGjwZf
>>633
1はint
「どうとでも解釈可能」なんて言ってる奴は初心者スレに行ってろ

それにオーバーロードは一例で、templateの特殊化なり
後からなんか追加できる類の機能を全部気にしないといけなくなる

あと他人の話だけど、>>617-618は2パスすればいけるんでこれ論破しても意味ないから
C#でいけるのは複数ソースの同時コンパイル機能があるからじゃないぞ、単に解決順の問題だぞ
0630デフォルトの名無しさん2015/07/13(月) 20:51:18.51ID:/+jGDn94
ま、他の言語がヘッダーやプロトタイピング無しで実行可能なのだから
C++で出来無い理由は無いよね

ヘッダーやプロトタイピングが未だに存在することの積極的な意味は何なんだろう?
0631デフォルトの名無しさん2015/07/13(月) 21:01:08.49ID:cqAtn6Bc
dllやlibを使うために必要
0632デフォルトの名無しさん2015/07/13(月) 21:34:55.11ID:p5CUZ6+O
要らないだろ
前方参照を止めるにはコンパイル済みバイナリにAST情報を持たないといけない
それができればdllを使うのにヘッダーファイルなんか不要
0633デフォルトの名無しさん2015/07/13(月) 21:40:59.64ID:/+jGDn94
>>631
libは知らんがdllはインターフェース情報提供機能が付いとるがな

VisualBasicはそれを使ってdllを組み込んどるぞ
0634デフォルトの名無しさん2015/07/13(月) 21:52:26.85ID:YJ7kBspy
コーヒーフイタ
0635デフォルトの名無しさん2015/07/13(月) 22:11:26.37ID:0L3Aegsb
エクスポートテーブルには何が書き込まれているのか
0636デフォルトの名無しさん2015/07/13(月) 22:13:20.28ID:cqAtn6Bc
>>633
引数の型の情報も入ってるの?
0637デフォルトの名無しさん2015/07/14(火) 03:33:11.06ID:myrBvFFH
typelibraryですねわかります
0638デフォルトの名無しさん2015/07/14(火) 12:01:41.75ID:izOjheDY
dll=アセンブリ
0639デフォルトの名無しさん2015/07/14(火) 12:02:21.27ID:izOjheDY
しまった、.Netをつけなきゃ冗談にもならなかった
0640デフォルトの名無しさん2015/07/14(火) 12:37:40.50ID:i07Qd/9G
つまりc++はVS以下って事ですね
0641デフォルトの名無しさん2015/07/14(火) 16:59:49.32ID:rkpz8f5t
つまんね
0642デフォルトの名無しさん2015/07/17(金) 08:07:25.90ID:6TGdteu7
DLL=ファイルの拡張子
中身は海の物とも山の物とも
0643デフォルトの名無しさん2015/07/17(金) 08:25:49.02ID:Qe5AklCd
DLLがとれるのは
大西洋!(ばっ
0644デフォルトの名無しさん2015/09/06(日) 15:44:07.39ID:zOKUDR9w
ネタがないんだが、再来月になったら何かネタ出てくるのかな
個人的にはコルーチンに期待してる
0645デフォルトの名無しさん2015/09/20(日) 22:58:03.31ID:ELqIl0hw
std::queue、std::stackにbegin endが追加されるんだってね
0646デフォルトの名無しさん2015/09/21(月) 00:23:58.26ID:a3EaoSZA
へー
そんなことよりユー、
queueのContainerをpublicにしちゃいなよ
0647デフォルトの名無しさん2015/09/21(月) 00:28:28.72ID:C/PElB1R
それは本末転倒だろう
0648デフォルトの名無しさん2015/09/22(火) 20:42:45.81ID:8KGIzFka
C++は工夫しやすい
0649デフォルトの名無しさん2015/09/22(火) 22:33:13.52ID:Mc6udnQt
protected Container c; とかいう地雷
0650デフォルトの名無しさん2015/09/23(水) 00:13:55.42ID:TLLF1cyb
>>647
分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計の方が変だろう
begin/endなんてもはやアダプターじゃなくてコンポジションの発想
0651デフォルトの名無しさん2015/09/23(水) 05:56:12.60ID:sl1FEDPC
>>650
アクセスをあえて制限する設計にしてるんだが
制限されたくなければ元のコンテナ自身を使えばいいだろう
単にqueueって名前が欲しければ今ならエイリアステンプレートがあるからそれを使えばいい
0652デフォルトの名無しさん2015/09/23(水) 06:40:39.84ID:nPFFi/Oi
>制限されたくなければ元のコンテナ自身を使えばいいだろう

へー、どうやって?
0653デフォルトの名無しさん2015/09/23(水) 06:45:32.87ID:sl1FEDPC
queueならデフォルトのコンテナはdequeだから
deque使えばいいんじゃない?
0654デフォルトの名無しさん2015/09/23(水) 07:00:49.80ID:nPFFi/Oi
>>653
>分類がアダプターなのにコンテナーにアクセスする手段を提供しない糞設計
 ↓
>元のコンテナ自身を使え

俺コンテナーにqueueをアダプトさせてFIFOとして使いつつ
もとの俺コンテナーも操作したいんだろ?
嫌な使うなとはこれ如何に
0655デフォルトの名無しさん2015/09/23(水) 07:03:36.94ID:qfkgp73Y
それこそ俺コンテナそのまま使えばええやん…
0656デフォルトの名無しさん2015/09/23(水) 07:14:20.75ID:sl1FEDPC
>>654
俺コンテナには
empty
size
front
back
push_back
pop_front
が実装されてるんだからqueueなんて被せずにそのまま使えばいいだろ
0657デフォルトの名無しさん2015/09/23(水) 11:32:18.96ID:nPFFi/Oi
おやおや、コンテナーでなくコンテナーアダプターの名を冠するクラスに
Containerへのアクセス手段が無いことの是非だったのに、話のすり替えですか
0658デフォルトの名無しさん2015/09/23(水) 11:37:53.83ID:sl1FEDPC
是非ならそんな機能は必要ないで一貫している
0659デフォルトの名無しさん2015/09/23(水) 11:42:36.88ID:qfkgp73Y
設計と称して意味のない糞を積み重ねてそうなやつだなぁ
0660デフォルトの名無しさん2015/09/23(水) 11:56:29.87ID:GrwEgYS1
ququeを使っていて元のコンテナの関数を呼ばなきゃ困る状況がそもそもおかしい
0661デフォルトの名無しさん2015/09/23(水) 13:21:00.12ID:nPFFi/Oi
>>658
でもその根拠が出せないんだろ低能は
アダプターである以上コンテナーの各要素にアクセスしたければ
基となっているコンテナーを使うのが自然なのだが
馬鹿には難しかったかな
0662デフォルトの名無しさん2015/09/23(水) 13:34:07.40ID:vCV7DdUW
反論できないからバカがレッテル張りに逃げたな
情けない
0663デフォルトの名無しさん2015/09/23(水) 13:42:19.52ID:sl1FEDPC
>>661
>制限されたくなければ元のコンテナ自身を使えばいいだろう
>コンテナーの各要素にアクセスしたければ基となっているコンテナーを使うのが自然なのだが
俺が言ってることと同じじゃねーか
アホらしい
06646612015/09/23(水) 14:13:34.93ID:IdB+1WFh
>>663
表現がおかしかったわ
「(protectedで持ってる)基のコンテナーを必要に応じて使うのが」
って意味だ

protectとして持ってる時点でqueueに規定されたメンバー関数以上に基のコンテナーにアスセスしたい可能性を考慮しているのは明らかなのだが
0665デフォルトの名無しさん2015/09/23(水) 15:12:20.85ID:1nbCBLRf
ISO標準化委員会ってサボってない?
17はベータなので20までに考えればよしw
的に手を抜いてる気がするんだけど
0666デフォルトの名無しさん2015/09/23(水) 18:10:20.77ID:CGnTB/Fy
ワザワザ特定用途向け制限を掛けたクラスを使っておいて「制限が邪魔だから中身晒せ」とかアホかと
0667デフォルトの名無しさん2015/09/23(水) 18:11:42.12ID:Wyd23K9z
無理に新機能を考え出すことが仕事ではないし
もうこれ以上仕様を複雑にして欲しくないという考えもある
0668デフォルトの名無しさん2015/09/23(水) 18:41:20.94ID:dN3Md19M
仕様が複雑なのは確かに嫌だが、それだけ細部に渡りよく考えられているとも言える
0669デフォルトの名無しさん2015/09/23(水) 19:50:47.80ID:M/UFFhhb
やり過ぎ感もあるけど。覚えるのと機能が盛り込まれるのとどっちが早いか?
0670デフォルトの名無しさん2015/09/24(木) 23:16:22.80ID:johpD7Pz
学習と機能追加が拮抗していたら
新たに学習することが不可能な言語
つまりC++はクソ
0671デフォルトの名無しさん2015/09/25(金) 00:26:55.06ID:ctMDjOwA
完璧に学習を完了しなければコードを書き始めてはいけないのもc++の辛いところだな
学習と並行しようものなら指からエラー吐いて死ぬ
0672デフォルトの名無しさん2015/09/25(金) 08:18:45.92ID:tSApNX4H
新機能はツールかなんか書くときに試せばいい。
本番コードは試用済みの範囲で書く。
0673デフォルトの名無しさん2015/09/25(金) 08:51:08.73ID:1Sci0ai7
そろそろさ、c++は仕様を分割してもいいと思うの
少なくとも教科書レベルではさ
理想的には言語レベルで分割されてる方がいいんだろうけどね


アプリケーションプログラマはまずこの範囲を勉強しなさい

ライブラリやフレームワークのプログラマはここまでは知っておく事

カーネルやドライバ書く人は、使っていい機能と使ってはいけない機能の把握と
この範囲の機能を詳細に把握しとく事


とか、
0674デフォルトの名無しさん2015/09/25(金) 09:23:03.93ID:TiOImkoB
サブセット作るとスッポスッポ先生が怒りで禿げ上がる
0675デフォルトの名無しさん2015/09/27(日) 10:37:21.39ID:P22Nc8Qh
EC++がカスだっただけで、サブセット作ること自体が悪いとは思わないけどなあ
そもそもあれサブセットになってねえし
0676デフォルトの名無しさん2015/09/27(日) 20:29:40.62ID:PiG+2JjX
分割ったって、入り組んでるからなあ
正規表現ライブラリは使わない人には不要とかなら簡単だけど、
&と&&の違いを勉強しなくていいような分割ってどうやるのよ
0677デフォルトの名無しさん2015/09/27(日) 20:30:21.61ID:PiG+2JjX
なんかsageが入ってなかった、スマン
0678デフォルトの名無しさん2015/10/03(土) 04:08:11.52ID:V9fK1jG1
2015-09 mailingから文書番号の振り方変わったのか
0679デフォルトの名無しさん2015/10/17(土) 11:42:11.79ID:eobsIaaP
C++11で止めてほしかった
どんどん新しいの出てきてわけわからん
0680デフォルトの名無しさん2015/10/17(土) 13:50:07.50ID:5Tc8rVn8
勉強するの止めたらエンジニアとして終わってるよね
0681デフォルトの名無しさん2015/10/17(土) 17:00:23.36ID:2beLGnBn
実装されて仕事で使えるまでかなり時間が掛かる。複数人プロジェクトだと新しい技術が使用禁止になる事もある
0682デフォルトの名無しさん2015/10/17(土) 17:33:18.43ID:Bi5hrpIG
勉強なら、C++なんかより他にやったほうがいいのはいくらでもあるしな……
0683デフォルトの名無しさん2015/10/17(土) 17:37:53.61ID:CwjAOs6z
去年の保守案件で環境がVC6だったわ
0684デフォルトの名無しさん2015/10/17(土) 17:39:07.67ID:2XpKsNEE
時間が経てば先人が学習コストに見合うと判断した機能だけを享受できる
しかしその先人が
0685デフォルトの名無しさん2015/10/17(土) 18:07:05.12ID:2beLGnBn
ネットに接続可能な環境でVC++6を使うには7のバーチャルPC内にネットワーク閉じたXP以下を入れるしかないけど
0686デフォルトの名無しさん2015/10/17(土) 18:16:37.88ID:CwjAOs6z
開発環境も実機もXPだったが?
セキュリティなんて知らない
0687デフォルトの名無しさん2015/10/18(日) 02:12:27.68ID:5Xr103kg
現実って怖い
0688デフォルトの名無しさん2015/10/18(日) 02:15:04.58ID:ZzLdZTYh
先日医者に行ったらXPが現役で動いてたぞ
0689デフォルトの名無しさん2015/10/18(日) 02:57:00.85ID:ok+rssbA
スレチになるけど現場の実態なんてこんなもん

5年位前だが客先でwin3.1が動いてた
去年〜今年でwin2000からリプレースした所もある
pc98系統の更新案件もあった(受注したかは知らない)
測定装置の付属PCはXPが現役
ISAバスで機械制御してるのもまだ生きてるはず
0690デフォルトの名無しさん2015/10/18(日) 05:04:59.10ID:RA8eISXe
インターネットにさえ繋がなければ古いシステムでも問題ないだろう。
出力のみで何か入れるとかしなければ更に良い。
0691デフォルトの名無しさん2015/10/18(日) 09:19:50.27ID:/sWHFkJh
ボイラーの管理ツールがDOSだったな
フロッピードライブが壊れたっていわれたけど、PC9801だからどうにもならなかった
でもドライブクリーニングしたら動いたから、早くリプレースしてほしいわ
0692デフォルトの名無しさん2015/10/18(日) 13:05:42.92ID:Q87slw7q
現役乙
0693デフォルトの名無しさん2015/10/21(水) 09:40:43.68ID:ZelGeJhk
C++14って他人に言う時は
シープラプラフォーティーンって言うの?
0694デフォルトの名無しさん2015/10/21(水) 10:42:45.49ID:zPyN71xI
シープラスプラスジュウヨン
0695デフォルトの名無しさん2015/10/21(水) 10:48:24.62ID:t8SS3rgX
しーぷらぷらいちおつ、じゃなくて、しーぷらぷらいちよん
0696デフォルトの名無しさん2015/10/21(水) 13:40:40.38ID:YvlNWtLN
しーぷらたすいっちょん
0697デフォルトの名無しさん2015/10/21(水) 13:54:55.37ID:3W0cBDQG
ちんこぷらぷら い〜よ〜
0698デフォルトの名無しさん2015/10/24(土) 01:02:19.88ID:ACA6GzH5
initializer_listのサイズもテンプレートパラメタだったら少しよかったのに
まあarrayでいいんだけど、いちいちmake_arrayって書きたくないから

tupleやarrayのuser defind literalsって書けないもんかね
0699デフォルトの名無しさん2015/10/24(土) 01:47:58.60ID:ACA6GzH5
> tupleやarrayのuser defind literalsって書けないもんかね
しまった普通にconstexpr関数で書けばいいのだ
0700デフォルトの名無しさん2015/10/24(土) 03:00:35.71ID:3cj2wJ90
>>698
> initializer_listのサイズもテンプレートパラメタだったら少しよかったのに
なんで?
0701デフォルトの名無しさん2015/10/24(土) 08:41:17.40ID:9vIUQxwG
>>700
initializer_listを引数にとるconstexpr関数の中で、static_assert(il.size() > 0)とか
したかったものだから。
でも寝てる間に気がついたけど、これは休むに似たりという奴だ……

気にしてくれてありがとう。
0702デフォルトの名無しさん2015/10/24(土) 11:40:26.94ID:spMGZ8yf
>>701
C++14からinitializer_listのコンストラクタもsize()も、というかメンバ関数全部constexprだぞ
0703デフォルトの名無しさん2015/10/24(土) 12:23:04.29ID:9vIUQxwG
>>702
それが、関数引数になると定数式じゃなくなっちゃうんですよ。
http://qiita.com/kktk-KO/items/64b693c84ca0ee4ecbe0
http://stackoverflow.com/questions/8936549/constexpr-overloading

constexpr auto f(const initializer_list<int>& a /*aは定数式じゃない*/) {
static_assert(a.size() > 0); // NG: aが定数式じゃないからa.size()も定数式じゃない
}
0704デフォルトの名無しさん2015/10/24(土) 14:38:22.93ID:9vIUQxwG
まあコンパイル時に計算されなくても大した計算量じゃないんですけどね。
constexpr関数はconstexpr関数しか呼べないから気になります。
0705デフォルトの名無しさん2015/10/25(日) 18:43:13.64ID:zgU7ZYeY
Konaミーティングおわた
0706デフォルトの名無しさん2015/10/25(日) 19:22:58.82ID:AAElqWBN
そうかそうか、誰か結果をまとめてくれ
0707デフォルトの名無しさん2015/10/27(火) 00:18:14.50ID:MnWxRx4S
英語だけど
https://www.reddit.com/r/cpp/comments/3q4agc/c17_progress_update_oct_2015/
0708デフォルトの名無しさん2015/10/27(火) 03:28:09.21ID:zSXYbgdR
うむ、ご苦労
だがモジュールとコルーチンがどうなったのかよくわからんぞ
0709デフォルトの名無しさん2015/10/27(火) 04:57:08.40ID:kXLLNmC/
Effective modern c++の日本語版が出てるね
0710デフォルトの名無しさん2015/10/28(水) 12:45:31.90ID:ZMMpG7qX
日本語版ダメ、ゼッタイ
0711デフォルトの名無しさん2015/10/28(水) 14:27:47.90ID:KgN4RL86
>>710
日本語版良くないの?

それと、まだ未読なんだけど
前作のEffective c++を置き換えるものなのか
両方とも読むべきものなのか
どっちだろう?
0712デフォルトの名無しさん2015/10/28(水) 14:44:03.47ID:uVyj7vhU
コカイン女性タレントってだれだろ
0713デフォルトの名無しさん2015/10/28(水) 19:23:16.84ID:50amutaY
両方読むべき
0714デフォルトの名無しさん2015/10/29(木) 12:44:41.87ID:jYkr1Igb
多分置き換えにはならないと思う
11と14の機能に絞った話だったはずだから
0715デフォルトの名無しさん2015/10/29(木) 12:51:42.42ID:jYkr1Igb
あとクソ訳かどうかは第一章を読んでから判断しても遅くないと思う
http://www.oreilly.co.jp/pub/9784873117362/ch01.pdf
0716デフォルトの名無しさん2015/10/30(金) 23:43:48.40ID:osGQlyPp
「ユニヴァーサル リファレンス」
草生えそうになったわ
0717デフォルトの名無しさん2015/11/11(水) 18:58:54.13ID:ZfyuZUZx
https://isocpp.org/blog/2015/11/kona-standards-meeting-trip-report

来年6月の会議でC++17の機能が固定される予定だと
0718デフォルトの名無しさん2015/11/11(水) 23:36:22.21ID:Qsz2Nv9Y
モジュールシステム入ってほしいなぁ
0719uy ◆Qawu9.2l1E 2015/11/12(木) 00:16:31.43ID:vfLy0hrq
ただのプチ強いC言語として使えば良かったのに
他の機能を見なかった事にすれば良かったのに

欲を出して自分なら扱えるんだ自分は頭が良いんだーって
数千〜数万時間という無駄な時間を浪費していく人がいるのはこのスレですか?

あたな方の毛根は悲鳴を上げてます
0720uy ◆Qawu9.2l1E 2015/11/12(木) 00:25:04.64ID:vfLy0hrq
嘘です C++やりたいです
0721デフォルトの名無しさん2015/11/12(木) 00:25:06.56ID:YhDjZDip
もうこんな時間か。 毛根だけに。
0722デフォルトの名無しさん2015/11/12(木) 03:35:28.98ID:lozeCk1H
次々回のミーティングで機能fixする予定なんだとしたら中規模以上の
機能追加は次のミーティングまでに提案書が出されたものまでかな
0723デフォルトの名無しさん2015/11/12(木) 22:24:16.57ID:GaR/agwA
もう少しだけシンタックスが汚くならないようにって視点があれば良かったのにね。
0724デフォルトの名無しさん2015/11/13(金) 00:50:09.24ID:6HVQn7jH
C++学園入学願書締切間近
0725デフォルトの名無しさん2015/11/14(土) 00:00:54.07ID:iREj21cb
ところでUTF16型が追加されてxerces-c++は変わったかな?
いつも文字列変換で苦労してたからなぁ
0726デフォルトの名無しさん2015/11/17(火) 19:34:36.01ID:ue9cUm18
2015-11 mailing is available
0727デフォルトの名無しさん2015/11/19(木) 22:58:23.47ID:co3yp3cP
> 2015-11 mailing
何か浮かれたpaper多くないか
0728デフォルトの名無しさん2015/11/19(木) 23:27:16.67ID:C3NAuofd
>>727
「浮かれた」の意味が分からん。具体的に頼む。
0729デフォルトの名無しさん2015/11/20(金) 00:43:26.57ID:Cs4o/AZj
単なる個人の感想なんだが
P0157R0 Handling Disappointment in C++
> ガッカリを扱う方法
> 関数が失敗したとき、我々はガッカリする。
テクニカルタームとしてdisappointmentってどうよ

P0172R0 Abominable Function Types
> 型システムの片隅には暗闇がある。それを知るものは限られている……
> 忌まわしき関数型
ホラーかよ

あとpaperじゃないけど
P0092R1 Polishing
タグをエスケープし忘れ、磨くって何をだよ
しかもisocpp.orgにガッツリそのまま転記だわざとか!

と突っ込む回数がふだんより多かったんだ
0730デフォルトの名無しさん2015/11/20(金) 05:23:18.46ID:+bHteJqq
でもまぁ、コンピュータ用語なんて昔から恥ずかしい言葉が多いよな
今はガッカリでもそのうちテクニカルタームとして定着する物も出てくるだろ
0731デフォルトの名無しさん2015/11/20(金) 14:12:54.71ID:AMmCkZV3
新しいC++で、ラムダの引数の型をautoに出来る機能が有るじゃないですか
[](auto a) -> void {}
こんな感じの奴
で質問なんだが
テンプレート関数でもこういう書き方できるの?
0732デフォルトの名無しさん2015/11/20(金) 17:06:48.69ID:U0800zwR
template<class T>
auto func() -> void {}
でいけね
0733デフォルトの名無しさん2015/11/20(金) 17:15:28.09ID:AMmCkZV3
そうじゃなくて、そのtemplate<>とか書くのが面倒くさいからラムダみたいに
かけないのかな〜って
auto func( auto arg ) -> void{}
って
0734デフォルトの名無しさん2015/11/20(金) 17:28:04.32ID:09So3vc/
出来ません
0735デフォルトの名無しさん2015/11/20(金) 21:12:56.27ID:lBI2kOuM
ひょっとしてpaperって来るもの拒まずで簡単な審査みたいなものってないのかな
0736デフォルトの名無しさん2015/11/21(土) 00:07:18.37ID:uQbElO9Z
>>733
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 のほかに制約を定義したコンセプト名も型名のかわりに使える。
0737デフォルトの名無しさん2015/11/21(土) 07:13:41.99ID:GohpmGDs
それより空mainの戻りにauto使えるようにしてくれよ
auto main() {}
0738デフォルトの名無しさん2015/11/21(土) 07:47:40.78ID:UH5fCNhv
タイプ量増えてる
0739デフォルトの名無しさん2015/11/21(土) 12:26:37.50ID:+qmJr5EI
>>738
ワロタ
確かに
0740デフォルトの名無しさん2015/11/21(土) 12:56:36.38ID:TE1AXQwv
文字を1文字でも減らすことが至上と考えてる奴は間違いなく低能
0741デフォルトの名無しさん2015/11/21(土) 21:32:05.40ID:rACYfPqD
欧米とは違い、日本ではブラインドキー入力すらできないような奴が
職業プログラムになるのが普通だからしょうがない。
だからドカタって呼ばれる
0742デフォルトの名無しさん2015/11/22(日) 21:01:10.56ID:vYPMz+tE
>>740
では型が規格で決まっていて変わることがないmainの戻り値の型をautoにする利点を挙げてください。
デメリットしかないからそれを挙げましたが、低脳ではないあなたであれば高尚なメリットを挙げられるんですよね?
0743デフォルトの名無しさん2015/11/22(日) 21:06:46.49ID:yfhDplVV
短ければいいというもんでもないけど、
C++は冗長な記法が多すぎでしょ。
template <typename T, typename U>
とかクッソ面倒だし、単に
<T, U>と書かせろと。
さらにテンプレートクラスだと、メンバ関数の実装全てに
これ書かないといけないんだぜ?
もう発狂しそうになるよ
07447402015/11/22(日) 21:14:31.26ID:m3OPFIIm
>>742
知るかボケ>>737にきけよ低能
やっぱ1文字でも減らすことが至上と考えてる奴はカスだな
0745デフォルトの名無しさん2015/11/22(日) 21:17:54.84ID:vYPMz+tE
>>743
template<class T>の方が短くていいよ!

> さらにテンプレートクラスだと、メンバ関数の実装全てに
> これ書かないといけないんだぜ?
> もう発狂しそうになるよ

クラス内でusingかtypedefで定義すればいい
標準ライブラリでもvalue_typeとかiteratorとかで使われてる方法
0746デフォルトの名無しさん2015/11/22(日) 21:18:16.01ID:vYPMz+tE
ただ煽りたかっただけの低脳かよ
0747デフォルトの名無しさん2015/11/22(日) 21:25:56.19ID:m3OPFIIm
文字数減らすためにclassじゃないものまでclassと書くんじゃねーよ
しかも>>743の日本語理解できてねーし
やっぱ1文字でも減らすことが至上と考えてる奴は低能だな
0748デフォルトの名無しさん2015/11/22(日) 21:28:33.14ID:vYPMz+tE
>>747
標準ライブラリのテンプレート使ってるクラス一つでも見てから言ってくださいね
0749デフォルトの名無しさん2015/11/23(月) 00:38:43.39ID:kLzVjV7O
この流れで言うと荒れそうだけど
キーワードが足りないって危機的状況だよな

全部contextual keywordにならないかな
0750デフォルトの名無しさん2015/11/23(月) 00:40:57.08ID:gt57xMsi
なもんでソフトキーワードってのが提案されてる
0751デフォルトの名無しさん2015/11/23(月) 00:55:23.95ID:kLzVjV7O
std::awaitとかか
うーむ
むむむ
0752デフォルトの名無しさん2015/11/23(月) 07:04:07.85ID:5SRyJk37
>>742
本題じゃないが、main()の戻り値と引数は「決めない」のが言語規格じゃなかったっけ?
確かmain()はプロトタイピングすらされてなかったと思うが?
0753デフォルトの名無しさん2015/11/23(月) 07:58:14.11ID:kEUHEwN+
>>752
http://www.kijineko.co.jp/tech/superstitions/void-main.html
0754デフォルトの名無しさん2015/11/23(月) 17:32:57.16ID:vMFz+wxS
char main[]="\x090\x090\x090\x090";
0755デフォルトの名無しさん2015/11/23(月) 18:43:59.09ID:j/voQwFM
>>750
よく読んだら、今後の(awaitとか使わない)ソースでは、普通のキーワードと変わらないんだ
いいねソフトキーワード

あとは将来キーワードに召し上げられないように、俺ソースの命名規約を工夫するか
cの代わりにkとかwの代わりにvvとか
0756デフォルトの名無しさん2015/11/23(月) 18:49:51.33ID:JoHLcQKX
>>755
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". ...
0757デフォルトの名無しさん2015/11/23(月) 18:58:22.42ID:j/voQwFM
>>756
むむむ ありがとう
今後並列処理関係でキーワード増えそうな気がするんだが大丈夫かな……
0758デフォルトの名無しさん2015/11/23(月) 19:09:48.92ID:1Nk8DAEn
>>743
マジレスするとtypename以外にも変数受けられるから…。
0759デフォルトの名無しさん2015/11/23(月) 19:12:39.87ID:y+4gfsEr
なんだ、すでにrejectされてたのか
この棄却理由はどういう意味だろう
直訳だと「C++にキーワードを追加する難しさはひとつの機能(特徴)だ、という原則」?
0760デフォルトの名無しさん2015/11/23(月) 19:31:36.99ID:j/voQwFM
”基本的な理由は、「『C++言語へのキーワードの追加』をC++自身の機能とする」ことは
困難だから……”
と読んだんだが、自分もよくわからぬ
0761デフォルトの名無しさん2015/11/23(月) 20:43:39.20ID:b98i53Mh
アプリケーションの互換性の問題からキーワードの追加は最後の手段なんだよね
0762デフォルトの名無しさん2015/11/23(月) 20:58:02.32ID:y+4gfsEr
ああ、なるほど、「キーワードがそう簡単には増えないという特徴」という意味か
たしかにソフトキーワードはusing namespace std;のときダメじゃんって話はあったな
0763デフォルトの名無しさん2015/11/23(月) 21:26:47.34ID:vMFz+wxS
exportさんとregisterは幸せに生まれ変われるのだろうか
0764デフォルトの名無しさん2015/11/23(月) 21:32:32.00ID:zEOitApd
autoさんは新たな存在に転生した
0765デフォルトの名無しさん2015/11/23(月) 23:37:32.98ID:iUZSUGdH
autoさんは、そういや昔は別の意味だったねwとか思うレベル
0766デフォルトの名無しさん2015/11/24(火) 00:30:52.62ID:/Po/Pqa3
>>758
そんなことは知ってる。
でもたいていの場合は不要でしょ。
ふつうのジェネリクスのときは
<T, U>
で済むようにして
変数を受け付けるときだけ特殊なキーワードを使えばいい。
<T, var N: Int>
みたいに。
あるいは、ジェネリクスと変数は本来別物だから、完全に分離して、
変数は別のシンタックスを用意すればOK。
class StaticArray <T> [_ N: Int] { ... }
インスタンス化は
var nums = StaticArray<Int>[16]() // 大きさ16のInt配列
これらを一緒くたにしてテンプレートという機能にぶち込んでしまったのがそもそもいけない。
0767デフォルトの名無しさん2015/11/24(火) 01:04:19.40ID:XeCWO9iV
>>766
余計わかりにくいわ
0768デフォルトの名無しさん2015/11/24(火) 02:24:38.78ID:SGPcTC2U
変数だってよwプップップー
0769デフォルトの名無しさん2015/11/24(火) 13:55:40.92ID:ge2Zja90
どちらかというとテンプレートなんて作らずにマクロを強化して欲しかった・・・・・・
0770デフォルトの名無しさん2015/11/24(火) 13:56:25.58ID:PwKZ6cFL
マクロこそいらん
0771デフォルトの名無しさん2015/11/24(火) 16:36:45.34ID:ge2Zja90
Cプログラマは非力で使いにくく不自由なマクロしか知らないからね。
その非力なマクロでさえ使い所を弁えれば役に立つのだけど。

Common LispやScheme(version 6以降)なんかの強力なマクロがCにあればなぁと思ってる。
c++のテンプレート以上に強力で、使いやすく、そして自由な奴。
0772デフォルトの名無しさん2015/11/24(火) 17:36:15.30ID:UCeGX0YN
common lispの汎変数はテンプレートもどきのなかでも実現手段は最悪だろう。
0773デフォルトの名無しさん2015/11/24(火) 18:47:37.47ID:k/WtYpn0
>>771
CやC++へのトランスコンパイル言語 Nim (元 Nimrod) が、
文法に無理させることなく強力なマクロを実現させてる。まだ未実装な部分もあるが。
0774デフォルトの名無しさん2015/11/24(火) 18:58:34.75ID:FDR66s0Y
>>771
lispのようなマクロが他の言語に採用されない理由読んだら?
0775デフォルトの名無しさん2015/11/24(火) 21:25:03.33ID:2wn8VfxF
Rust のマクロは Scheme 的。
0776デフォルトの名無しさん2015/11/24(火) 22:25:27.86ID:3ku7vQ9p
>>771
健全なマクロは確かにときどき欲しいと思うね
制御文を拡張したいと思うときがある
0777デフォルトの名無しさん2015/11/24(火) 22:28:18.36ID:zyV4TR/k
糞マクロを布教する高橋アキラは死んでよし
0778デフォルトの名無しさん2015/11/24(火) 22:54:11.75ID:/Po/Pqa3
>>776
クロージャで良くないすか?
0779デフォルトの名無しさん2015/11/24(火) 23:25:47.47ID:3ku7vQ9p
>>778
クロージャで、というとこんな感じでしょうか

auto if_(bool c, auto t, auto f) {
return c ? t() : f();
}
if_(x==y, [](){ return 1; }, [](){ return 2; });

健全なマクロがもしあればもうちょっと短く出来るな、程度の欲しさですな
昔はプリプロセサマクロでしか書けなかったんだよなあ……
ラムダにはうっとりだ
0780デフォルトの名無しさん2015/11/24(火) 23:38:17.82ID:+Jid013x
不健全なマクロでどうしても欲しいのがアナフォリックマクロ。
aif(get(key)) {
it->print();
}
みたいに、ifの中身をitに束縛してくれる感じのが欲しい。
0781デフォルトの名無しさん2015/11/25(水) 00:07:27.63ID:37RYBFHu
>>780
optionalが近いか?

if (auto t = something_returns_optional()) {
 use(*t);
}
0782デフォルトの名無しさん2015/11/25(水) 05:44:52.88ID:q0VxF2Ob
>>779
SwiftのTrailing Closureみたいなのがあるといいんだろうな
Swiftでは関数の最後の引数がClosureの場合、引数リストの外に出せる場合がある:
func if_(condition: Bool, (Void) -> Void) -> Void { ... }
これの呼び出しは
if_ (x==y, {
 
})
でも
if_ (x==y) {
 
}
でもOK
返り値も返すことができて、そこからさらにチェーンすることもできるので
if_ (x==y) {
 
} .else {
 
}
みたいなオレオレif文も作れるよ
0783デフォルトの名無しさん2015/11/25(水) 11:10:38.70ID:n/g2lh6I
>>781
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));
0784デフォルトの名無しさん2015/11/25(水) 21:24:08.35ID:rSYqRV3W
>>783
たぶん、できないんじゃないかな
&&をオーバーロードすると短絡評価じゃなくなっちゃうし
アナフォリックandっていうのか
ネストが深くならなくて格好いいねえ
0785デフォルトの名無しさん2015/11/26(木) 23:17:49.61ID:fIIo+HYG
早くこれの続きが来ないかな
Overload resolution
https://akrzemi1.wordpress.com/2015/11/19/overload-resolution/

これが15年ぶりにアップデートされるかと思うとわくわくする
Why Not Specialize Function Templates?
http://www.gotw.ca/publications/mill17.htm
0786デフォルトの名無しさん2015/11/26(木) 23:28:58.12ID:etcv8G3e
掲示板はお前のオナニーURLを貼り付けるところじゃない
荒らしは去れ
0787デフォルトの名無しさん2015/11/27(金) 01:05:28.82ID:yys8TVN5
あれえーw
C++17でConceptが入るから関数オーバーロードの仕方が変わるって
スレに沿った話題なのに
理解できないからって荒らし扱いww
0788デフォルトの名無しさん2015/11/27(金) 01:09:04.64ID:yys8TVN5
いや知らないなら知らないでいいけどさw
知ったかぶりはよくないと思うよ
0789デフォルトの名無しさん2015/11/27(金) 23:24:52.69ID:9ngSAGXd
これみよがしに英文リンク貼り付けるのがいけない。
ちゃんと日本語のリンクを貼って、どうぞ
0790デフォルトの名無しさん2015/11/27(金) 23:53:12.83ID:bxU365jm
>>789
規格も関連文書も全部英文なのに、何言ってんだ?
「ちゃんと」の基準がさっぱりわからん。
0791デフォルトの名無しさん2015/11/28(土) 00:00:51.96ID:rDr0w/HG
自分の知ってるオナニーサイトのURLを
世の中の全員が知っていて当然のような書き方
で貼り付ける人は高確率でアスペ
0792デフォルトの名無しさん2015/11/28(土) 00:04:27.13ID:UH2RVtiD
785がチラ裏としてケチを付けられるのはわかるが、URLにケチを付けるのはおかしいだろ。
0793デフォルトの名無しさん2015/11/28(土) 02:23:48.80ID:UmyVHocA
Why Not Specialize Function Templates?
を知らないってことは関数テンプレートの特殊化が使えてないってことなんだけどなw
そんなのが何でC++14に興味あるわけ?
C++98で十分じゃん
> 高確率でアスペ
仮にそうだとしても>>786は恥さらしの無知だよね
0794デフォルトの名無しさん2015/11/28(土) 08:04:32.62ID:0xj25Fro
「自分の知ってるサイトAを知らない人は理解してない人」
「サイトAを知らない人は無知・恥曝し」

こういうアホよくいるよな
しかも語尾に「w」が付いてることが多い
0795デフォルトの名無しさん2015/11/28(土) 08:44:25.72ID:mxbt4S4C
一旦落ち着け

っ std::terminate();
0796デフォルトの名無しさん2015/11/29(日) 03:55:36.08ID:nX6bK8c/
読まないで非難するのは不当だし、読んで分からなければ黙ってればいい。それだけ。
0797デフォルトの名無しさん2015/11/29(日) 06:46:28.40ID:ph4aH7Jo
チラ裏のリンク先を他人に読んでもらえるという思考がお花畑
0798デフォルトの名無しさん2015/11/29(日) 09:20:39.17ID:zeO3ugsW
全く読まずに批判するようなバカに合わせる道理も無いけどな
0799デフォルトの名無しさん2015/11/30(月) 00:22:59.43ID:Udb8DCP8
自分が理解できないから、C+;+のスレでC++の話するなってw
まあ馬鹿が馬鹿なのは当たり前だよな
0800デフォルトの名無しさん2015/11/30(月) 00:57:22.18ID:2FRuf8rI
C++98で吹いたwww
0801デフォルトの名無しさん2015/12/02(水) 01:50:59.86ID:zaOCqs+2
c++14でstd::mem_fnのコンストラクタ変わってるけど
メンバー関数のポインタを
template<class R,class T>
foo(R T::* pm)
で取れるようになったの規格のいつから?
clang3.4とgcc4.8の-std=c++03 ではなんの警告もなく通るけどMSVC2013じゃ通らん
あとこれテンプレートの型どうなってんの?
0802デフォルトの名無しさん2015/12/02(水) 12:19:23.31ID:BZQq0daR
最初のc++98からじゃないの
見慣れてないだけで特別ななにかがあるようには思えないし
ttp://codepad.org/Q1s6uKX9
0803デフォルトの名無しさん2015/12/02(水) 12:28:07.16ID:SG5bn8pD
>>801
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::*&
になるっぽい。

いつから書けるようになってるのかは今調べてる・・・・・・
0804デフォルトの名無しさん2015/12/02(水) 12:43:06.54ID:WGLqoqFk
VCで規格の事を考えてはいけない
0805デフォルトの名無しさん2015/12/02(水) 13:34:30.03ID:SG5bn8pD
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
0806デフォルトの名無しさん2015/12/02(水) 14:10:28.38ID:zaOCqs+2
>>802
f1そんな書き方出来るのね
だからf2のRは関数の型になるのか
知らなかった。サンクス
そしてMSVC死すべし

>>803
データメンバーはMSVC++2013でも通るんだけどね
0807デフォルトの名無しさん2015/12/02(水) 16:43:06.95ID:OBZqLDvp
今さらすぎる
0808デフォルトの名無しさん2015/12/03(木) 18:51:47.35ID:CB8nR693
このスレで最後にC++14/C++1zの話をしたのはいったいいつになるのか
0809デフォルトの名無しさん2015/12/03(木) 19:07:52.69ID:ndGhF5es
コンセプトはどうなったのか
0810デフォルトの名無しさん2015/12/03(木) 23:58:23.36ID:mzSrHInP
17に持ち越しです
0811デフォルトの名無しさん2015/12/04(金) 07:30:43.79ID:e+zKFYA8
Visual C++のベータにmoduleが来たらしいな
誰か試して教えてくれ
0812デフォルトの名無しさん2015/12/04(金) 10:38:18.04ID:RGw51yAh
http://kennykerr.ca/2015/12/03/getting-started-with-modules-in-c/来たぞ
0813デフォルトの名無しさん2015/12/04(金) 10:49:17.03ID:RGw51yAh
う、すまん「来たら教えて」と誤読してた
0814デフォルトの名無しさん2015/12/04(金) 23:50:34.71ID:ugYhy3h7
Visual C++でモジュール試した
散々クソ扱いされた今のC++のコンパイル&リンクの仕組みが
クソであることを再認識させられた
0815デフォルトの名無しさん2015/12/05(土) 00:59:27.31ID:e7gPFA0r
そんなによかったのか
0816デフォルトの名無しさん2015/12/05(土) 04:41:31.84ID:jW0axztk
ドラフト段階だからexperimentalなのかと思ったら
まだ使い物にならないからexperimentalだった
0817デフォルトの名無しさん2015/12/05(土) 07:43:05.11ID:TNqFjir/
相互参照も解決できないクソは要らん
それより子ちんちんはよ
0818デフォルトの名無しさん2015/12/05(土) 15:06:50.13ID:nVmh1Uw7
相互参照は解決できそうですか?
C++17に間に合わないのでは?
0819デフォルトの名無しさん2015/12/06(日) 08:31:34.88ID:B6wQTCue
相互参照を解決できないんなら
宣言と実装をひとつにできないやんけ
cppから互いのh見ないといかんやろ
VC糞すぎる
0820デフォルトの名無しさん2015/12/06(日) 13:20:06.96ID:OHUYOsyJ
class Hoge;
だけ書けばいいよね
0821デフォルトの名無しさん2015/12/06(日) 14:47:06.47ID:iutDeUPr
C#の書式で書いてるのか
0822デフォルトの名無しさん2015/12/06(日) 22:29:47.24ID:XiMnzaaH
標準ライブラリのmoveがnoexceptじゃないのは規格待たずにさっさとやってほしいなー
誰も困らないでしょ
0823デフォルトの名無しさん2015/12/07(月) 01:37:32.29ID:ENmwIuVj
現段階ではclass Hoge;すら動かない
0824デフォルトの名無しさん2015/12/09(水) 13:03:25.61ID:IXqPU77s
抽象クラスを切り出して
実クラスとコンストラクタをファクトリで隠蔽すれば逃げられるっしょ
0825デフォルトの名無しさん2015/12/12(土) 15:42:32.42ID:OMbug+9k
class A;
#include <B.h>
class A {
A& a;
};

と

class B;
#include <A.h>
class B {
A& a;
};

じゃいかんの?
実体を持たせたいって話だったらサイズ定まらないんだからどうやっても無理じゃないかな
0826デフォルトの名無しさん2015/12/12(土) 15:43:38.00ID:OMbug+9k
書き間違い
class A のメンバは B& b; ね
0827デフォルトの名無しさん2015/12/12(土) 15:58:10.85ID:npRd3MLZ
よくわからんが もじゅーるって中間ファイル作るの?
0828デフォルトの名無しさん2015/12/13(日) 05:43:09.04ID:JyylBzJi
標準委員はまっとうなコンパイラを自分らで作ってから標準化しろ。
0829デフォルトの名無しさん2015/12/13(日) 07:40:04.56ID:mzdnj3l/
class Aからclass Bのメンバ関数を呼び出す
class Bからclass Aのメンバ関数を呼び出す

これができない
0830デフォルトの名無しさん2015/12/13(日) 10:19:13.60ID:Wcw8JgGx
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

大変困ってます。先輩方ご教授のほどお願い致します。
0831デフォルトの名無しさん2015/12/13(日) 10:35:10.79ID:fD1PRCXr
>>826
そうすると規格の仕様定義がソースコードだらけになる
実装が仕様のECMAScript 6の様に
0832デフォルトの名無しさん2015/12/13(日) 11:29:25.24ID:YIi8S0oG
c++ですらない別言語のソース貼るな
0833デフォルトの名無しさん2015/12/13(日) 11:56:01.44ID:HelZ49Rj
コード上で使ってるオブジェクトも全部.Net Frameworkの奴だろ?
.Net側の使い方を探した方が早い
0834デフォルトの名無しさん2015/12/13(日) 12:48:03.70ID:Sn25ABdB
>>830
マルチポスト野郎なのでスルーで
0835デフォルトの名無しさん2015/12/13(日) 22:38:07.16ID:3ApC0baZ
>>827
Visual C++は専用のオブジェクトファイルができるようだ
0836デフォルトの名無しさん2015/12/14(月) 01:22:51.58ID:Xhld/+0h
Rustも1.5がでましたしそろそろ移植先として検討するための軽い学習始めても良さそうな気がする。
http://blog.rust-lang.org/2015/12/10/Rust-1.5.html
0837デフォルトの名無しさん2015/12/14(月) 01:30:48.82ID:A7WhCv85
rustはライブラリがまだ貧弱な印象
まあ、そこはFFIで補えって事なんだろうけど
0838デフォルトの名無しさん2015/12/15(火) 00:30:15.49ID:+QNyrCxt
幾ら良い言語だろうとMozillaが後釜な限りrustに移住とか無い
0839デフォルトの名無しさん2016/01/03(日) 23:49:34.32ID:n0RRADXj
スコット先生がインポってほんと?
0840デフォルトの名無しさん2016/01/04(月) 02:19:53.29ID:FlX08ahi
もうC++界隈から引退するってよ。
0841デフォルトの名無しさん2016/01/04(月) 08:17:34.99ID:dFEpTHdS
後ろ楯と言いたいのかな。
0842デフォルトの名無しさん2016/01/04(月) 13:02:58.09ID:4YgdLYhO
そろそろ C# や Java に奪われた失地を回復できそうな機能やライブラリは追加されたかね?
0843デフォルトの名無しさん2016/01/04(月) 14:06:34.94ID:3ZUvyneM
級者「C++全然わからんw」
中級者「C++全然わからんw」
上級者「C++全然わからんw」
標準化委員会「C++全然わからんw」
スコット「C++全然わからんのでもうやめるわw」
0844デフォルトの名無しさん2016/01/04(月) 14:23:47.74ID:x5rHK6YB
スコットさんは単なる駄文商人だからどうでもいい
0845デフォルトの名無しさん2016/01/04(月) 15:12:07.50ID:7pom0hWz
C++分からんという事はコンピュータが分かってない。プログラマは無理だろ
0846デフォルトの名無しさん2016/01/04(月) 17:01:44.28ID:N9vPeoWw
もともと、どんな機械語が生成されるか見えそうなくらい低レベルなC言語をベースにしていたのに、
C++は逆に、ソースコードから動作を想像するのがもっとも困難な言語になってしまったなぁ。
どうしてこうなった。
0847デフォルトの名無しさん2016/01/04(月) 17:14:02.24ID:x5rHK6YB
んなこと言ってる奴はC++触るなバーカ
0848デフォルトの名無しさん2016/01/04(月) 17:48:30.86ID:N9vPeoWw
逆に、そのへん問題意識を持っていない奴はC++で他人に読ませるコードを書くな。迷惑だから。
自分ひとりでやってる分には好きにしろと思うが。
0849デフォルトの名無しさん2016/01/04(月) 18:04:53.45ID:x5rHK6YB
そんなもんどの言語でも同じことだわ
自分の能力の無さをC++のせいにするな
0850デフォルトの名無しさん2016/01/04(月) 18:43:21.19ID:PWQd7yEq
>>849が正論すぎて感動した
0851デフォルトの名無しさん2016/01/04(月) 19:11:11.24ID:mH8w9NDh
C++は異常に複雑だと思うけど
全てを把握してる人なんていないでしょ
0852デフォルトの名無しさん2016/01/04(月) 19:11:23.16ID:XdSW49u/
コードが汚いか、コードを読む知識が足りない
0853デフォルトの名無しさん2016/01/04(月) 19:22:17.78ID:sMTgy5ar
C++の仕様で大変複雑なのがオーバーロード
13節を読破していい気になっていたら
テンプレートのパーシャルオーダリングで挫折した
0854デフォルトの名無しさん2016/01/04(月) 22:02:43.29ID:MCDNvKGQ
スコットが引退するんだったら
ホモダチの議長も引退しないといかんな
0855デフォルトの名無しさん2016/01/05(火) 03:51:05.13ID:Gtg7XWw8
バカがC++を触ると決まって大惨事になる
0856デフォルトの名無しさん2016/01/05(火) 08:38:53.15ID:Uwspl53Y
>>846
具体例を。
0857デフォルトの名無しさん2016/01/05(火) 20:28:32.10ID:0kQoSY1y
バカが触っても大惨事にならない言語はあるのだろうか
0858デフォルトの名無しさん2016/01/05(火) 20:31:35.16ID:vJsW+BrL
python
0859デフォルトの名無しさん2016/01/05(火) 22:42:21.38ID:7Q2tXWc2
>>855じゃないけど
クラスウィザードで作ったハンドラの関数に全処理をぶち込んで同じ処理はコピペでユーザー関数を呼ばない
デバッグを担当したので仕様書を見ると3千行くらいだろうかと思ってたら桁が一つ違った
0860デフォルトの名無しさん2016/01/05(火) 22:46:13.84ID:7Q2tXWc2
>バカが触っても大惨事にならない言語
VBでocxとかAPIとかアクティブXを意識しないで済むような条件ならどうだろ?
0861デフォルトの名無しさん2016/01/06(水) 07:55:53.24ID:LK889b8U
言語関係ないな。ファイル削除とか。
0862デフォルトの名無しさん2016/01/08(金) 20:42:50.02ID:R3C0rIaN
C++とjavaをそれぞれ微妙に間違えて覚えた感じのC++コードは見た事がある
あれは色々クソだった
0863デフォルトの名無しさん2016/01/08(金) 21:37:00.02ID:p/Qz8y2X
バカはdeleteを知らない
0864デフォルトの名無しさん2016/01/08(金) 23:36:28.61ID:TMtMk1T6
ま、待て落ち着け
最近はdeleteなんか使わんぞ
0865デフォルトの名無しさん2016/01/09(土) 00:35:58.93ID:fiu0c9MZ
いまどきdeleteなんてbad know howじゃないか?
0866デフォルトの名無しさん2016/01/09(土) 00:45:38.64ID:5sGg2rIv
いや、 delete を隠蔽する手法は色々とあって自動的に delete されるようにできるから見かけ上は消せるけど、
知らないっていうのはかなり問題があるぞ。
0867デフォルトの名無しさん2016/01/09(土) 02:05:19.45ID:e4D1bXEw
別に、バグらない自信があるなら表面で使ってもいいかと。
私には無いが。
0868デフォルトの名無しさん2016/01/09(土) 08:08:26.21ID:9YbuGRIo
>>866
それもそうか
>>867
その危険を迂回できるようになるためにも、知っとく必要だけはあるってことか……
0869デフォルトの名無しさん2016/01/09(土) 08:17:05.09ID:n4h15amY
class Hage {Hage() = delete;};
0870デフォルトの名無しさん2016/01/09(土) 08:32:57.66ID:9YbuGRIo
>>869
バカはオレであった
0871デフォルトの名無しさん2016/01/09(土) 13:10:41.45ID:e4D1bXEw
>>869
私が間違っていました
0872デフォルトの名無しさん2016/01/09(土) 14:55:36.48ID:OJ3RzNty
ほんとおまいらバカだな
0873デフォルトの名無しさん2016/01/10(日) 13:56:15.14ID:OzNStxiO
streamの書式付き文字列ってどうなったの?
何年か前に提案されてた気がするんだけど
0874デフォルトの名無しさん2016/01/11(月) 01:48:07.39ID:6D6y+3+b
>>870,871
なんか癒やされた。好きだぜ
0875デフォルトの名無しさん2016/01/13(水) 16:46:28.54ID:Uatu39YL
https://gcc.gnu.org/gcc-6/changes.html
C++ Concepts are now supported when compiling with -std=gnu++1z or -std=c++1z.

使ってる人いますか?
0876デフォルトの名無しさん2016/01/13(水) 16:58:41.33ID:W/VWXs4P
clangでサポートされたら使う
0877デフォルトの名無しさん2016/01/19(火) 01:34:05.07ID:RsG+AB1B
C++、冗長だし汚いし抽象度低すぎでクソだな、て思う。
もうC++1zとかいいから、
高速で安全でモダンな、ンギモッヂイイ感じの
C++の後継言語を開発することにリソースを割いた方がいいんじゃなかろうか?
0878デフォルトの名無しさん2016/01/19(火) 16:11:15.39ID:kwdF0Xnf
低レベルな部分を書く必要がないなら c/c++ である必要はないから好きなの使ってくれ。
c/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
0879デフォルトの名無しさん2016/01/20(水) 21:21:22.91ID:aoGFDkjX
抽象化ってのはプログラマがするもんじゃないの?
0880デフォルトの名無しさん2016/01/20(水) 21:41:23.81ID:Ci1f4cma
C++を使っていながらC++がアセン鰤言語よりどれだけ抽象化されているか知らないと申すのか
0881片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 21:59:07.29ID:C563gif+
私から意見がある。
void型の変数を作ること、voidにvoidを代入すること、
voidをreturnすることを可能にしてほしい。
0882デフォルトの名無しさん2016/01/20(水) 22:02:50.07ID:7pHwgTRU
>>881
純粋に興味で聞かせてほしいのだが、用途は何?
0883片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 22:05:20.88ID:C563gif+
私の考えは間違ってるだろうか?
テンプレートによるメタプログラミングで
voidの扱いが一般的じゃないので、
「void値」というものがあれば便利だと思った次第である。
0884デフォルトの名無しさん2016/01/20(水) 22:10:31.94ID:e8aI9wBz
C++でもまったく抽象化せずにガチガチにチューニングしたようなソフトもあるけど
0885デフォルトの名無しさん2016/01/20(水) 22:10:53.23ID:7pHwgTRU
むしろ用途のない事を表現する特殊な型がvoidなのでは?
0886デフォルトの名無しさん2016/01/20(水) 22:11:16.56ID:e8aI9wBz
>>881
おれもそれ思ったことある
0887片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 22:13:50.51ID:C563gif+
C#からC++への移植で、C#スタイルのデリゲートが必要になって
デリゲートの戻り値の扱いで壁にぶつかった。
現状では、戻り値がvoidの関数と非voidの関数を統一的に扱うことができない。
0888デフォルトの名無しさん2016/01/20(水) 22:14:36.92ID:Ci1f4cma
今更無理だろうな
戻り値が無い関数の戻り値をvoid型と書いてる今の文法の方が不自然なので
この構文ならvoid値を認めた方がすっきりする
0889片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 22:26:20.35ID:C563gif+
void型の変数を宣言できる。
そのサイズはゼロである。
それは常にvoid値という特殊な値を持つ。
void型の変数にvoid値を代入できる。
voidを戻り値の型とする関数では、void値を返すことができる。
0890デフォルトの名無しさん2016/01/20(水) 22:26:35.34ID:7pHwgTRU
それは値を受け取るコードが問題を起こしているんだよね?
であれば、「delegate的オブジェクト」の受け取りインタフェースでvoid戻りオブジェクトを禁止するように規定した方がc++的な気がする。
enable_ifとかで。
出来るかわからんが。
0891デフォルトの名無しさん2016/01/20(水) 22:27:50.99ID:I6UYKzry
除数がコンパイル時定数で2の階乗ならシフト使うこともあるだろうけど
そうじゃなきゃ割り算命令(または逆数乗算)使うから
0892デフォルトの名無しさん2016/01/20(水) 22:28:34.84ID:I6UYKzry
あれ、すまん誤爆した
0893デフォルトの名無しさん2016/01/20(水) 22:31:36.42ID:Ci1f4cma
>>889
サイズ0を認めると問題が起きるからメンバーの無いクラスもサイズを1以上にした経緯が有るので却下
0894デフォルトの名無しさん2016/01/20(水) 22:39:03.41ID:Ci1f4cma
>>889
最後のやつについて、知ってるとは思うが
return []{}();は今でもできるぞ
0895デフォルトの名無しさん2016/01/20(水) 22:41:51.66ID:YRRWnUr3
これみたいなこと?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0146r0.html
0896片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 22:46:15.23ID:C563gif+
>>889
修正。
× そのサイズはゼロである。
○ そのサイズは1である。

これでどうだろう?
void *p, *q;
*p = *q;
0897デフォルトの名無しさん2016/01/20(水) 22:54:55.15ID:j6lgTSdi
>>895
それそれ
江添のトコでも書いてたはず
0898片山博文MZ ◆T6xkBnTXz7B0 2016/01/20(水) 23:07:26.13ID:C563gif+
>>895
有り難う。長文読む時間ねー。
0899デフォルトの名無しさん2016/01/20(水) 23:15:44.32ID:ftWUH7Q0
voidを完全型にするって話ね
0900デフォルトの名無しさん2016/01/20(水) 23:19:50.39ID:6oFqVMm1
>>878
低レベルな処理を書く必要あるけど、C++はいろいろイケてないから
低レベルを扱えるというコンセプトは継承しつつ、文法とかをンギモッヂイイ感じに直して欲しいという話なんすよ
以下C++のイケてないとこ羅列。
・型安全でない。少しずつ強い型付けに寄りつつあるがまだ弱い型付けが残っている。
・finalとかoverrideとかの位置がおかしい。final classとか書きたい。
・関数を = delete とかで消すのがイケてない。
・初期化リストの文法がイケてない。改行しないとクッソ長くなるし、改行すると{の位置に困る。
・; をつけるのが面倒くさい。
・if文とかで条件式を()でくくるのが面倒くさい。
・プロパティがない。
・検査例外がない。ドキュメントに乏しいAPIは、しばしば想定外の例外を投げてユーザーを困惑させる。
・Interfaceがない。多重継承は、オブジェクトのサイズを肥大化させるため嫌われる。
・メソッドの呼び出し方に.と->2通りの方法があり、使い分けが面倒くさい。
つづく
0901デフォルトの名無しさん2016/01/20(水) 23:20:46.68ID:6oFqVMm1
つづき
・virtualを書くのが面倒くさい。finalでないクラスのメソッドは、デフォルトでvirtualであるべきである。
・純粋仮想関数の= 0という文法がイケてない。
・overrideはあまり意味がない。関数がoverrideされるとき、overrideは常に必須であるべきである。
・テンプレートのtypenameを書くのが面倒くさい。
・テンプレートの実装をクラス外に書くとき、テンプレートの記述が毎回必要なのがイケてない。
・継承のアクセス指定子はデフォルトでpublicであるべきである。
・コピーコンストラクタ以外の1つ以上の引数をもつコンストラクタは、デフォルトでexplicit指定されるべきである。
・optionalが標準サポートされていない。
・標準ライブラリの命名は、一般的でないものが多すぎる。vectorやpush_backやeraseは、C++独特の命名である。
・ヘッダと実装でファイルを分ける時代は、とうの昔に過ぎ去った。
・namespaceは暗黙的に設定されるべきである。
・拡張メソッドがサポートされていない。
・C++は、C++11においてメモリ管理を安全に行う手段を手に入れたが、後付けされたそれを扱うコードはひどく冗長である。
・コピーコンストラクタとコピー代入演算子は、中身がほとんど一緒になるのに、別々に実装しないといけないのが面倒。
・テンプレートの型パラメータが満たすべき性質を制約する手段がない。
・enum型引数にenumの値を渡すとき、型は自明なので省略できるべきである。
0902デフォルトの名無しさん2016/01/20(水) 23:21:50.36ID:ntutQCMG
>>900
D か Go か Rust でがんばれ。
0903デフォルトの名無しさん2016/01/20(水) 23:40:32.62ID:I6UYKzry
ガキがゴネてるとしか思えんw
0904デフォルトの名無しさん2016/01/21(木) 00:38:23.74ID:aXQag5k7
>>900
自分の不満だけ羅列されても困る。
せめて、こうしたら良くなるのに的な案も書いてくれ。
じゃないと、そうですか、としか言いようがない。
0905デフォルトの名無しさん2016/01/21(木) 01:01:27.27ID:JOkcCaxW
非互換な変更を望んでるあたりDが一番お似合いだと思うのだがどうだろう
0906デフォルトの名無しさん2016/01/21(木) 01:09:14.17ID:RQbtFNgK
・; をつけるのが面倒くさい。
とか言ってる限りDでもダメだろう
マイ・イケテル言語を作るしかないね
0907デフォルトの名無しさん2016/01/21(木) 01:12:53.34ID:hac+mbg1
>>906
Dなら強く要望出し続けて作者に気に入られれば非互換でも変更される可能性もあるかもねという皮肉的な意味も込めてな
0908デフォルトの名無しさん2016/01/21(木) 03:09:26.68ID:PSri+HWg
同意できるのはtypenameうざいくらいだな
0909デフォルトの名無しさん2016/01/21(木) 08:09:19.92ID:mPKjkruo
・そもそも場面に応じて適切な言語を使い分けるという発想がない
0910デフォルトの名無しさん2016/01/21(木) 14:10:33.88ID:rjdv+GpY
ヘッダと実装は分けて欲しいわ。
0911デフォルトの名無しさん2016/01/21(木) 17:25:51.41ID:zWLKoVei
>>900
878 に書いたけど、
> c/c++ のどこを重要に思うかは人によって違うのであって、何にリソースを割くかはそれぞれが決めるし、お前ごときの助言は必要ない。
必要としてるのがお前なら、お前がやれ。
ここは「僕ちゃんの考えた最強言語」を披露するスレではない。別にスレを立ててそこでやれ。
0912デフォルトの名無しさん2016/01/21(木) 23:14:47.21ID:0HmD462y
一つ一つに突っ込み所を残してある
よく考えられた釣りだな

>しばしば想定外の例外を投げて
>C++11においてメモリ管理を安全に行う手段を
この二つはちょっと何言ってるかわからない
0913デフォルトの名無しさん2016/01/22(金) 21:48:23.16ID:aYF/fDXw
名前付きブロックとブロック指定のbreakとかほしい。
forやwhileに名前付けるでもいいけど
0914デフォルトの名無しさん2016/01/23(土) 10:44:17.51ID:JHPm6Jjq
既にある。ラムダと言う。
0915デフォルトの名無しさん2016/01/23(土) 10:53:56.76ID:ZDlTAjvh
なんか違わね?
0916デフォルトの名無しさん2016/01/23(土) 11:20:17.95ID:JHPm6Jjq
インラインで書きたいと言うなら、それもある。
gotoと言う。
0917デフォルトの名無しさん2016/01/23(土) 11:24:07.86ID:UiSDb387
↑会話のでないあすぺ
0918デフォルトの名無しさん2016/01/23(土) 12:02:09.80ID:JHPm6Jjq
皮肉も通じない馬鹿にプログラマは無理じゃないか?
0919デフォルトの名無しさん2016/01/23(土) 12:16:37.78ID:9P3xRRKy
まず文脈の成立した日本語が書けない低能には無理だろうな
0920デフォルトの名無しさん2016/01/23(土) 13:48:52.61ID:ZDlTAjvh
普通はgotoを使うけど、それがイヤだっていう主張でしょ

break [個数];
とかならラベル名を考える手間も省ける
0921デフォルトの名無しさん2016/01/23(土) 13:51:37.99ID:7KDEJB/l
gotoは素人
0922デフォルトの名無しさん2016/01/23(土) 14:27:31.09ID:xYcOlVg1
多段に抜けるときgoto文はまぁ良いんだが
クラス内クラスのメソッドの中で使うと何故かVisualStudioのクラスビューがバグるから困る

今はラムダがあるので、多重ループ部をラムダに抜き出して
returnで多段に抜けるのが今どきのC++風だろう

あと、仮に名前付きブロックを作ったとき、名前付きブロック内で普通のbreakした場合、
break先はどこになるんだろう
名前付きブロックを抜けるのだろうか、はたまたその外のブロックを抜けるのだろうか
0923デフォルトの名無しさん2016/01/23(土) 14:32:20.94ID:0jILSHar
>>914
lambdaはオーバーヘッド考えたら代わりにはならんでしょ
この辺Swiftなら気持よく書けるんだけどなー
0924デフォルトの名無しさん2016/01/23(土) 14:37:03.78ID:7KDEJB/l
何かしらのフラグを一つ用意しておくと良い
0925デフォルトの名無しさん2016/01/23(土) 15:02:25.67ID:qXOiofIi
わざわざgotoを使わない為にフラグとかアホ
0926デフォルトの名無しさん2016/01/23(土) 17:00:07.80ID:pHSKwpj1
>>922
一番内側で良いけど、言われてみればラムダでもいいのかな?

なまえ指定のbreakをほしいと思ったのはswitchの使いにくさからなんだ
最近、elseifでの代用が習慣に。。。
0927デフォルトの名無しさん2016/01/23(土) 20:43:39.77ID:xYcOlVg1
一番内側ってのが何を指しているの?
名前付きブロックは勘定に入るの?
名前なしの普通のブロックはbreakのジャンプ先の勘定に入らないよね
だけど名前付きブロックは名前指定breakの対象になるってことは
名前付きブロック内で普通のbreakを呼ぶと名前付きブロックを抜けられそうにも思える

要するに名前付きブロックはどっちの仲間なの?
・for文、while文、do-while文のブロック ← breakの対象
・if文、関数、名前なしの普通のブロック ← breakの対象外
0928デフォルトの名無しさん2016/01/23(土) 21:13:44.10ID:9P3xRRKy
>>927
長文の駄文を書く前に、実装してる他の言語の仕様を見て来い
http://ideone.com/oJ6noS
0929デフォルトの名無しさん2016/01/23(土) 22:32:51.58ID:/x5ELTU1
初めて見たけどそれgotoをbreakって書いてるだけに見える
0930デフォルトの名無しさん2016/01/24(日) 01:31:33.69ID:0dMHn0ua
goto文で痛い目見まくった世代はもういないのか?
0931デフォルトの名無しさん2016/01/24(日) 03:05:14.84ID:6zzJ2ABK
>>929
メジャーどこじゃjavaだって実装してるよ。
まさかjava見たことないなんて幸せな環境にいるわけじゃないよな?
0932デフォルトの名無しさん2016/01/24(日) 03:08:14.00ID:6zzJ2ABK
っつうか>928のjavaじゃん。
java以外ならAdaも実装してる。
0933デフォルトの名無しさん2016/01/24(日) 03:11:56.52ID:6zzJ2ABK
なんか>>929はwhileやforなんていらん。gotoだけでいいじゃんとかいいそうな感じ。
0934デフォルトの名無しさん2016/01/24(日) 08:02:13.27ID:c5KOoDBb
>>922
そんなプロプライエタリの糞IDE使わないでEclipse使えよ。
0935デフォルトの名無しさん2016/01/24(日) 12:54:54.47ID:6/NVrtZ5
>>933
逆だよ
このbreakはgotoとラベルに完全に同じだから制御構造の見通しの良さとかには
全く寄与してないってこと
0936デフォルトの名無しさん2016/01/24(日) 13:43:22.51ID:fkWZRTEw
>このbreakはgotoとラベルに完全に同じ

悪いのは目? それとも頭?
0937デフォルトの名無しさん2016/01/24(日) 13:50:04.52ID:6/NVrtZ5
馬鹿かお前
そのコードのラベル付きbreakを機械的にgotoに置き換えて同じ動作のコードになるだろ
0938デフォルトの名無しさん2016/01/24(日) 13:55:40.38ID:QjBwAYFF
gotoに置き換えられるのはあたりまえだろw
0939デフォルトの名無しさん2016/01/24(日) 14:27:39.48ID:fkWZRTEw
この理屈で行くと通常のbreakもただのgotoで、制御構造の見通し向上には寄与しないことになるな
確かに>>929は普通のbreakを肯定した訳ではなかった
前提を見誤った これは失礼
0940デフォルトの名無しさん2016/01/24(日) 15:32:42.58ID:L0EPgOj+
関数もgotoとか言い出しそうw
0941デフォルトの名無しさん2016/01/24(日) 17:23:28.67ID:dfuZmhXc
ただの break は最内のループを抜けるわけだが
名前つき break は名前のついたループを抜ける機能。
ループに名前をつけないといけない時点で
goto 先のラベルを用意するのと何の違いがあるわけ?
goto が使えない C/C++ 以外の言語なら違いはあるけどさ。
0942デフォルトの名無しさん2016/01/24(日) 17:43:53.31ID:xtpCszE9
break はそのブロックの範囲内だけで意味を持つという点では構造化の枠組みの中にある。
ラベル付きbreakも任意の場所じゃなくてブロックに対して名前を付けるんだから分かり難いとはいえ構造化を壊すというほどでもないし、
gotoと同じというのは言い過ぎだと思うけどな。

ただ、gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ。
だらだらとネストが深くなってるようなコードを更にブロックでネストしてもダメな構造化だ。
Javaマン的には「わかってても必要なんだよ!」ってことかもしれんけど、
そんなの考えても本当にうんざりするだけで実につまらん。
0943デフォルトの名無しさん2016/01/24(日) 18:18:58.87ID:OiBFYb4I
gotoまみれのBASICはもう見たくないです
0944デフォルトの名無しさん2016/01/24(日) 18:26:48.47ID:fkWZRTEw
>>942
>gotoより名前付きbreakの方がわかりやすいようなケースだとそれはもう既にダメなコードになってるだろ

名前指定のbreakが出来ないC++で多重ループを抜けるのにフラグを使うマヌケなコードが散乱しているというのに何を言っているんだお前は。
「更にブロックでネスト」とかアホな事言ってないで
Java言語仕様の14.7の最初の6行とか、C++言語仕様6〜6.1でも読んできた方がいいぞ
0945デフォルトの名無しさん2016/01/24(日) 18:43:11.13ID:B29niI3e
ループ脱出は邪悪なgotoの使い方に当たるか
ラベルは上か下のどっちにあった方が便利か
殆ど好みの問題じゃね
0946デフォルトの名無しさん2016/01/24(日) 18:53:45.05ID:DQslD/RG
行番号で飛べるgotoは凶悪だよねw
0947デフォルトの名無しさん2016/01/24(日) 18:53:50.83ID:xtpCszE9
>>944
だからさぁ、どうせマヌケなのにそれが名前付きbreakになったからってどうだっていうんだ?
それのどっちがマシか議論したってうんざりするだけだろって言いたいの。
0948デフォルトの名無しさん2016/01/24(日) 19:42:24.72ID:fkWZRTEw
gotoが少なくない人に避けられている理由を回避する方法として名前指定のbreakを挙げたのが>>913だったと思うのだが
「どうせマヌケ」という発想がどこから湧いてきたのか不思議だ
0949デフォルトの名無しさん2016/01/24(日) 20:07:22.34ID:dUerMYxr
かのN88BASICでさえラベルでgotoできるというのにこの子は・・・
0950デフォルトの名無しさん2016/01/24(日) 20:10:05.52ID:YiP+HMh4
break 2;
0951デフォルトの名無しさん2016/01/24(日) 20:43:29.58ID:ZJqNWdUH
#define BREAK goto
こんなのでいいんじゃないの
他の使い方に使わなければいいんだし
0952デフォルトの名無しさん2016/01/24(日) 21:40:27.58ID:RJuYOlx1
名前付きブロックよりもラムダにくくり出してreturnで抜けたほうが良いんじゃないの?
適切な名前を付けて、戻り値と引数を設定してやれば、ドキュメンテーションも上がるよ
0953デフォルトの名無しさん2016/01/24(日) 21:41:45.51ID:fAWjFRDX
>>952
るーぷ中からreturnしたいときはどうすんだよタコ
0954デフォルトの名無しさん2016/01/24(日) 22:02:39.80ID:sg/AqKzO
https://books.google.co.jp/books?id=s40pvgbtOZ8C&;pg=PA337#v=onepage&q&f=false
この本を元に接尾辞配列の実装をしようとしています
ここでは配列rankをグローバル変数として宣言して,比較関数で利用しています
この配列rankを内部変数にしたいのですが,比較関数から内部変数を参照する方法ってありますか?
0955デフォルトの名無しさん2016/01/24(日) 22:14:17.51ID:7wa58CB+
>>954
クラス化してメンバ変数にするだけじゃダメなん?
0956デフォルトの名無しさん2016/01/24(日) 22:17:43.86ID:RJuYOlx1
>>953
戻り値チェックすればよいじゃん、ラムダに抜き出した時点で一つのまとまった処理になるんだからさ
少なくともフラグよりは良いでしょ
0957デフォルトの名無しさん2016/01/25(月) 04:40:47.42ID:Ooj0Sb7l
continue 3;
0958デフォルトの名無しさん2016/01/25(月) 18:33:32.30ID:hFILJJKp
for(...){
 :
 while(...){
  :
  do{
   for(...){
    if(...) break,do,while;
    :
   }
   :
   :
  }while(...);
  :
 }
 //ここ
 :
}

みたいな書き方できるようにして欲しい。break:do,while;でもいい
0959デフォルトの名無しさん2016/01/25(月) 19:21:27.84ID:FsV3SdbP
キモ
0960デフォルトの名無しさん2016/01/25(月) 21:20:22.06ID:pmBmtkmx
いくらなんでもそれはないわwww
0961デフォルトの名無しさん2016/01/25(月) 21:42:05.62ID:THeGRZ35
キモィ━(lll´Д`)━(lll´Д`)━!!
0962デフォルトの名無しさん2016/01/25(月) 23:48:25.40ID:NUBvUwQI
gotoがお似合いな糞コードやな
0963デフォルトの名無しさん2016/01/26(火) 19:15:27.76ID:Gm6Wv9Eo
関数に切れよ
<algorithm>使えよ
データの格納方法見直せよ
そもそもそんな処理を本当に自分で実装する必要があるのか考え直せよ
言語規格にケチをつけるのはその後だ
0964デフォルトの名無しさん2016/01/26(火) 20:36:35.29ID:BCQYLgw5
必死にalgorithmにこじつけようとしたらかっこつけてないでベタなコード書けって叱られた
どうしたらいいんだ…
0965デフォルトの名無しさん2016/01/26(火) 21:17:53.61ID:3irWjzYe
どうしようもない
マ板で愚痴ると良い
0966デフォルトの名無しさん2016/01/27(水) 00:00:38.13ID:fwu/2NaQ
せっかくgotoの機能があるんだから、使い所では使えよ
0967デフォルトの名無しさん2016/01/27(水) 00:14:12.84ID:NVZ3RE3B
それがバルスのような禁断のスペルであってもか?
0968デフォルトの名無しさん2016/01/27(水) 04:36:16.92ID:BGK1Phdb
>>967
まさに使いどころで使ったじゃないか
0969デフォルトの名無しさん2016/01/27(水) 21:56:22.98ID:tWCEbZpw
breakは許す
gotoも許す
goto caseだけは絶対に許さない
0970デフォルトの名無しさん2016/02/06(土) 18:23:35.87ID:K1T12T5X
ダメだ!gotoで後藤さんの斬首が脳裏に…
0971デフォルトの名無しさん2016/02/06(土) 22:03:19.61ID:64Pydz+a
gotoblas
0972デフォルトの名無しさん2016/02/08(月) 21:06:04.12ID:Uaac4ssQ
アスキー文字に≠がなかったばっかりに、かなり面倒だったと思う
0973デフォルトの名無しさん2016/02/08(月) 22:41:07.66ID:3QcKIDeA
仮にアスキーに≠が有ったとして
日本では ≠ が \ に割り当てられてたら面白かったのにね
0974デフォルトの名無しさん2016/02/09(火) 01:12:05.96ID:uwbW3/OC
タイプライター的発想だと≠は=に/を重ねて作れるから不要
0975デフォルトの名無しさん2016/02/09(火) 08:50:34.71ID:nv/jsaUe
タイプライターの話は実際にありそう。
!を否定とした最初の人は良いセンスしてると思うわ。文章で否定の形が強調になったりするから驚くことではないかもしれないけど。
0976デフォルトの名無しさん2016/02/09(火) 13:18:04.91ID:i8FfOnoz
等しいを表すのに==は最悪のセンス
0977デフォルトの名無しさん2016/02/09(火) 14:19:19.81ID:NzQQLXim
==
=/=
0978デフォルトの名無しさん2016/02/09(火) 14:32:28.99ID:0vL2Anni
だからってPASCALみたいに:=で代入するのも糞面倒臭い
0979デフォルトの名無しさん2016/02/09(火) 14:35:17.82ID:i8FfOnoz
それのがマシ
0980デフォルトの名無しさん2016/02/09(火) 21:30:45.03ID:DH+vdKhf
!が否定なのは当たり前だろ
アクセントとアクシデントは同じ意味だろ
0981デフォルトの名無しさん2016/02/09(火) 22:38:21.75ID:T+WeLdAU
それマジ?言語学に自信ニキ解説頼む
0982デフォルトの名無しさん2016/02/10(水) 02:12:38.91ID:QHgBf3oE
アクセントって ` のことだからな?
0983デフォルトの名無しさん2016/02/10(水) 19:39:41.28ID:FUpM9Alw
>>982
それは第二アクセントなんだが
0984デフォルトの名無しさん2016/02/11(木) 01:31:26.66ID:yz2/azqc
んなこと言われても右上がりのやつはキーボードに無いし
0985デフォルトの名無しさん2016/02/11(木) 07:46:45.07ID:OZhLkZUr
`ω´
0986デフォルトの名無しさん2016/02/11(木) 08:18:48.03ID:1o5YIpjF
〜(´・ω・`)〜
0987デフォルトの名無しさん2016/02/11(木) 13:22:42.45ID:chyZ04S/
>>980>>981
語源からして違う。アクセントはad+cantus(歌!)アクシデントはad+cadere(降ってくる!)
ついでに意味も違う。
0988デフォルトの名無しさん2016/02/11(木) 17:07:33.48ID:R5nKPKgb
洒落にマジレス
0989デフォルトの名無しさん2016/02/11(木) 21:30:44.06ID:1IH1NiG/
>>973
似てるから良いんじゃないか?
レス数が950を超えています。1000を超えると書き込みができなくなります。