トップページ⇒tech
983コメント246KB

C++14/C++1y

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/28(月) 01:00:22.34
The C++ Standards Committee
http://www.open-std.org/JTC1/SC22/WG21/

Wikipedia
https://en.wikipedia.org/wiki/C%2B%2B14

C++11/C++1y 18
http://toro.2ch.net/test/read.cgi/tech/1365073520/
0232デフォルトの名無しさん2013/11/27(水) 18:42:03.66
それで何か問題になるのか
0233デフォルトの名無しさん2013/11/27(水) 19:47:52.61
>>232
二重delete
0234デフォルトの名無しさん2013/11/27(水) 21:00:11.72
長文失礼
shared_ptrのオブジェクトの管理領域は次のようになっている
管理領域の参照カウンタ、オブジェクトの参照カウンタ、オブジェクトへのポインタ、デリータへのポインタ
ここで、shared_ptrは管理領域、オブジェクト両方のカウンタを増減させる。 weak_ptrは管理領域のカウンタのみを変更する。
shared_ptrの破棄によってオブジェクトのカウンタが0になったとき、オブジェクトは解放される。
しかし、管理領域は全てのweak_ptrが破棄されるまで生存する
そして、weak_ptrからshared_ptrを構築する際には、shared_ptrの管理領域へのポインタをweak_ptrが指す管理領域へのポインタへと設定している
0235デフォルトの名無しさん2013/11/27(水) 21:02:36.06
長すぎと言われた、連レスすまん
enable_shared_from_thisは内部にweak_ptrを持っていて、shared_ptrのコンストラクタはenable_shared_from_thisを継承したクラスに対しては特殊な動作、すなわち内部のweak_ptrに管理領域へのポインタを設定する動作をする
shared_from_this関数は内部のweak_ptrからshared_ptrを構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される
全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
0236デフォルトの名無しさん2013/11/28(木) 01:04:05.46
>>231
> newして返したboost::shared_ptr
わからん。何を new ?返すってどこからどこに?
> boost::shared_ptrで確保
わからん。 shared_ptr に何かを「確保」する機能なんて無いよね?

さっぱりわからん。
0237デフォルトの名無しさん2013/11/28(木) 10:41:28.04
>>231 >>233
こいつはたぶんshared_ptrそのものを理解してない
0238デフォルトの名無しさん2013/11/28(木) 19:18:57.03
普通に使えば普通に使えるライブラリを
浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す

C++ではよくあること
0239デフォルトの名無しさん2013/11/28(木) 22:25:36.50
そういや shared_ptr を使っているインスタンスに対してVisitorパターンだったかやってみようとしたら
途中で生ポインタに変わっちゃうんであきらめたことがあった

class Hage : public Element
{
virtual void accept(Visitor &v){ v.visit(this); } // <- このとき
};

enable_shared_from_this ってのを知っていたらうまいことできたんだろうか
0240デフォルトの名無しさん2013/11/29(金) 01:14:30.49
うん
0241デフォルトの名無しさん2013/11/29(金) 10:18:00.12
static_pointer_castとか面倒だけどこれ使わないと未定義の動作になっちゃうのね
0242デフォルトの名無しさん2013/11/29(金) 10:37:25.12
std::accumulateって情報落ちの対策してるの?
0243デフォルトの名無しさん2013/11/29(金) 11:42:28.09
全然
0244デフォルトの名無しさん2013/11/29(金) 12:21:41.45
なんで現行規格や規格外の話ばっかしてんの?
0245デフォルトの名無しさん2013/11/29(金) 18:26:52.04
規格とか仕様とかどうでもいいと思ってるから
0246デフォルトの名無しさん2013/11/29(金) 21:46:12.55
もうそれ以上VC++さんを責めるのはやめてあげてください。
Windowsユーザーを嫌いになっても、VC++のことは嫌いにならないください!
0247デフォルトの名無しさん2013/11/30(土) 07:24:14.22
2013でもconstexprコンストラクタが使えないんだっけ?
0248デフォルトの名無しさん2013/11/30(土) 12:44:25.52
スレ違い
0249デフォルトの名無しさん2013/11/30(土) 15:16:58.20
じゃあC++1yの話題をふってくれ
0250デフォルトの名無しさん2013/11/30(土) 21:20:02.98
何も無理してスレを伸ばすことは無い。
0251デフォルトの名無しさん2013/12/01(日) 09:43:34.66
template <typename T>
void foo (T val)
{
if (std::is_reference<T>())
std::cout << val << " is reference." << std::endl;
else
std::cout << val << " is not reference." << std::endl;

if (std::is_const<T>())
std::cout << val << " is const." << std::endl;
else
std::cout << val << " is not const." << std::endl;
}

