TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
くだすれPython(超初心者用) その43【Ruby禁止】
新言語を開発したい
C++相談室 part148
Ruby 初心者スレッド Part 57©2ch.net
くだすれPython(超初心者用) その45【Ruby禁止】
推薦図書/必読書のためのスレッド 81
Perlについての質問箱 64箱目
【アンチ】関数型言語は使えない【玩具】 2
VBSで便利なプログラムを作れスレ
Win32API質問箱 Build124

C++14/C++1z 20


1 :2014/09/11 〜 最終レス :2016/02/11
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.sc/test/read.cgi/tech/1382889622/

2 :
< `∀´>ニダー

3 :
サンダー(バリバリ

4 :
このスレは早くも終了なのかよ

5 :
CodeLiteのスレないの?

6 :
VS2014のconstexprフル装備祈願

7 :
>>6
先月のプレビュー版ではthread_localが入ったし
このままならconstexprは入りそうではある
https://h70tha.dm2302.livefilestore.com/y2pO_T96yqnsay4tnPVnyTEENlK3YRiIV0uKLAaDg8O1qSB5bjhnYKyUlDm2ZOU8a6rXgqV9dZGU2sHOpN3ziLXEPLJCIVH0dWYLbhJ_jGrCAs/cppconform.png?psid=1

8 :
CTPで入ってたのにVS2013のまさかのconstexpr全omitあったからまだ信用できない
costexpr完全に入ったらしばらくバージョンアップしないつもり

9 :
November 2013という日付をバージョン2013だとでも勘違いしたのか?

10 :
>>7
VS14は割と楽しみだが、VC++だけでもそろそろポータブルにしてくれんかな?

11 :
>>10
ポータブル化したとして何GBになるんですかね……?
と言うか何気に環境変数とか管理者権限云々で開発環境のポータブル化難しくね?

12 :
仮想マシンじゃダメなのか

13 :
Visual C++というかWindows SDKとかMicrosoft SDKとかPlatform SDKに含まれる「コンパイラツールセット」だよね
サイズはそんなに大きくないはず
実は丸ごとコピーして開発者コマンドプロンプトの環境変数を設定したら動くんじゃないの?

14 :
>>10-13
The Microsoft Keyboard Layout Creatorのver1.3.4073 4.6 MBやver14 10.1MB
をインストールするとCL ver14のサブセットがbinフォルダにインストールされます。
コイツは恐ろしいことに、このツールはレイアウト情報からソースコードを生成して、
(といってもグローバル変数の初期値を書き換えるだけでコードは全て同じだが)
CLでコンパイルしてキーボードレイアウトDLLを生成するというシロモノなのだ。
なんというか、CLの無駄遣い感が半端ないぞマイクロソフトォッ!
MSKLCはインストールタイプのアプリケーションだけど、
インストール先のフォルダをコピーすれば普通にポータブルに動いた気がする。
>>13
動くんじゃないの?というか動かなかったらちょっとびっくりする。

15 :
MSBuildは確実、clとかもそうなんじゃないかな
.netかcliで作られてるから.netインストール必須でそのバージョン入ってない環境へのポータブル化無理かな

16 :
>>14
試してみた。MSKLC(Version 1.4)を適当なツールで解凍した後、USBメモリに
コピーして32bitWin7機(開発環境は入れていない)で動作させてみると、
「cl : Command line error D8027 : cannot execute 'c1xx'」って言われますた(´・ω・`)
適当にc1xx.dll(from VS2013)を突っ込んでも
「cl : Command line error D8027 : cannot execute 'E:\MSKLC\bin\i386\c1xx.dll'」に変わるだけだし
ちなみにclコマンドだけだと
「Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.220 for 80x86」と返ってくる
(x64版とia64版もある)
まあmsvcr80.dllとかもあるし、中身はVC2005かな?

