1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ] The C++ Standards Committee www.open-std.org/JTC1/SC22/WG21/ Wikipedia https://en.wikipedia.org/wiki/C%2B%2B14 C++11/C++1y 18 toro.2ch.net/test/read.cgi/tech/1365073520/
202 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:55:58.66 ] vc++のことも忘れないであげてください
203 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 12:57:42.87 ] パターンマッチは入らないのかな
204 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:05:48.12 ] スマポが配列を指す時に苦労した これデフォルトのデリータがdeleteなんだな だからカスタムデリータでdelete[]をラムダ式か何かで指定するか、 std::default_delete()を使わないといけないのか
205 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:42:02.32 ] デフォで配列版が用意されてるのはunique_ptrだけなんだな。 なぜだろ?
206 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:10:40.65 ] >>205 オブジェクトを複数のオブジェクトで共有するならまだしも、 生配列を複数のオブジェクトで共有して何に使うんだよ。 要は生配列共有すんなって事だ。
207 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:20:29.44 ] vectorかarrayを使っておけというところじゃね。 C++の動的配列って中途半端だよね。 delete[]で各要素のデストラクタ呼べるように サイズとか内部的に持っているのに普通には使えないとか。 deleteとdelete[]使い分けろとか。
208 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:38:04.69 ] >>207 new T;で生成したオブジェクトdeleteする時にnew T[];とどうやって区別するんだ。 常にnew T[]した時余計な情報載せるのか?
209 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:59:52.30 ] >>207 デストラクターが無い場合に要素数を持たないようメモリをケチること許す言語仕様ゆえ
210 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:07:57.10 ] >>209 Cの配列と互換性持たせるためでもあるな。
211 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:13:06.24 ] それは関係ないんじゃ 使う側が見たnew式の結果は区別が付かないだから
212 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:19:54.68 ] >>206 配列の時だけってか?
213 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 21:23:17.89 ] >>205 unique_ptrには他のスマポと違ってコピーコンストラクタがないから 配列版=>単一版への誤ったコピーが起きにくい。
214 名前:デフォルトの名無しさん [2013/11/24(日) 22:22:47.31 ] >>207 ぶぁか
215 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:26:15.38 ] >>211 単体のnewに要素数情報乗っけられるのも困るな 1000回newしたら8000バイト近くdeleteの為だけに主記憶領域食われるんだからな
216 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:41:30.04 ] >>213 テンプレートコンストラクタだから正しく言うとコピーコンストラクタじゃない
217 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:49:40.23 ] コピコンじゃないの!?
218 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 00:09:23.90 ] コピコンが無いってのは確かだが、配列=>単一のコピーの話をするんであれば問題なのはそこじゃない
219 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 01:00:10.11 ] 配列=>単一のコピーってどういう話?
220 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 06:19:02.67 ] >>219 unique_ptr<T[]> a(new T[8]>; unique_ptr<T> b(a>; ってのが通ったらまずいが、unique_ptrには下のコンストラクタがないから大丈夫。 shared_ptr<T[]> c(new T[16]>; shared_ptr<T> d(c); ってのが通ったらまずいが、shared_ptr<T[]>なんてものはないから大丈夫。
221 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 09:59:08.91 ] shared_from_this()というのがいまいち理解できない これどうなってんの?
222 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:53:44.84 ] やってることはトリッキーだけど単純なことなんだがシンプルで具体的な使用例がだせないな shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得るというイディオムで使うんだけどな
223 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:26:31.25 ] www.ogis-ri.co.jp/otc/hiroba/technical/boost/index.html のコラム2
224 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:40:55.34 ] なるほどかなり特殊なケースみたいだな
225 名前:デフォルトの名無しさん [2013/11/25(月) 22:42:55.82 ] >>222 「shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得る」というイディオム 長えよ
226 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 00:02:08.16 ] イディオム名はそのまま『shared from this イディオム』でそれはどういうもの?って説明が>>222 だろ
227 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 21:33:57.58 ] boost::shared_ptrに記憶領域の番地を入れた際、 要約値を鍵にした連想配列(hash map)に 記憶領域の番地を格納。 boost::shared_from_thisを実行した際、 この連想配列からthisの持つ番地で、 boost::shared_ptrをとってくるって仕組みじゃないか?
228 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:00:12.84 ] 内部にthisを指すweak_ptr持ってるだけだよ 後はshared_ptrのコンストラクタがenable_shared_thisを継承したクラスを特別扱いしている
229 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:40:40.37 ] 参照カウンターの整合性はどうなるんだ?
230 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 09:48:18.32 ] >>229 どんなケースで問題が起こると思ってるの?
231 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:38:48.13 ] newして返したboost::shared_ptrと、 boost::shared_ptrで確保した、boost::shared_ptrを返した時。 特に片方が共同所有権としてつかわれ、 片方がEventの委譲用とかよくありがちじゃん。
232 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:42:03.66 ] それで何か問題になるのか
233 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 19:47:52.61 ] >>232 二重delete
234 名前:デフォルトの名無しさん mailto:sage [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が指す管理領域へのポインタへと設定している
235 名前:デフォルトの名無しさん mailto:sage [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を構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される 全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
236 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 01:04:05.46 ] >>231 > newして返したboost::shared_ptr わからん。何を new ?返すってどこからどこに? > boost::shared_ptrで確保 わからん。 shared_ptr に何かを「確保」する機能なんて無いよね? さっぱりわからん。
237 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 10:41:28.04 ] >>231 >>233 こいつはたぶんshared_ptrそのものを理解してない
238 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 19:18:57.03 ] 普通に使えば普通に使えるライブラリを 浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す C++ではよくあること
239 名前:デフォルトの名無しさん mailto:sage [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 ってのを知っていたらうまいことできたんだろうか
240 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 01:14:30.49 ] うん
241 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 10:18:00.12 ] static_pointer_castとか面倒だけどこれ使わないと未定義の動作になっちゃうのね
242 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 10:37:25.12 ] std::accumulateって情報落ちの対策してるの?
243 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 11:42:28.09 ] 全然
244 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 12:21:41.45 ] なんで現行規格や規格外の話ばっかしてんの?
245 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 18:26:52.04 ] 規格とか仕様とかどうでもいいと思ってるから
246 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 21:46:12.55 ] もうそれ以上VC++さんを責めるのはやめてあげてください。 Windowsユーザーを嫌いになっても、VC++のことは嫌いにならないください!
247 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 07:24:14.22 ] 2013でもconstexprコンストラクタが使えないんだっけ?
248 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 12:44:25.52 ] スレ違い
249 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 15:16:58.20 ] じゃあC++1yの話題をふってくれ
250 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:20:02.98 ] 何も無理してスレを伸ばすことは無い。
251 名前:デフォルトの名無しさん mailto:sage [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
252 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 09:53:12.44 ] そりゃそれ自体はコピーだからな
253 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 10:38:08.55 ] ああなるほど
254 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 11:05:40.87 ] ついでにvoid f(T &&)にしたところで const int &自体はconstじゃないから
255 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:17:53.77 ] コピーだからじゃなくて、fooに渡されるのはstd::reference_wrapper<T>だからだろ
256 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:55:11.13 ] std::reference_wrapper<int> じゃないの
257 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:07:07.83 ] そうだね >>251 のfooのTは 1番目 std::reference_wrapper<int> 2番目 std::reference_wrapper<const int> になる
258 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 15:15:10.61 ] うへ('A`)
259 名前:デフォルトの名無しさん mailto:sage [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&.
260 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 16:27:32.40 ] 間違ってるね
261 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 19:51:23.63 ] Standard Library 2ndのasync/thread回りをようやく読み終えた これは難しい・・・ 次はC++ Concurrency in Actionを読むけどどこまで理解出来るやら・・・ しかしこれを理解しないとマルチコアのメリットが活かせないわけだしなあ
262 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 20:17:59.91 ] 何を言っているんだ マルチスレッドが難しい→まあそうだがスレ違いだ C++のasyncが難しい→んなもの知らなくてもマルチコアは活かせる
263 名前:デフォルトの名無しさん [2013/12/06(金) 20:26:17.66 ] ライブラリ作る人のための最低限のツールだもんね。 GC周りと一緒で。
264 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 20:27:53.55 ] OpenMPとかだろ?そういうのじゃなくて移植性の高いのが欲しいわけで
265 名前:デフォルトの名無しさん [2013/12/06(金) 21:00:59.87 ] ぶっちゃけスレ違いです。
266 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 21:25:50.97 ] asyncとthreadはスレ違いじゃないだろ
267 名前:デフォルトの名無しさん [2013/12/06(金) 21:33:06.89 ] スレを扱うからスレは違って当たり前・・・w
268 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 21:39:56.32 ] どうでもいいけどなんでいつもageて書いてんの?バレバレなんですけど
269 名前:デフォルトの名無しさん [2013/12/06(金) 21:58:36.96 ] sageる義務がないからさ そんなことも知らないの? 馬鹿なの? 死ぬの?
270 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 22:02:52.04 ] あーだめだこいつ頭おかしいや 相手にしないでおこう OpenMPはスレ違いだが、threadやasyncはスレ違いではない れっきとしたC++11の話題だ
271 名前:デフォルトの名無しさん [2013/12/06(金) 22:11:13.55 ] どうでもいいことは始めからぬかすな 顔おかしいの? 不細工なの? 相手いないの? 単為生殖なの?
272 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 22:58:05.20 ] >>270 ここはC++第三版(2011/9/1改訂)のスレではない 馬 鹿
273 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 00:41:02.43 ] 11で追加された新参者だから14/1yで変更されない保障はないっていう意味だとか
274 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 02:34:31.91 ] C++11の話題はスレ違い async退学の話ならして良い
275 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 05:34:44.72 ] clangでも入れるしかないか VSに入れられるんだからそれで遊べる
276 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 11:24:24.94 ] 現行規格はスレ違い
277 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 11:27:15.41 ] じゃあ次期の話をしようか。 委員会ドラフトってどうなったの? 無かったことにされるレベルで変更入りまくり?
278 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 13:37:43.49 ] C++11のスレがないじゃないか
279 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 13:51:57.55 ] C++相談室 part107 toro.2ch.net/test/read.cgi/tech/1384818417/ 【初心者歓迎】C/C++室 Ver.88【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1384061494/
280 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 15:19:00.84 ] C++11は現行規格なわけだし、 特別扱いする必要は無いんだお
281 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 16:13:58.10 ] 了解した しかし今のC++スレの質の低下はひどいもんだ あそこでスレッドやらasyncを質問して果たして答えてくれるのやら 試してみよう
282 名前:デフォルトの名無しさん [2013/12/07(土) 18:48:32.64 ] 必要だと思う人がいるのなら、C++11のスレ作ったらいいんじゃないの?
283 名前:デフォルトの名無しさん [2013/12/07(土) 19:03:22.93 ] アイちゃん認定されそう
284 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 19:48:05.55 ] C++14をやるのにどのコンパイラ使っている? VC2013? >>281 実際にthread,asyncを使っている奴は少ないだろうからな 対応遅すぎたって感じだし
285 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 21:20:09.07 ] VS2012でも2013でもいいからClangを入れてしまえばいいだろう threadは実際にマルチスレッドプログラミングをするにはプリミティブ過ぎて使いにくいから asyncが考えられたんだろうが、まだ完成度が低い それにデッドロックやレース状態、リソーススタベーションを起こさずにスラスラプログラムを 書ける奴がどの位いるやら C++14でもっとまともになるっしょ
286 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 21:36:02.04 ] 僕ちゃんバカだからVSでのビルドわかんなーい><
287 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:04:49.66 ] 何言ってんの "clang visual studio 2013" とかでぐぐればいくらでも出てくるだろ
288 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 05:08:13.45 ] C++14なんてもう出るのか。C++11からすぐだったけど、何か不具合でもあったの? 禿も、またプログラミング言語C++書き直しやん。
289 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 08:32:22.14 ] これからのコンパイラはClangだらけになったりして 一番対応が早くて楽だしな
290 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 11:06:23.03 ] >>287 ぜんぜんないよ!失敗談はたまにでてくるけど
291 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:11:37.44 ] MSがclangを採用するって噂も一時期あったね、そういえば
292 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 14:14:26.48 ] よく知らんけどclang使うとなんかいいことあんの?
293 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 14:48:39.05 ] >>292 今すぐC++14が使える
294 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 15:39:04.90 ] オナニーができます
295 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:43:50.07 ] >>291 clang関係のリクルート出してた件? VSで採用って話までは疑問視されてたような でも何やらされてるんだろうね
296 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:19:07.49 ] そそ、それ 疑問視されてたって話は知らなかったけど IntelliSenseとかIDE側で使っているのかも知れないね
297 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:29:11.81 ] >>296 使ってたらコードが混ざってるだろ。 VSでclangを使うことを想定した作業とか、 差し替えた時の互換性を高める作業とか、そのへんじゃねーの?
298 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:43:25.22 ] この辺じゃないの? C++ AMP の clang 対応。 hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/
299 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 19:52:19.02 ] C++ AMP がMSのC++後続の標準の言語になるのかね 規格のC++じゃ時代遅れなのかもな。C#で脱C++を開始した感じがあるからな
300 名前:デフォルトの名無しさん [2013/12/08(日) 20:26:03.49 ] C++ AMPが何か知ってから語れ。
301 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 20:35:43.88 ] >>300 規格のC++じゃヘテロ対応できないだろ。GPU載っているCPUが普通だし そんなのに対応するのにC++プラスアルファが必要で独自拡張。
302 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:02:22.52 ] 脱C++