- 1 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:53:02.14 ID:FOAGvAbs.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part135 https://mevius.5ch.net/test/read.cgi/tech/1522495206/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) ----- テンプレ ここまで ----- VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 970 名前: mailto:sage [2018/08/24(金) 03:55:21.10 ID:A5L5xSI8.net]
- >>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなもの std::thread のコンストラクタを眺めていて気が付いたこと…これ、可変長テンプレートですね
- 971 名前: mailto:sage [2018/08/24(金) 04:17:14.78 ID:A5L5xSI8.net]
- x86 の cmpxchg を使いたくて、gcc 拡張の __sync_val_compare_and_swap() を試していました
shinh.hatenablog.com/entry/20060817/1155781747 https://ideone.com/tpefmL c++11 に std::atomic::compare_exchange_weak() を見つけましたが、これは適当に(任意に) new で確保したヒープにも適用できるものでしょうか?
- 972 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:59:06.64 ID:ZkSPfVdV.net]
- 何で出来ないと思うの?
- 973 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 08:53:09.59 ID:/11s7nnG.net]
- template <typename T, typename... ARGS>
class nested_error : public std::nested_exception, public ARGS... { public: nested_error(T const& t, ARGS const&... args) : T(t), nested_error(args...) //C3511 { } nested_error(T const& t) : T(t) { } }; 何かうまい手ない?
- 974 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:51:57.64 ID:rL3qzGy6.net]
- そりゃまー、実体化した内部ではTは決定済みだろうから無理だろう。
Anyつかうとか・・・。
- 975 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 14:24:43.54 ID:rL3qzGy6.net]
- あ、すまん。おかしなこと言った。
えーっと、変数が一個じゃ足りないな。 イニシャライザーリスト使うか、下位関数にキックするか。
- 976 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:05:48.05 ID:XmdDRLnv.net]
- そもそもコンストラクタの委譲は再帰禁止だったと思うが
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う
- 977 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:57:42.66 ID:rL3qzGy6.net]
- https://wandbox.org/permlink/KrUV4MTPdV0l4OoO
興味があったのでそれっぽいコード書いてみた。 これキャッチするの無理だろ。
- 978 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 16:53:35.24 ID:rL3qzGy6.net]
- そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。 どうやったっけ?
- 979 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:24:33.46 ID:/11s7nnG.net]
- >>948
なんか面白そうなのうpしてくれてありがとう すまん、今かなり酔っ払ってる 素面に戻ってからじっくり読むから ちょっと待ってて
- 980 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:56:26.92 ID:5ar3I1wr.net]
- >>948
つ catch(A<B, C> E)
- 981 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:23:40.93 ID:r5O9PJUC.net]
- >>949
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ? メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと
- 982 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:44:16.72 ID:rL3qzGy6.net]
- >>951
そらまー、引数がそれの時はできるけど、必ず把握はしてないでしょ。 >>952 あぁ、なるほど。ありがとう。
- 983 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:51:49.46 ID:cO/mJ1mq.net]
- >>952
メイヤーズ本に簡単な回避テクが書いてある 希ガス
- 984 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:52:40.48 ID:cO/mJ1mq.net]
- 真にご法度なのはデストラクタの中での例外発生なんじゃ…
- 985 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:06:57.48 ID:tfF8aOe1.net]
- >>953
951だけど、何したいのか分からない。 catch (decltype(X) E) ならええの?
- 986 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:12:01.59 ID:rL3qzGy6.net]
- https://wandbox.org/permlink/uEH5L9KBV9L1BdYn
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。 しかし、理解が深まって良かったかな。うえー。 >>956 投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?
- 987 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:26:38.94 ID:rL3qzGy6.net]
- しかし、色々試したが結局うまくいかず、解説ページの死角にぽろっとあるのが最高にリアル。
- 988 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:19:11.18 ID:5ar3I1wr.net]
- >>957
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。 Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。 「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?
- 989 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:23:12.69 ID:rL3qzGy6.net]
- >>959
うん。多分それで困ると思う。>>944が! メタプロやらないから可能性は感じるけど限界がわからない。 まぁ、俺は興味で書いただけだから、>>944がどうするかはシラネ・・・。
- 990 名前:デフォルトの名無しさん [2018/08/25(土) 23:24:09.84 ID:Efgla6YW.net]
- >>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか? threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。 設計としてスレッドの引数はコピーして渡すほうが安全性は高い。 一般論で言えば一時オブジェクトを受け取るならconst&になるけど、 これだとmoveできないので逆に性能が劣化する場合がある。
- 991 名前:デフォルトの名無しさん [2018/08/25(土) 23:32:37.06 ID:Efgla6YW.net]
- 最近の提案なんかではメモリ確保失敗は回復が難しく一般的な例外とは
区別して考えるのが合理的なんじゃないかって話が出てきてる。 んで新しく静的な例外を導入しようっていう話が上がってる。
- 992 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:39:53.83 ID:rL3qzGy6.net]
- >>962
コンパイルタイムで例外わかるんだったら、普通にコンパイルエラーにしよ?
- 993 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:47:31.99 ID:cO/mJ1mq.net]
- メメント・メモリ
- 994 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:56:15.82 ID:zhFpXu2e.net]
- ヒープが無くなったら、HeapCreateで作れば良いのに。
by マリー・アンチョワネット
- 995 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:06:36.91 ID:Q8b2w7YQ.net]
- メモリがどれくらい必要なのか簡単に静的解析できたらいいなあと思うけど
再帰関数のメモリ消費量とか計算難しそう
- 996 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:10:00.99 ID:BwlGzYMc.net]
- mcc68kなんかは-Sでアセンブラ出力させると
コメントにスタック使用量を入れてくれてたな
- 997 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:26:38.30 ID:OiuVvKbz.net]
- 割り込みになるけどちょっと質問させてください
struct hoge { int a, b, c; }; auto a = hoge{1, 2, 3}; auto b = int[]{1, 2, 3, 4}; aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、 bみたいに配列を明示して作ることって出来ないですかね? 単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします
- 998 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:31:13.94 ID:Ws2ZfrVi.net]
- int[]は int * のシンタックスシュガー
- 999 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:34:14.95 ID:OiuVvKbz.net]
- int[4]でもだめだったんですよね・・・・
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました お騒がしてすみませそ
- 1000 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:05:48.84 ID:qnZA5cjL.net]
- auto b ={1, 2, 3, 4};
- 1001 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:12:01.81 ID:2rP1aXG6.net]
- >>970
それはC99の複合リテラルになるけど、C++で使ってよかったっけ?
- 1002 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:19:57.43 ID:qnZA5cjL.net]
- warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
- 1003 名前:デフォルトの名無しさん [2018/08/26(日) 20:21:33.00 ID:hANAm2gW.net]
- https://ideone.com/A9Bccy
#include <stdio.h> int main() { int* b1 = {1, 2, 3, 4}; int b2[4] = {5, 6, 7, 8}; int b3[] = {9, 10, 11, 12}; fprintf(stdout, "b1:%u\n", sizeof(b1)); fprintf(stdout, "b2:%u\n", sizeof(b2)); fprintf(stdout, "b3:%u\n", sizeof(b3)); return 0; } https://ideone.com/rJw9cK #include <iostream> using namespace std; int main() { // int* b1 = {1, 2, 3, 4}; コンパイルエラー int b2[4] = {5, 6, 7, 8}; int b3[] = {9, 10, 11, 12}; // cout << "b1:" << sizeof(b1) << std::endl; cout << "b2:" << sizeof(b2) << std::endl; cout << "b3:" << sizeof(b3) << std::endl; return 0; }
- 1004 名前:デフォルトの名無しさん [2018/08/26(日) 20:22:49.21 ID:hANAm2gW.net]
- c
b1:8 b2:16 b3:16 c++ b2:16 b3:16
- 1005 名前:デフォルトの名無しさん [2018/08/26(日) 20:27:01.66 ID:hANAm2gW.net]
- うん
やっぱり このスレにもアホしかいない
- 1006 名前:さまよえる蟻人間 mailto:sage [2018/08/26(日) 20:28:44.90 ID:Vxoswi+g.net]
- >>976
自分が天才だと思っているなら、こんなところで遊んでないで、なんか凄いソフトを作ってくれよ。
- 1007 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:31:31.48 ID:BwlGzYMc.net]
- レス番が飛んでるなあ
- 1008 名前:デフォルトの名無しさん [2018/08/26(日) 20:31:32.32 ID:hANAm2gW.net]
- オレは自分を天才とか思ってない
オレは天才じゃないが普通の人間だ この板にいる低学歴知恵遅れが まともじゃないのがヤバイといってるワケ 教育の程度や知能に大きな問題があるといってるわけ しかもその自覚がない まずまともな人間になるところから
- 1009 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:44:37.30 ID:qnZA5cjL.net]
- 誤解したまま帰った?
auto a=(int[4]){1,2,3,4}; for(int i=0;i<4;i++) { printf("%d \n",a[i]); } 出力 0 0 0 0
- 1010 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:13:55.49 ID:OiuVvKbz.net]
- あー、すみませんautoって書いたのがまずかったですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした autoだと配列の一時オブジェクトへのポインタになるからまずいですね
- 1011 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:54:34.00 ID:7VGl0ROF.net]
- >>981
autoでなくても不味いよ
- 1012 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:13:43.13 ID:zpiwFHmU.net]
- >>977
ほんこれ
- 1013 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:53:29.24 ID:OiuVvKbz.net]
- >>982
なにがどうまずいですかね?
- 1014 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:18:57.12 ID:YiUsgylF.net]
- まったりとしてコクが無く、魚介類の生臭さを濃縮したような
スープと同じぐらい不味い
- 1015 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:42:16.09 ID:QRiCvp9j.net]
- きも
- 1016 名前:944 mailto:sage [2018/08/27(月) 13:55:56.63 ID:vY3QDx2y.net]
- >>948
お待たせ 俺っちの質問はnested_exceptionを使うケースなので、 948のコードでいうとBaseを多相的クラスにしといて catch(Base&)で捕獲し、dynamic_castでBやCへの アクセスを試みるというようなことだ ところで template<class... Ts> overloaded(Ts...)->overloaded<Ts...>; これが読めん、何やってるのか教えてくれんか
- 1017 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:09:13.11 ID:vY3QDx2y.net]
- >>955
std::uncaught_exceptionというのがあるね
- 1018 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:23:40.86 ID:QRiCvp9j.net]
- >>987
クラステンプレートの引数の推論補助(deduction guide
- 1019 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:26:19.85 ID:vY3QDx2y.net]
- >>989
deduction guideね、thx
- 1020 名前:さまよえる蟻人間 mailto:sage [2018/08/27(月) 15:42:34.96 ID:JbKLTkj/.net]
- 次スレ頼む
- 1021 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:02:51.38 ID:r/wp9j7z.net]
- わたくしがC++で書き上げた超高性能次スレ立てマシーンなら次スレなんて一発ですよ
- 1022 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:03:14.62 ID:vY3QDx2y.net]
- 立てたよ
https://mevius.5ch.net/test/read.cgi/tech/1535353320
- 1023 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 01:49:58.08 ID:rjIDuLFn.net]
- スレ番インクリメント機能はC++でも実装不可能なまでに困難な作業だったか
- 1024 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:13:26.80 ID:UQgP5OTn.net]
- スレ立てが競合した時の排他制御を実装してくれ
- 1025 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:22:11.76 ID:XE/KW9kf.net]
-
板復帰(OK!:Gather .dat file OK:moving DAT 703 -> 686:Get subject.txt OK:Check subject.txt 703 -> 690:Overwrite OK)0.84, 0.77, 0.74 age subject:690 dat:686 rebuild OK!
- 1026 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:17.99 ID:fGjEV9Ei.net]
- 997
- 1027 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:50.96 ID:fGjEV9Ei.net]
- 998
- 1028 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:19.69 ID:fGjEV9Ei.net]
- 999
- 1029 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:56.22 ID:fGjEV9Ei.net]
- 1000
- 1030 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 45日 2時間 48分 54秒
- 1031 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|