17 :
>>16
XP上にインストールした1.3.4073をWin8.1(64bit)に持ってったら動いたけどなぁ…
ちなみにcl.exe(Version 14.00.31008.15 for 80x86)に渡るコマンドラインは
cl.exe -nologo -IC:\PROGRA~1\MICROS~1\inc -DNOGDICAPMASKS -DNOWINMESSAGES -DNOWINSTYLES -DNOSYSMETRICS -DNOMENUS -DNOICONS
-DNOSYSCOMMANDS -DNORASTEROPS -DNOSHOWWINDOW -DOEMRESOURCE -DNOATOM -DNOCLIPBOARD -DNOCOLOR -DNOCTLMGR -DNODRAWTEXT -DNOGDI
-DNOKERNEL -DNONLS -DNOMB -DNOMEMMGR -DNOMETAFILE -DNOMINMAX -DNOMSG -DNOOPENFILE -DNOSCROLL -DNOSERVICE -DNOSOUND -DNOTEXTMETRIC
-DNOWINOFFSETS -DNOWH -DNOCOMM -DNOKANJI -DNOHELP -DNOPROFILER -DNODEFERWINDOWPOS -DNOMCX -DWIN32_LEAN_AND_MEAN -DRoster -DSTD_CALL
-D_WIN32_WINNT=0x0501 /c /Zel /Zp8 /Gy /W3 /WX /Gz /Gi- /Gm- /GX- /GR- /GF -Z7 /Oxs Layout01.c
…オプション多すぎてロクにAPIも呼べないが、下手にオプションを削るとインクルードファイルが足りなかったorz

18 :
コマンドラインコンパイルするときそういうのはMSBuild任せにすんだよ

19 :
http://www.microsoft.com/en-us/download/details.aspx?id=44266

20 :
C++14はいつ出るの?

21 :
2014年中でしょ。

22 :
もう出てるぞ
http://isocpp.org/blog/2014/08/we-have-cpp14
clangは実装終わってるし、-std=c++1yじゃなくて-std=c++14オプションも付いてる
http://clang.llvm.org/cxx_status.html
gccはまだ
https://gcc.gnu.org/projects/cxx1y.html
MSVCは腹を切って死ぬべきだ
http://blogs.msdn.com/b/vcblog/archive/2014/06/11/c-11-14-feature-tables-for-visual-studio-14-ctp1.aspx

23 :
標準と標準でないものの区別がつかない低脳は
プログラミングに携わるべきではないな

24 :
std::arrayのbegin()呼び出しが省略できたらいいのに

25 :
beginじゃなくてdataだった

26 :
std::arrayって何か使い道あんの?
関数の戻り値に使えたりコピーが便利なくらい?

27 :
begin,endがあるから各種algorithmを使えたり
今はstd::begin,endあるけど

28 :
>>27
algorithmとbeginは関係無くね?
それにarrayとstd::beginは両方とも11で追加されたはず

29 :
生配列でも出来るけど、array使った方が記述量減らせるってぐらいよね
std::array<int, 4> a = {1,2,3,4};
std::array<int, 4> b = {1,2,3,4};
std::cout << std::boolalpha << ( a == b ) << "\n";
a.fill( 42 );
std::cout << std::get<1>( a ) << "\n";

30 :
質問なんだけど
http://cpplover.blogspot.jp/2014/09/c14-lambda.html
↑の途中に出てくる
struct X
{
  int data = 0 ;
  void get_lambda()
  { // コピーキャプチャーしているつもり
    return [=](){ return data ; }
  }
} ;
って、
戻り値がvoid宣言なのにラムダ返しているのなんで?

31 :
ミスでしょう。

32 :
>>30
ドワンゴ広告ウッゼーw

33 :
std::type_infoでも型が派生クラス型か判断ができるようになればいいのにな
型消去使うとdynamic_castが使えない場面が出てくる
any_castがダウンキャストサポートできないのもその絡みもあるようだし