int main()
{
int x;

foo(std::ref(x));
foo(std::cref(x));
}

これちゃんと動く?俺の所では両方とも"not"になってしまうんだが
gcc4.8.1
0252デフォルトの名無しさん2013/12/01(日) 09:53:12.44
そりゃそれ自体はコピーだからな
0253デフォルトの名無しさん2013/12/01(日) 10:38:08.55
ああなるほど
0254デフォルトの名無しさん2013/12/01(日) 11:05:40.87
ついでにvoid f(T &&)にしたところで
const int &自体はconstじゃないから
0255デフォルトの名無しさん2013/12/01(日) 13:17:53.77
コピーだからじゃなくて、fooに渡されるのはstd::reference_wrapper<T>だからだろ
0256デフォルトの名無しさん2013/12/01(日) 13:55:11.13
std::reference_wrapper<int> じゃないの
0257デフォルトの名無しさん2013/12/01(日) 14:07:07.83
そうだね
>>251のfooのTは
1番目 std::reference_wrapper<int>
2番目 std::reference_wrapper<const int>
になる
0258デフォルトの名無しさん2013/12/01(日) 15:15:10.61
うへ('A`)
0259デフォルトの名無しさん2013/12/01(日) 15:17:50.10
これ間違いなんかい
C++ Standard Library 2nd P132

5.4.3 Reference Wrappers
Class std::reference_wrapper<>, declared in <functional>, is used primarily to “feed” references
to function templates that take their parameter by value. For a given type T, this class provides
ref() for an implicit conversion to T& and cref() for an implicit conversion to const T&, which
usually allows function templates to work on references without specialization.
For example, after a declaration such as
template <typename T>
void foo (T val);
by calling
int x;
foo (std::ref(x));
T becomes int&, whereas by calling
int x;
foo (std::cref(x));
T becomes const int&.
0260デフォルトの名無しさん2013/12/01(日) 16:27:32.40
間違ってるね
0261デフォルトの名無しさん2013/12/06(金) 19:51:23.63
Standard Library 2ndのasync/thread回りをようやく読み終えた
これは難しい・・・

次はC++ Concurrency in Actionを読むけどどこまで理解出来るやら・・・
しかしこれを理解しないとマルチコアのメリットが活かせないわけだしなあ
0262デフォルトの名無しさん2013/12/06(金) 20:17:59.91
何を言っているんだ
 マルチスレッドが難しい→まあそうだがスレ違いだ
 C++のasyncが難しい→んなもの知らなくてもマルチコアは活かせる
0263デフォルトの名無しさん2013/12/06(金) 20:26:17.66
ライブラリ作る人のための最低限のツールだもんね。
GC周りと一緒で。
0264デフォルトの名無しさん2013/12/06(金) 20:27:53.55
OpenMPとかだろ?そういうのじゃなくて移植性の高いのが欲しいわけで
0265デフォルトの名無しさん2013/12/06(金) 21:00:59.87
ぶっちゃけスレ違いです。
0266デフォルトの名無しさん2013/12/06(金) 21:25:50.97
asyncとthreadはスレ違いじゃないだろ
0267デフォルトの名無しさん2013/12/06(金) 21:33:06.89
スレを扱うからスレは違って当たり前・・・w
0268デフォルトの名無しさん2013/12/06(金) 21:39:56.32
どうでもいいけどなんでいつもageて書いてんの?バレバレなんですけど
0269デフォルトの名無しさん2013/12/06(金) 21:58:36.96
sageる義務がないからさ
そんなことも知らないの? 馬鹿なの? 死ぬの?
0270デフォルトの名無しさん2013/12/06(金) 22:02:52.04
あーだめだこいつ頭おかしいや
相手にしないでおこう

OpenMPはスレ違いだが、threadやasyncはスレ違いではない
れっきとしたC++11の話題だ
0271デフォルトの名無しさん2013/12/06(金) 22:11:13.55
どうでもいいことは始めからぬかすな 顔おかしいの? 不細工なの? 相手いないの? 単為生殖なの?
0272デフォルトの名無しさん2013/12/06(金) 22:58:05.20
>>270
ここはC++第三版(2011/9/1改訂)のスレではない

 馬 鹿
0273デフォルトの名無しさん2013/12/07(土) 00:41:02.43
11で追加された新参者だから14/1yで変更されない保障はないっていう意味だとか
0274デフォルトの名無しさん2013/12/07(土) 02:34:31.91
C++11の話題はスレ違い
async退学の話ならして良い
0275デフォルトの名無しさん2013/12/07(土) 05:34:44.72
clangでも入れるしかないか
VSに入れられるんだからそれで遊べる
0276デフォルトの名無しさん2013/12/07(土) 11:24:24.94
現行規格はスレ違い
0277デフォルトの名無しさん2013/12/07(土) 11:27:15.41
じゃあ次期の話をしようか。
委員会ドラフトってどうなったの?
無かったことにされるレベルで変更入りまくり?
0278デフォルトの名無しさん2013/12/07(土) 13:37:43.49
C++11のスレがないじゃないか
0279デフォルトの名無しさん2013/12/07(土) 13:51:57.55
C++相談室 part107
http://toro.2ch.net/test/read.cgi/tech/1384818417/
【初心者歓迎】C/C++室 Ver.88【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1384061494/
0280デフォルトの名無しさん2013/12/07(土) 15:19:00.84
C++11は現行規格なわけだし、
特別扱いする必要は無いんだお
0281デフォルトの名無しさん2013/12/07(土) 16:13:58.10
了解した
しかし今のC++スレの質の低下はひどいもんだ
あそこでスレッドやらasyncを質問して果たして答えてくれるのやら
試してみよう
0282デフォルトの名無しさん2013/12/07(土) 18:48:32.64
必要だと思う人がいるのなら、C++11のスレ作ったらいいんじゃないの?
0283デフォルトの名無しさん2013/12/07(土) 19:03:22.93
アイちゃん認定されそう
0284デフォルトの名無しさん2013/12/07(土) 19:48:05.55
C++14をやるのにどのコンパイラ使っている?
VC2013?

>>281
実際にthread,asyncを使っている奴は少ないだろうからな
対応遅すぎたって感じだし
0285デフォルトの名無しさん2013/12/07(土) 21:20:09.07
VS2012でも2013でもいいからClangを入れてしまえばいいだろう

threadは実際にマルチスレッドプログラミングをするにはプリミティブ過ぎて使いにくいから
asyncが考えられたんだろうが、まだ完成度が低い
それにデッドロックやレース状態、リソーススタベーションを起こさずにスラスラプログラムを
書ける奴がどの位いるやら
C++14でもっとまともになるっしょ
0286デフォルトの名無しさん2013/12/07(土) 21:36:02.04
僕ちゃんバカだからVSでのビルドわかんなーい><
0287デフォルトの名無しさん2013/12/07(土) 22:04:49.66
何言ってんの

"clang visual studio 2013" とかでぐぐればいくらでも出てくるだろ
0288デフォルトの名無しさん2013/12/08(日) 05:08:13.45
C++14なんてもう出るのか。C++11からすぐだったけど、何か不具合でもあったの?
禿も、またプログラミング言語C++書き直しやん。
0289デフォルトの名無しさん2013/12/08(日) 08:32:22.14
これからのコンパイラはClangだらけになったりして
一番対応が早くて楽だしな
0290デフォルトの名無しさん2013/12/08(日) 11:06:23.03
>>287
ぜんぜんないよ!失敗談はたまにでてくるけど
0291デフォルトの名無しさん2013/12/08(日) 13:11:37.44
MSがclangを採用するって噂も一時期あったね、そういえば
0292デフォルトの名無しさん2013/12/08(日) 14:14:26.48
よく知らんけどclang使うとなんかいいことあんの?
0293デフォルトの名無しさん2013/12/08(日) 14:48:39.05
>>292
今すぐC++14が使える
0294デフォルトの名無しさん2013/12/08(日) 15:39:04.90
オナニーができます
0295デフォルトの名無しさん2013/12/08(日) 16:43:50.07
>>291
clang関係のリクルート出してた件?
VSで採用って話までは疑問視されてたような
でも何やらされてるんだろうね
0296デフォルトの名無しさん2013/12/08(日) 17:19:07.49
そそ、それ
疑問視されてたって話は知らなかったけど

IntelliSenseとかIDE側で使っているのかも知れないね
0297デフォルトの名無しさん2013/12/08(日) 17:29:11.81
>>296
使ってたらコードが混ざってるだろ。
VSでclangを使うことを想定した作業とか、
差し替えた時の互換性を高める作業とか、そのへんじゃねーの?
0298デフォルトの名無しさん2013/12/08(日) 17:43:25.22
この辺じゃないの? C++ AMP の clang 対応。
http://hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/
0299デフォルトの名無しさん2013/12/08(日) 19:52:19.02
C++ AMP がMSのC++後続の標準の言語になるのかね
規格のC++じゃ時代遅れなのかもな。C#で脱C++を開始した感じがあるからな
0300デフォルトの名無しさん2013/12/08(日) 20:26:03.49
C++ AMPが何か知ってから語れ。
0301デフォルトの名無しさん2013/12/08(日) 20:35:43.88
>>300
規格のC++じゃヘテロ対応できないだろ。GPU載っているCPUが普通だし
そんなのに対応するのにC++プラスアルファが必要で独自拡張。
0302デフォルトの名無しさん2013/12/08(日) 21:02:22.52
脱C++
0303デフォルトの名無しさん2013/12/09(月) 00:05:43.36
VS2013Expressでのclangのビルドってどうやるんですか?
0304デフォルトの名無しさん2013/12/09(月) 00:24:11.61
>>303
clangをビルドしたいのかclangでビルドしたいのか。
0305デフォルトの名無しさん2013/12/09(月) 00:26:22.84
>>301
それ、プラスするもんであって後続として元の物を置換するもんではないだろ。
0306デフォルトの名無しさん2013/12/09(月) 00:45:43.62
スレ違いになるけど、いまデスクトップ用のGPGPUプログラミングって何が多いん?
C++AMP、openCL、CUDA等のGPUベンダの言語...
先端大好きのC++14野郎のお前らはGPGPUプログラムしている?
0307デフォルトの名無しさん2013/12/09(月) 00:59:40.49
>>305
ClangをVS2013に統合したいんじゃないのかな
0308デフォルトの名無しさん2013/12/09(月) 01:04:03.94
>>307 は>>304あてだった
0309デフォルトの名無しさん2013/12/09(月) 01:09:58.35
>>307
いやだから…
単に「clangとの互換性向上(統合含む)目的」とか
「MSがC++ AMP絡みでclang組み込む目的」とか
って推測なら、ああそうかもね、で済む話だろ

何故か>>299が「C++ AMP」が「MSのC++後続の標準の言語」
だとか変なこと言い出すから>>300みたいなツッコミされてんだよ
0310デフォルトの名無しさん2013/12/09(月) 01:16:50.36
>>308
アンカミスかよ…変だとは思ったけど>>299,301ならやりかねないと思ってその流れでレスしちまったorz

まず間違いなくそっちだろうけど、「clang"の"ビルド」と「clang"で"ビルド」を間違えてるなら指摘すべきじゃないの?
0311デフォルトの名無しさん2013/12/09(月) 06:35:27.00
cの__Genericどう?いい感じ?
visualCみたいに使えるのかな?
他にやることあって出来ないんだよね
0312デフォルトの名無しさん2013/12/09(月) 06:50:43.07
C++にはテンプレートがあるし…
03133032013/12/09(月) 10:30:36.34
すんません、clangをビルドしたいんです
0314デフォルトの名無しさん2013/12/09(月) 10:34:23.11
clangはclangでできてないの?
0315デフォルトの名無しさん2013/12/09(月) 10:50:48.50
VS2013のbuild targetは最近入ったばっかりだからVSは古いの使え。
0316デフォルトの名無しさん2013/12/09(月) 12:20:25.97
>>313
Windows でやりたいのなら
教えて君には厳しすぎる。あきらめろん
ちなみに自称上級者の俺も(ry
0317デフォルトの名無しさん2013/12/10(火) 08:42:48.32
>>290
マジメに調べてんの?

http://www.ishani.org/web/articles/code/clangvsx/
0318デフォルトの名無しさん2013/12/10(火) 09:06:11.37
>>290
http://llvm.org/docs/GettingStartedVS.html

こんなんもあるぞ
0319デフォルトの名無しさん2013/12/10(火) 09:06:59.17
>>311
cのすれで聞けよ
0320デフォルトの名無しさん2013/12/10(火) 16:08:58.08
茶化している奴がこのスレにはいるみたいなんだよ
炎上学習法という正式名称もあるみたいだけどw、このスレには通用しないから
0321デフォルトの名無しさん2013/12/10(火) 18:11:33.09
>>311
最悪
お前と同じ
0322デフォルトの名無しさん2013/12/13(金) 23:25:05.29
C++って肥大化しすぎてもう終わりだ、なんて声聞くけど、代替言語あるの?
D言語ってどうなった?消えた?
0323デフォルトの名無しさん2013/12/13(金) 23:31:56.25
facebookが採用したとかなんとか
0324デフォルトの名無しさん2013/12/13(金) 23:38:21.13
facebookってPHP採用して、PHPが広く普及するのを牽引したらしいけど、
Dもそうなるのか?まさかな…
0325デフォルトの名無しさん2013/12/14(土) 00:23:27.61
C++2011はオナニー言語なので代替など必要ありません。
実用には2003をお使い下さい
0326デフォルトの名無しさん2013/12/14(土) 00:41:41.83
時代は Haskell
C++er なら割と簡単に Haskell を使い熟せると思うなぁ
0327デフォルトの名無しさん2013/12/14(土) 05:50:08.94
>>326
関数を作ったり使ったりはわりと簡単
コンピネータまでいくと概念を理解できるかどうかだけど

問題は副作用の記述が面倒なところ
最初は文字列の表示もよくわからなかったよ
0328デフォルトの名無しさん2013/12/14(土) 08:27:20.84
グリーがハスケル使ってたりするな。
0329デフォルトの名無しさん2013/12/14(土) 10:37:11.59
ところで来年は本当に規格が改訂されるんだろうな
0xとか言い続けて2009年までに出せなかった能無し共の仕事は信用ならない
0330デフォルトの名無しさん2013/12/14(土) 11:11:50.60
0x0b年に出たんだから良いではないか
0331デフォルトの名無しさん2013/12/14(土) 11:14:27.04
GHもそんなこと言ってたな
■ このスレッドは過去ログ倉庫に格納されています