次スレを立てる時は本文の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】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part137
レス数が1000を超えています。これ以上書き込みはできません。
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
952デフォルトの名無しさん
2018/08/25(土) 19:23:40.93ID:r5O9PJUC >>949
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと
953デフォルトの名無しさん
2018/08/25(土) 20:44:16.72ID:rL3qzGy6954デフォルトの名無しさん
2018/08/25(土) 20:51:49.46ID:cO/mJ1mq955デフォルトの名無しさん
2018/08/25(土) 20:52:40.48ID:cO/mJ1mq 真にご法度なのはデストラクタの中での例外発生なんじゃ…
956デフォルトの名無しさん
2018/08/25(土) 21:06:57.48ID:tfF8aOe1957デフォルトの名無しさん
2018/08/25(土) 22:12:01.59ID:rL3qzGy6 https://wandbox.org/permlink/uEH5L9KBV9L1BdYn
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。
しかし、理解が深まって良かったかな。うえー。
>>956
投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。
しかし、理解が深まって良かったかな。うえー。
>>956
投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?
958デフォルトの名無しさん
2018/08/25(土) 22:26:38.94ID:rL3qzGy6 しかし、色々試したが結局うまくいかず、解説ページの死角にぽろっとあるのが最高にリアル。
959デフォルトの名無しさん
2018/08/25(土) 23:19:11.18ID:5ar3I1wr >>957
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。
Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。
「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。
Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。
「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?
960デフォルトの名無しさん
2018/08/25(土) 23:23:12.69ID:rL3qzGy6961デフォルトの名無しさん
2018/08/25(土) 23:24:09.84ID:Efgla6YW >>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。
設計としてスレッドの引数はコピーして渡すほうが安全性は高い。
一般論で言えば一時オブジェクトを受け取るならconst&になるけど、
これだとmoveできないので逆に性能が劣化する場合がある。
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。
設計としてスレッドの引数はコピーして渡すほうが安全性は高い。
一般論で言えば一時オブジェクトを受け取るならconst&になるけど、
これだとmoveできないので逆に性能が劣化する場合がある。
962デフォルトの名無しさん
2018/08/25(土) 23:32:37.06ID:Efgla6YW 最近の提案なんかではメモリ確保失敗は回復が難しく一般的な例外とは
区別して考えるのが合理的なんじゃないかって話が出てきてる。
んで新しく静的な例外を導入しようっていう話が上がってる。
区別して考えるのが合理的なんじゃないかって話が出てきてる。
んで新しく静的な例外を導入しようっていう話が上がってる。
963デフォルトの名無しさん
2018/08/25(土) 23:39:53.83ID:rL3qzGy6 >>962
コンパイルタイムで例外わかるんだったら、普通にコンパイルエラーにしよ?
コンパイルタイムで例外わかるんだったら、普通にコンパイルエラーにしよ?
964デフォルトの名無しさん
2018/08/25(土) 23:47:31.99ID:cO/mJ1mq メメント・メモリ
965デフォルトの名無しさん
2018/08/26(日) 02:56:15.82ID:zhFpXu2e ヒープが無くなったら、HeapCreateで作れば良いのに。
by マリー・アンチョワネット
by マリー・アンチョワネット
966デフォルトの名無しさん
2018/08/26(日) 14:06:36.91ID:Q8b2w7YQ メモリがどれくらい必要なのか簡単に静的解析できたらいいなあと思うけど
再帰関数のメモリ消費量とか計算難しそう
再帰関数のメモリ消費量とか計算難しそう
967デフォルトの名無しさん
2018/08/26(日) 14:10:00.99ID:BwlGzYMc mcc68kなんかは-Sでアセンブラ出力させると
コメントにスタック使用量を入れてくれてたな
コメントにスタック使用量を入れてくれてたな
968デフォルトの名無しさん
2018/08/26(日) 19:26:38.30ID:OiuVvKbz 割り込みになるけどちょっと質問させてください
struct hoge {
int a, b, c;
};
auto a = hoge{1, 2, 3};
auto b = int[]{1, 2, 3, 4};
aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、
bみたいに配列を明示して作ることって出来ないですかね?
単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします
struct hoge {
int a, b, c;
};
auto a = hoge{1, 2, 3};
auto b = int[]{1, 2, 3, 4};
aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、
bみたいに配列を明示して作ることって出来ないですかね?
単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします
969デフォルトの名無しさん
2018/08/26(日) 19:31:13.94ID:Ws2ZfrVi int[]は int * のシンタックスシュガー
970デフォルトの名無しさん
2018/08/26(日) 19:34:14.95ID:OiuVvKbz int[4]でもだめだったんですよね・・・・
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました
お騒がしてすみませそ
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました
お騒がしてすみませそ
971デフォルトの名無しさん
2018/08/26(日) 20:05:48.84ID:qnZA5cjL auto b ={1, 2, 3, 4};
972デフォルトの名無しさん
2018/08/26(日) 20:12:01.81ID:2rP1aXG6 >>970
それはC99の複合リテラルになるけど、C++で使ってよかったっけ?
それはC99の複合リテラルになるけど、C++で使ってよかったっけ?
973デフォルトの名無しさん
2018/08/26(日) 20:19:57.43ID:qnZA5cjL warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
974デフォルトの名無しさん
2018/08/26(日) 20:21:33.00ID:hANAm2gW 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;
}
#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;
}
975デフォルトの名無しさん
2018/08/26(日) 20:22:49.21ID:hANAm2gW c
b1:8
b2:16
b3:16
c++
b2:16
b3:16
b1:8
b2:16
b3:16
c++
b2:16
b3:16
976デフォルトの名無しさん
2018/08/26(日) 20:27:01.66ID:hANAm2gW うん
やっぱり
このスレにもアホしかいない
やっぱり
このスレにもアホしかいない
977さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/26(日) 20:28:44.90ID:Vxoswi+g >>976
自分が天才だと思っているなら、こんなところで遊んでないで、なんか凄いソフトを作ってくれよ。
自分が天才だと思っているなら、こんなところで遊んでないで、なんか凄いソフトを作ってくれよ。
978デフォルトの名無しさん
2018/08/26(日) 20:31:31.48ID:BwlGzYMc レス番が飛んでるなあ
979デフォルトの名無しさん
2018/08/26(日) 20:31:32.32ID:hANAm2gW オレは自分を天才とか思ってない
オレは天才じゃないが普通の人間だ
この板にいる低学歴知恵遅れが
まともじゃないのがヤバイといってるワケ
教育の程度や知能に大きな問題があるといってるわけ
しかもその自覚がない
まずまともな人間になるところから
オレは天才じゃないが普通の人間だ
この板にいる低学歴知恵遅れが
まともじゃないのがヤバイといってるワケ
教育の程度や知能に大きな問題があるといってるわけ
しかもその自覚がない
まずまともな人間になるところから
980デフォルトの名無しさん
2018/08/26(日) 20:44:37.30ID:qnZA5cjL 誤解したまま帰った?
auto a=(int[4]){1,2,3,4};
for(int i=0;i<4;i++)
{
printf("%d \n",a[i]);
}
出力
0
0
0
0
auto a=(int[4]){1,2,3,4};
for(int i=0;i<4;i++)
{
printf("%d \n",a[i]);
}
出力
0
0
0
0
981デフォルトの名無しさん
2018/08/26(日) 21:13:55.49ID:OiuVvKbz あー、すみませんautoって書いたのがまずかったですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした
autoだと配列の一時オブジェクトへのポインタになるからまずいですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした
autoだと配列の一時オブジェクトへのポインタになるからまずいですね
982デフォルトの名無しさん
2018/08/26(日) 21:54:34.00ID:7VGl0ROF >>981
autoでなくても不味いよ
autoでなくても不味いよ
983デフォルトの名無しさん
2018/08/26(日) 22:13:43.13ID:zpiwFHmU >>977
ほんこれ
ほんこれ
984デフォルトの名無しさん
2018/08/26(日) 22:53:29.24ID:OiuVvKbz >>982
なにがどうまずいですかね?
なにがどうまずいですかね?
985デフォルトの名無しさん
2018/08/27(月) 08:18:57.12ID:YiUsgylF まったりとしてコクが無く、魚介類の生臭さを濃縮したような
スープと同じぐらい不味い
スープと同じぐらい不味い
986デフォルトの名無しさん
2018/08/27(月) 13:42:16.09ID:QRiCvp9j きも
987944
2018/08/27(月) 13:55:56.63ID:vY3QDx2y >>948
お待たせ
俺っちの質問はnested_exceptionを使うケースなので、
948のコードでいうとBaseを多相的クラスにしといて
catch(Base&)で捕獲し、dynamic_castでBやCへの
アクセスを試みるというようなことだ
ところで
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;
これが読めん、何やってるのか教えてくれんか
お待たせ
俺っちの質問はnested_exceptionを使うケースなので、
948のコードでいうとBaseを多相的クラスにしといて
catch(Base&)で捕獲し、dynamic_castでBやCへの
アクセスを試みるというようなことだ
ところで
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;
これが読めん、何やってるのか教えてくれんか
988デフォルトの名無しさん
2018/08/27(月) 14:09:13.11ID:vY3QDx2y >>955
std::uncaught_exceptionというのがあるね
std::uncaught_exceptionというのがあるね
989デフォルトの名無しさん
2018/08/27(月) 14:23:40.86ID:QRiCvp9j >>987
クラステンプレートの引数の推論補助(deduction guide
クラステンプレートの引数の推論補助(deduction guide
990デフォルトの名無しさん
2018/08/27(月) 14:26:19.85ID:vY3QDx2y >>989
deduction guideね、thx
deduction guideね、thx
991さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/27(月) 15:42:34.96ID:JbKLTkj/ 次スレ頼む
992デフォルトの名無しさん
2018/08/27(月) 16:02:51.38ID:r/wp9j7z わたくしがC++で書き上げた超高性能次スレ立てマシーンなら次スレなんて一発ですよ
993デフォルトの名無しさん
2018/08/27(月) 16:03:14.62ID:vY3QDx2y994デフォルトの名無しさん
2018/08/28(火) 01:49:58.08ID:rjIDuLFn スレ番インクリメント機能はC++でも実装不可能なまでに困難な作業だったか
995デフォルトの名無しさん
2018/08/28(火) 06:13:26.80ID:UQgP5OTn スレ立てが競合した時の排他制御を実装してくれ
996デフォルトの名無しさん
2018/08/28(火) 06:22:11.76ID:XE/KW9kf板復帰(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!
997デフォルトの名無しさん
2018/08/28(火) 20:40:17.99ID:fGjEV9Ei 997
998デフォルトの名無しさん
2018/08/28(火) 20:40:50.96ID:fGjEV9Ei 998
999デフォルトの名無しさん
2018/08/28(火) 20:41:19.69ID:fGjEV9Ei 999
1000デフォルトの名無しさん
2018/08/28(火) 20:41:56.22ID:fGjEV9Ei 1000
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 45日 2時間 48分 54秒
新しいスレッドを立ててください。
life time: 45日 2時間 48分 54秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