34 :
>>30-31
その時はそれに対応したコンパイラなかったのか
それとも、脳内コンパイラで確認したってことかな

35 :
コードは規格に基づいて理想的にコンパイルされるべきで、実装で確かめる奴はアホっていうのが本の虫の人の主張
なお理想コンパイラはよく間違えるもよう

36 :
微妙にわかる気がする。
朝から晩までコード見る度に規格と照らし合わせてると
脳内コンパイルが出来るようになって
ネイティブスピーカーの域に達した感覚になるんだわ。
それまでとは比べものにならない速さで読み書きできるようになる。

37 :
配列も使えるようstd::begin(array)追加したけど やっぱりarray.begin()
なんて、さっちゃんが言い出した

38 :
array なー、初期化リストの要素数で template 引数に与える配列サイズを省略出来れば完璧なんだけどな

39 :
そういやどうしてinitializer_listは型にサイズ情報が無いんだろう?
template<typename E>
class initializer_list_base;
template<typename E, int N>
class initializer_list : initializer_list_base<E>;
があったらよくね?

40 :
>>39
initializer_list が constexpr 対応なら size メソッドで取得して、必要なサイズと合致しなければ static_assert するという方法で対応できる。

41 :
>>40
基本的なことですまないけど
size()がconstexprってどういうことなん?
template<typename T>
void f(std::initializer_list<T> data) {
 data.size(); //constexpr?
}
呼び出し側の実引数によってsize()は変わるから
定数じゃないと思ったのだけれど

42 :
初期化リスト内の要素数自体がランタイムで変化することってあったっけ…?
無いようならコンパイル時に決定できるのでは (C++14)

43 :
C++14のinitializer_listからはconstexprじゃないメンバ関数は全部消されたぜ

44 :
ところで、従来から immutable な値 (const オブジェクト) は定数って用語で呼んでたと思うんだけど、
コンパイル時に値が作成されるような値の呼び名ってあるの?
なんとなく >>41 みたいな場合で「定数」っていう言葉を使うとちょっと微妙だなと思ったので。

45 :
>>41
スマソ。 constexpr 関数内で static_assert は呼べないらしい。
http://boleros.hateblo.jp/entry/20130319/1363719366
でもまあ他のなんだかんだの方法で検出することは出来る程度にコンパイル時に確定してるのは間違いない。

46 :
実行時定数と静的定数の区別は必要になったよねえ
constexpr関数はメタ関数に使えるから
template < int N >
struct meta_dosomething
{

47 :
enum { value = constexpr_dosomething( N ), };
static_assert( !value, "error!" );
};
途中で送信して泣きそう

48 :
constexpr な関数内では変数が使えるから、
それだけでも進歩だよ

49 :
auto f() -> auto
{ return true; }
の二つ目のautoって何のためにあるんですか?
書かなきゃいいだけに思えるんです。

50 :
そうだよ書かなきゃいいよ

51 :
auto※1 f() -> auto※2
{ return true; }
※1 型は->を見てくれ。->が無かったらreturnから推論して
※2 気が変わった。やっぱ型はreturnから推論して

52 :
C++11/14/17 Features In VS 2015 Preview
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx

53 :
>>52
ようやく constexpr が入るのか
わくわく

54 :
継承コンストラクタ入るのか

55 :
ユーザー定義リテラル
実用性があるかしらんが楽しそう

56 :
boostのformatが
"x=%02X, y=%02X\n"_format % x % y
と書けたら少し嬉しい

57 :
あと
std::this_thread::sleep_for(5 * 1000ms)
と書けるのがすばらしい

58 :
忌み子だったユーザー定義リテラルさんがいよいよメジャーデビューしてしまうのか
胸が熱くなるな

59 :
constexpr がコンパイル時エラーとか返せると良いのだが。
ダメな引数を与えられたときとかに。

60 :
定数式しか渡せないconstexpr引数が有ればよかった

61 :
satatic_assertでがんばる

62 :
#include <iostream>
constexpr int foo( int x, int y ){
return x * y;
}
template <int N>
struct constant_int {
enum { value = N };
};
int main()
{
//int x = 10; // ダメ
// 適当にどっちか
const int x = 10;
constexpr int y = 20;
std::cout << foo( constant_int<x>::value, constant_int<y>::value ) << std::endl; // 200!!
}

・・・ないな。これは酷い

63 :
質問です
decltype ( (bool const)false )
がbool const型でなくboolになってしまうようなのですが何故でしょうか?
clangです

64 :
constは型じゃなく属性だな

65 :
>>63
そういうもんだから
3.10 Lvalues and rvalues
p4 Class prvalues can have cv-qualified types; non-class prvalues always have cv-unqualified types. (略)
5.2.9 Static cast
p1 The result of the expression static_cast<T>(v) is the result of converting the expression v to type T. If T
is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if T is an rvalue
reference to object type, the result is an xvalue; otherwise, the result is a prvalue. (略)

66 :
type-idはconstの有無が別だが
decltype()の中が式なので変換されるのか
decltypeに宣言の型と式の型の両方の
機能を持たせるなんて糞文法だな

67 :
autoとdecltype周りはキーワードの使い回しが激しくて嫌です。
decltype(x) y; // 特定の型として使用
[](auto p){} // ジェネリックラムダです
auto y=x; // xから察して
decltype(auto) y=x; // decltype(x)から推論
auto f() -> int {} // 型の定義は後ろを見て
auto f() -> decltype(auto) {} //returnから推論

68 :
>>67
4つめだけが用途思いつかないなあ。

69 :
>>67
4番目の意味を教えて。3番目とは違うの?

70 :
4番目は T&型がT型になるのを防ぐと思った。

71 :
>>69
decltype(x)は
1.xが識別子っぽい時、その宣言をコピペ
2.識別子でないけどlvalue/rvalueの時はT&/T&&
3.それ以外は式xの型T
↓こんな感じ。
const struct A {
 int &&v;
} obj;
auto v2= obj.v; // int
decltype(obj.v) v2; //1に該当。int&&
decltype((obj.v)) v2;//カッコが付いて識別子でないので2に該当。const int &
int &f();
auto v2=f();//int
decltype( f() ); v2=f();//lvalueなので2に該当。int &
decltype( make_str() ) s=...; // prvalueなので3に該当。string
decltype( (const std::string)make_str() ) s=...; // 3に該当。const string

72 :
ごめん間違えた

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

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

73 :
典型的な違いをもう一つ。
void f(int && v) {
 auto v1 = v; // int 
 decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
 decltype(auto) v3 = (v); //式(v)は左辺値なのでint &
}

74 :
多すぎる括弧で挙動が変わることはない、と思っていたけどそうじゃないんだな

75 :
C++は糞文法だからね

76 :
11になったから、よーしパパ初期化は{}つかっちゃうぞ
とおもったらvectorは()じゃないと初期化できないな

77 :
ttp://ideone.com/Ymwwk4
{}使えるじゃん

78 :
引数が2つのとき

79 :
>>73
std::move(v)しなくても左辺値として認識されんの?

80 :
>>78
ttp://ideone.com/lbUj0K
使えるけど

81 :
vectorでは使えるけど、arrayで使えなきゃあんまりうれしくないけど。

82 :
std::vector<pa> v{ 1, 2};

83 :
>>82
何が言いたいんだ?

84 :
そういえばVisualStudio2013だと
stringとかvectorとかを{...}で初期化しようとしたら型変換のコンパイルエラーが出たな
感覚では、{...}だとinitializer_listを引数にしたコンストラクタとして解釈されてるっぽい挙動だった
VS特有の不具合なのか言語で規定された振る舞いなのかは調べてないから知らない

85 :
あれだろ。initializer_listを引数に取るコンストラクターがあると
他のコンストラクターを呼び出すのに
{}じゃなく()にしないといけなくなってマヌケになるってことだろ。

86 :
>>84
初期化についてはVCはバグが結構あるし
MSも認識してたはず。たぶんVC固有

87 :
{}はナローキャストを防ぐ機能がついてる。

88 :
>>81
ttp://ideone.com/mI9C26
なんなんだこの流れ

89 :
>>79
もともと void f(A &&a); のaはでxvalueであって
式「a」はmoveしない限り左辺値として振る舞うぞ。
例:
void g(A &a);
void g(A &&a);
void f(A &&a) {
 g(a); // g(A &)を呼び出す
}

90 :
>>81
array<int, 3> a = {1,2,3};
この初期化は単なるCの構造体や配列の期化構文だぞ

91 :
C++03でも通るしな

92 :
>>84
Visual C++は非静的メンバーの初期化にunkoなバグがあってこれが通らない。
struct x {
 std::string s;
 x() : s{""} {} // error:C2797
};
http://blogs.msdn.com/b/vcblog/archive/2014/08/19/the-future-of-non-static-data-member-initialization.aspx
では次の2015で直すらしい。
Preview版では直ってないがアルファ版ではようやく直ってた
http://webcompiler.cloudapp.net/

93 :
C++14のISO改訂はまだなの?
次スレが立つまでには出て欲しい
C++15になってしまう

94 :
>>89
あごめん右辺値と左辺値間違えた
>>73
decltype(auto) v2 = v; //宣言をコピペしてint && (この場合コンパイルエラー)
とあったからvはint &&と認識されるのかなと

95 :
>>94
decltypeはその名の通り式の値に基づくのでなく
expression対象のもともとの宣言を流用するものゆえ。

96 :
サンキュー
decltypeの有用性感じた

97 :
decltype(i):変数iの宣言の型
decltype(f()):一応、関数fの宣言の戻り値の型
decltype((i)):もはや宣言(decl)と関係無い便利テクニック
((i))ってなんだよ。糞すぎる

98 :
名前以外の左辺式のdecltypeは&がつくからな

99 :
R

100 :
>>88 >>90
引数が2つのとき


100〜のスレッドの続きを読む
【消しゴム】MONOを使ってみるスレ4【じゃない】
***Javaのオススメ入門書*** 『創るJava』 3.0
クラスとかインスタンスってなんのためにあんの?
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
JavaScript 4
WPF(.NET4.x, .NET Core) GUIプログラミング Part24
C#だとそんなに重くなるもんなの?
【Electron】ハイブリッドアプリ開発総合【Cordova】
Java入門・初心者質問スレ Part.9
CORBAなら俺に聞け
--------------------
スズメ、うぜーーーーー!!!!
トゥーンだから無敵デース 一冊目
ホワイト企業に行きたい2019卒
☆★果てしない連想ゲーム09★☆
【早明浦】早明浦ダム22【早痴子】
【HONDA】ホンダ N-BOX vol.159
すまん「ロッテリア」って何のためにあるんだ 「ふぅ〜今日はロッテリアとしゃれ込むか」とならんだろ
コミックシーモア 18冊目
【妊娠】酒解禁を待ちわびて3杯目【授乳】
真・三国無双3 総合攻略スレ No.259
ユーロロックプレス
死にたい【激痛に耐えられない】楽になりたいょ
渋谷が大パニック、日向坂のエース小坂菜緒、本日渋谷に降臨
【本日無料】俺に言わせい!サッカーおやじ会 CSch800 PSch579 ch581
花王不買スレとかいうマモノが昔のコピペ貼るだけのスレwww★1
【宿曜】栄親カップル集まれ 24
【スイス】ロジャー・フェデラー141【peRFect】
【 定義に】モトブログスレ#39【 こだわらない】
【PSO2】吉岡「PSO2をぶっ壊す!」
【Switch】Splatoon2/スプラトゥーン2イカ1408杯目
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