次スレを立てる時は本文の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
レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
873デフォルトの名無しさん
2018/08/18(土) 18:54:50.29ID:dGIgNVTb うんC:はSSD一択だね
できればSLCのやつ
できればSLCのやつ
875デフォルトの名無しさん
2018/08/18(土) 19:49:21.94ID:Q0JvwYe1 最近は途中にマウント出来るのよ
876デフォルトの名無しさん
2018/08/18(土) 19:55:17.69ID:gititOy1877デフォルトの名無しさん
2018/08/18(土) 21:21:58.94ID:F905Yoig 理由はわかるが柔軟性が欲しい
class A{
};
class B: public A{
};
temaplate<typename T>
void test(T a, T b){
}
A a;
B b;
test(a, b);//Error.型が一致しない。
test<A>(a, b);//ok.明治すればok
class A{
};
class B: public A{
};
temaplate<typename T>
void test(T a, T b){
}
A a;
B b;
test(a, b);//Error.型が一致しない。
test<A>(a, b);//ok.明治すればok
878さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/18(土) 21:38:06.56ID:hlXM+cNJ 型を分けて、共通型を使えば?
879デフォルトの名無しさん
2018/08/18(土) 23:59:13.75ID:3zCcdQf6 >>874
きみなら一時間とは言わないが、一日でそのくらい稼ぎ出すんやろ?
きみなら一時間とは言わないが、一日でそのくらい稼ぎ出すんやろ?
880デフォルトの名無しさん
2018/08/19(日) 00:05:39.35ID:RqnFNWUi >>878
こうすればokというのはわかるけども面倒
template<typename LT, typename RT>
void test(LT const& a, RT const& b){
}
こうすればokというのはわかるけども面倒
template<typename LT, typename RT>
void test(LT const& a, RT const& b){
}
881857
2018/08/19(日) 01:30:39.96ID:KCtnHGyc882デフォルトの名無しさん
2018/08/19(日) 09:02:49.22ID:qd68oMAq じゃあメモ帳で。
883デフォルトの名無しさん
2018/08/19(日) 09:12:46.20ID:qaYG8ur7 notepad++かサクラエディタ
ttps://forest.watch.impress.co.jp/library/software/notepadplusp/
ttps://sakura-editor.github.io/download.html
ttps://forest.watch.impress.co.jp/library/software/notepadplusp/
ttps://sakura-editor.github.io/download.html
884デフォルトの名無しさん
2018/08/19(日) 09:25:18.62ID:wM6XArJ0 vim は、
迷ったら、Esc を押して、コマンド入力モードにする。
そこで、a を押せば、append 文字入力モードになる
:q! 保存せずに終了
:wq 保存して終了
迷ったら、Esc を押して、コマンド入力モードにする。
そこで、a を押せば、append 文字入力モードになる
:q! 保存せずに終了
:wq 保存して終了
885デフォルトの名無しさん
2018/08/19(日) 09:26:24.72ID:xXXJlhyc 今は spacemacs 以外あり得ないよ
欠点が厳密にゼロ個な完全なチョイス
欠点が厳密にゼロ個な完全なチョイス
886デフォルトの名無しさん
2018/08/19(日) 09:40:59.64ID:0vPM1br5 最近はVSCodeが使い物になってきたぞ
CMakeとの連携も賢い
補完がまだ遅いが
CMakeとの連携も賢い
補完がまだ遅いが
887857
2018/08/19(日) 10:56:19.69ID:KCtnHGyc 自分はサクラエディタを10年以上愛用しています。
VisualStudioはコンパイラ兼デバッガとして利用してます。
VisualStudioはコンパイラ兼デバッガとして利用してます。
888デフォルトの名無しさん
2018/08/19(日) 14:03:03.06ID:5+hPFDRj 俺の main.cpp が 9万5千行 を超えた
ファイルサイズにして2.37MBある
クラス内でなら前方参照が可能なC++の盲点をついて
適当な struct でプログラム全体を丸ごと囲って
前方参照しまくり & ヘッダに全部書くスタイルで
一つのファイルに全部押し込めた
C++サイコー
ファイルサイズにして2.37MBある
クラス内でなら前方参照が可能なC++の盲点をついて
適当な struct でプログラム全体を丸ごと囲って
前方参照しまくり & ヘッダに全部書くスタイルで
一つのファイルに全部押し込めた
C++サイコー
889デフォルトの名無しさん
2018/08/19(日) 14:03:58.10ID:5+hPFDRj ちなみにコンパイルが遅くなるのと
コード補完が重くて使い物にならなくなるので
素人にはお勧めしない
コード補完が重くて使い物にならなくなるので
素人にはお勧めしない
890デフォルトの名無しさん
2018/08/19(日) 14:13:18.08ID:MSEMVqOe キモイコードだなぁ。メンテナーが泣くぞ。
891デフォルトの名無しさん
2018/08/19(日) 14:20:44.33ID:5+hPFDRj 大丈夫
サンデープログラマーで俺一人だけしか書かないから
ソースコードも公開してないしな
サンデープログラマーで俺一人だけしか書かないから
ソースコードも公開してないしな
892デフォルトの名無しさん
2018/08/19(日) 14:22:38.72ID:RqnFNWUi なんのプログラムを書いたらそうなるんだ・・・
893デフォルトの名無しさん
2018/08/19(日) 14:58:05.30ID:0c0A7VGq894デフォルトの名無しさん
2018/08/19(日) 15:04:46.82ID:5+hPFDRj こういうのは怖いもの見たさみたいなのもあると思うし
これだけでコンパイルして動くものでもないので一応ソースコード
あまりにもアレで、そっ閉じだろうけど
http://www.geocities.jp/notenop/tomato_player/main.cpp
コンパイル済みのソフトは
http://www.geocities.jp/notenop/tomato_player/index.html
からダウンロードできる
非同期処理に俺が思いついた横断的でトリッキーなアイデア
https://qiita.com/notenopg/items/40571e69986a58b888a0
↑が使われている
安全にキャンセル出来なきゃ await の意味ないでしょ!ってなもんで
でもなかなか理解されないんだよなぁ、すごいアイデアだと思うんだが
それからツリービューのアイテムのピン止めのアイデアは
お気に入りやタブの代わりになって画期的だと思うんだが
何故マイクロソフトがエクスプローラに実装しないのか謎
特許関係かね
あとはフォルダ階層をそのまま扱える木構造なプレイリストとか
そんなことやってたら9万行超えました
ちなみにUIはDirectXでちまちまフルスクラッチで手書き
その代わりその辺のソフトに負けない速度で、4K対応
これだけでコンパイルして動くものでもないので一応ソースコード
あまりにもアレで、そっ閉じだろうけど
http://www.geocities.jp/notenop/tomato_player/main.cpp
コンパイル済みのソフトは
http://www.geocities.jp/notenop/tomato_player/index.html
からダウンロードできる
非同期処理に俺が思いついた横断的でトリッキーなアイデア
https://qiita.com/notenopg/items/40571e69986a58b888a0
↑が使われている
安全にキャンセル出来なきゃ await の意味ないでしょ!ってなもんで
でもなかなか理解されないんだよなぁ、すごいアイデアだと思うんだが
それからツリービューのアイテムのピン止めのアイデアは
お気に入りやタブの代わりになって画期的だと思うんだが
何故マイクロソフトがエクスプローラに実装しないのか謎
特許関係かね
あとはフォルダ階層をそのまま扱える木構造なプレイリストとか
そんなことやってたら9万行超えました
ちなみにUIはDirectXでちまちまフルスクラッチで手書き
その代わりその辺のソフトに負けない速度で、4K対応
895デフォルトの名無しさん
2018/08/19(日) 15:07:41.51ID:5+hPFDRj 庶民には理解できなくても
プログラマであるあなたたちなら
ピン止めできるツリービューが如何に画期的か理解できると思うんだよね
タスクバーでも何でもピン止めの時代なのに
ツリービューもピン止めできて良いと思うのよね
プログラマであるあなたたちなら
ピン止めできるツリービューが如何に画期的か理解できると思うんだよね
タスクバーでも何でもピン止めの時代なのに
ツリービューもピン止めできて良いと思うのよね
896デフォルトの名無しさん
2018/08/19(日) 15:09:21.21ID:5+hPFDRj ああ、ツールバーとかスクロールバーとかのレベルで
全部フルスクラッチでDirectXで手書きだから
全部フルスクラッチでDirectXで手書きだから
897デフォルトの名無しさん
2018/08/19(日) 16:00:06.94ID:RqnFNWUi 庶民なる俺様にはピン留出来ることの利点がわからん
898デフォルトの名無しさん
2018/08/19(日) 20:23:08.28ID:qaYG8ur7 サクラエディタが優秀だということは分かった
899デフォルトの名無しさん
2018/08/19(日) 21:38:13.69ID:Vpx5N+CG 見て欲しくて我慢できなかったんだな
901デフォルトの名無しさん
2018/08/20(月) 08:03:46.47ID:4c85aa3D >>900
Makeって何?
Makeって何?
902デフォルトの名無しさん
2018/08/20(月) 14:14:50.32ID:PcIDGZDw >>901
来年にはSunOSにも移植される予定の超最新自動ビルドツールの紹介だよ!
来年にはSunOSにも移植される予定の超最新自動ビルドツールの紹介だよ!
903デフォルトの名無しさん
2018/08/20(月) 15:49:07.20ID:YVC1gYT/ >>901
オライリーがおかしな実験をする本だよ
オライリーがおかしな実験をする本だよ
>>901
昔から使われている原始的といってよいビルドツールです
makefile に依存関係を書いておいて、コマンドラインで「 make -j」と起動すると、記述した依存関係にしたがってコンパイル・リンクが行われます
昔から使われている原始的といってよいビルドツールです
makefile に依存関係を書いておいて、コマンドラインで「 make -j」と起動すると、記述した依存関係にしたがってコンパイル・リンクが行われます
905デフォルトの名無しさん
2018/08/20(月) 18:59:55.06ID:ftO9aq8g Linuxなんかで配布されたソースから実行ファイルを作成したいって時にお世話になります
906デフォルトの名無しさん
2018/08/20(月) 20:29:15.33ID:MlhHAxXO >>904
この本を読めばコンパイルについても分かるの?
この本を読めばコンパイルについても分かるの?
908デフォルトの名無しさん
2018/08/20(月) 23:46:22.40ID:qkN29+U3 クラス生成に挫折したのかな?w
909デフォルトの名無しさん
2018/08/21(火) 00:03:12.90ID:Y1eCmHG/ C++自体の本はたくさんあるのにビルドやプロジェクト構成について解説した本って全くないよな
コピペで受け継いできた秘伝のMakefileやconfigureが蔓延してるのなんとかしてくれ
売れないだろうがCMakeの解説本が一冊欲しい
コピペで受け継いできた秘伝のMakefileやconfigureが蔓延してるのなんとかしてくれ
売れないだろうがCMakeの解説本が一冊欲しい
910デフォルトの名無しさん
2018/08/21(火) 00:06:59.04ID:FygfW+En cmake はつい最近のVisual Studio 2017アップデートで標準インストールされるようになったから潜在需要あるかもね…。
911デフォルトの名無しさん
2018/08/21(火) 00:51:54.00ID:zakr4cIe なんでビルドツールっていつも怪物化しちゃうんだろうな
makeがもう誰も手に負えない怪獣のくせにずっと定番に居座ってて、「Makefileを作るツール」が乱立してそれぞれ怪物化してるの勘弁してほしい
makeがもう誰も手に負えない怪獣のくせにずっと定番に居座ってて、「Makefileを作るツール」が乱立してそれぞれ怪物化してるの勘弁してほしい
913デフォルトの名無しさん
2018/08/21(火) 01:35:58.44ID:mIqstMqN makefileなんて複雑な事求めないなら手でかけるレベルだよ
これが複雑で手に負えないとなると、プログラミングも怪しくなる
これが複雑で手に負えないとなると、プログラミングも怪しくなる
914デフォルトの名無しさん
2018/08/21(火) 01:36:31.95ID:Y1eCmHG/ ビルドについての教育がないがしろにされてるのが全ての元凶
ある程度以上の規模のプロジェクトを構成するベストプラクティスが示されているところを見たことがない
適当に好きなところから取ってきて動けばいいやくらいに改変して使ってるのが現状
ある程度以上の規模のプロジェクトを構成するベストプラクティスが示されているところを見たことがない
適当に好きなところから取ってきて動けばいいやくらいに改変して使ってるのが現状
915デフォルトの名無しさん
2018/08/21(火) 07:06:57.27ID:agJOmNk0 丁寧に書いてるのはこれくらい。
ttp://aegis.sourceforge.net/auug97.pdf
ttp://aegis.sourceforge.net/auug97.pdf
916デフォルトの名無しさん
2018/08/21(火) 11:19:53.91ID:zakr4cIe 複雑なことをしたいからビルドツールを使うわけでしてねぇ・・・
917デフォルトの名無しさん
2018/08/21(火) 11:24:41.92ID:mIqstMqN したいという意思があるなら、がんばって理解も出来るだろう
そこまでしなくても、最低限のルール覚えれば使える
そこまでしなくても、最低限のルール覚えれば使える
918デフォルトの名無しさん
2018/08/21(火) 11:53:12.22ID:gERn4ySS >>915
goto有害説をもじってるんだなw
Makefileを書いていていつも思うのは
ソースファイルの依存関係はソースファイルの中に書いてあるのに
それをまた二度手間で書かねばならないのがイヤ
面倒くさいのはともかく間違えやすいから
goto有害説をもじってるんだなw
Makefileを書いていていつも思うのは
ソースファイルの依存関係はソースファイルの中に書いてあるのに
それをまた二度手間で書かねばならないのがイヤ
面倒くさいのはともかく間違えやすいから
919デフォルトの名無しさん
2018/08/21(火) 12:20:54.13ID:JvEAafEP >>918
automake とか gcc -MM とかの話?
automake とか gcc -MM とかの話?
920デフォルトの名無しさん
2018/08/21(火) 12:38:18.13ID:Dn6CvPAP rustとc++どっちも使ってる人いる?
921デフォルトの名無しさん
2018/08/21(火) 12:59:21.72ID:gERn4ySS922デフォルトの名無しさん
2018/08/21(火) 13:56:49.24ID:Y1HyydAv923デフォルトの名無しさん
2018/08/21(火) 16:55:02.40ID:59eaeAGG924デフォルトの名無しさん
2018/08/21(火) 17:26:56.17ID:/1sxYxCd エンジニアでなく園児にゃ
925デフォルトの名無しさん
2018/08/21(火) 19:40:42.98ID:Y1eCmHG/ WindowsでCMakeはfind_packageでだいたい詰む
vcpkgで対応できなければ結局自分で書くはめになり、面倒くさくなってmingw使うかVSのプロジェクトと同居することになる
vcpkgで対応できなければ結局自分で書くはめになり、面倒くさくなってmingw使うかVSのプロジェクトと同居することになる
926デフォルトの名無しさん
2018/08/22(水) 16:26:31.16ID:BT6ndhEb C++ とは直接関係ないけど make/Makefile は擬似ターゲットを使って
バッチ的な定型処理を1個のファイルでまとめて管理できるのが便利でね。
make find WORD=...
全ソースから WORD= で指定した単語を含む行を検索、みたいな。
自分で作った便利ターゲットの使い方を usage: に書いとくのを忘れるけど。
バッチ的な定型処理を1個のファイルでまとめて管理できるのが便利でね。
make find WORD=...
全ソースから WORD= で指定した単語を含む行を検索、みたいな。
自分で作った便利ターゲットの使い方を usage: に書いとくのを忘れるけど。
927デフォルトの名無しさん
2018/08/22(水) 17:38:28.37ID:ua+EoSC8 >>926
perlでok
perlでok
928デフォルトの名無しさん
2018/08/22(水) 19:10:59.67ID:lMaJ9TV4 C言語のビルドシステムならC言語で書けるようにするべきだと思うのだがよく分からない専用の言語を使わされるのは何故
この手のスクリプト言語は可読性がデバッガもないから中身を探るのが難しすぎる
この手のスクリプト言語は可読性がデバッガもないから中身を探るのが難しすぎる
929デフォルトの名無しさん
2018/08/22(水) 19:27:23.21ID:J6lVaoNe 君がそれを作って公開してみれば良いと思うんだが
930デフォルトの名無しさん
2018/08/22(水) 20:50:10.20ID:4/HlUcDP C++のビルドツールといえばboostでお馴染みのbjam
実質boost専用に作ってるだけなのにあんな聳え立つ糞の山になっちゃうんだからビルドツールって怖いね
実質boost専用に作ってるだけなのにあんな聳え立つ糞の山になっちゃうんだからビルドツールって怖いね
931デフォルトの名無しさん
2018/08/22(水) 22:31:38.77ID:G7PvCZFg ソフト名がまだ決まっていないけどプログラム開発がスタートするって一般的だと思うんですが、
こういうときってコードネームを付けますよね?
このとき、VisualStudioのプロジェクト名もコードネームにしますよね?
アプリのウィンドウキャプションとかはアプリ名が決まり次第反映させられますけど、
プロジェクト名は途中で変えられないので、そのままになってしまいますが、しょうがないですよね?
要は社内の開発で問題なければOKで、
リリースしたときにコードネームがどこかに混じってしまわないように気を付ければいいだけですよね?
みなさんがどうされてるのか気になったのでお聞きしました。
こういうときってコードネームを付けますよね?
このとき、VisualStudioのプロジェクト名もコードネームにしますよね?
アプリのウィンドウキャプションとかはアプリ名が決まり次第反映させられますけど、
プロジェクト名は途中で変えられないので、そのままになってしまいますが、しょうがないですよね?
要は社内の開発で問題なければOKで、
リリースしたときにコードネームがどこかに混じってしまわないように気を付ければいいだけですよね?
みなさんがどうされてるのか気になったのでお聞きしました。
932デフォルトの名無しさん
2018/08/22(水) 23:03:51.57ID:4/HlUcDP 必要なら変えるよ
slnやvcxprojはただのxmlだから名前変えるだけならそんなに難しくない
slnやvcxprojはただのxmlだから名前変えるだけならそんなに難しくない
933デフォルトの名無しさん
2018/08/23(木) 00:06:20.88ID:0/a4zf/K 英国ポエムシリーズでしょう
bjam=ブージャムは言うまでも無く、パンジャンドラムすらも無論英国のポエムから採られた
他にも兵器界隈ではスナークとかが存在するのは周知の通り
日本だと仏教用語から採ればいいんじゃあないですかね
bjam=ブージャムは言うまでも無く、パンジャンドラムすらも無論英国のポエムから採られた
他にも兵器界隈ではスナークとかが存在するのは周知の通り
日本だと仏教用語から採ればいいんじゃあないですかね
934931
2018/08/23(木) 00:10:54.70ID:U43QDDsh std::ref() について教えてください
void f(:ostringstream &os) { ... }
int main() {
ostringstream s;
std::thread(f, std::ref(s));
...
とありましたが、なぜ呼び出し側で「おまじない」のstd::ref() が必要なのか理解できません
どんなときに呼び出し側で std::ref() が必要なのでしょうか?
テンプレート関係かと思いましたが
https://ideone.com/7fF53F
は問題なく、std::ref() が必要となるプログラム例を思いつくことができません
よろしくお願いいたします
void f(:ostringstream &os) { ... }
int main() {
ostringstream s;
std::thread(f, std::ref(s));
...
とありましたが、なぜ呼び出し側で「おまじない」のstd::ref() が必要なのか理解できません
どんなときに呼び出し側で std::ref() が必要なのでしょうか?
テンプレート関係かと思いましたが
https://ideone.com/7fF53F
は問題なく、std::ref() が必要となるプログラム例を思いつくことができません
よろしくお願いいたします
936さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/23(木) 22:17:07.10ID:Z2Fii0dD std::refの規格表とソースを見たか?
余計なコピーを抑制してるんだ。
余計なコピーを抑制してるんだ。
937さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/23(木) 22:18:22.48ID:Z2Fii0dD s/表/票/
938デフォルトの名無しさん
2018/08/23(木) 22:33:14.61ID:/6RK1Hlx 非参照なテンプレートな引数に一時変数を作らずに参照を渡せる
>>938
コメントありがとうございます
コピーコンストラクタが禁止されている std::cout をテンプレート引数にわたす場合で理解できました(かもしれません)
https://ideone.com/3eqEJY
一つ質問ですが、私なら、このプログラム例の y()
template<class T> void y((*f)(), T &os) { ... }
のように、テンプレートを書く時点で参照に書いてしまうのですが、
あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
コメントありがとうございます
コピーコンストラクタが禁止されている std::cout をテンプレート引数にわたす場合で理解できました(かもしれません)
https://ideone.com/3eqEJY
一つ質問ですが、私なら、このプログラム例の y()
template<class T> void y((*f)(), T &os) { ... }
のように、テンプレートを書く時点で参照に書いてしまうのですが、
あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
940デフォルトの名無しさん
2018/08/24(金) 02:37:15.13ID:kcQyW4E+ 大阪はいたって平和
しょぼいにもホドがある
しょぼいにもホドがある
x86 の cmpxchg を使いたくて、gcc 拡張の __sync_val_compare_and_swap() を試していました
http://shinh.hatenablog.com/entry/20060817/1155781747
https://ideone.com/tpefmL
c++11 に std::atomic::compare_exchange_weak() を見つけましたが、これは適当に(任意に) new で確保したヒープにも適用できるものでしょうか?
http://shinh.hatenablog.com/entry/20060817/1155781747
https://ideone.com/tpefmL
c++11 に std::atomic::compare_exchange_weak() を見つけましたが、これは適当に(任意に) new で確保したヒープにも適用できるものでしょうか?
943デフォルトの名無しさん
2018/08/24(金) 07:59:06.64ID:ZkSPfVdV 何で出来ないと思うの?
944デフォルトの名無しさん
2018/08/25(土) 08:53:09.59ID:/11s7nnG 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)
{
}
};
何かうまい手ない?
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)
{
}
};
何かうまい手ない?
945デフォルトの名無しさん
2018/08/25(土) 13:51:57.64ID:rL3qzGy6 そりゃまー、実体化した内部ではTは決定済みだろうから無理だろう。
Anyつかうとか・・・。
Anyつかうとか・・・。
946デフォルトの名無しさん
2018/08/25(土) 14:24:43.54ID:rL3qzGy6 あ、すまん。おかしなこと言った。
えーっと、変数が一個じゃ足りないな。
イニシャライザーリスト使うか、下位関数にキックするか。
えーっと、変数が一個じゃ足りないな。
イニシャライザーリスト使うか、下位関数にキックするか。
947デフォルトの名無しさん
2018/08/25(土) 15:05:48.05ID:XmdDRLnv そもそもコンストラクタの委譲は再帰禁止だったと思うが
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う
948デフォルトの名無しさん
2018/08/25(土) 15:57:42.66ID:rL3qzGy6949デフォルトの名無しさん
2018/08/25(土) 16:53:35.24ID:rL3qzGy6 そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。
どうやったっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。
どうやったっけ?
950デフォルトの名無しさん
2018/08/25(土) 18:24:33.46ID:/11s7nnG951デフォルトの名無しさん
2018/08/25(土) 18:56:26.92ID:5ar3I1wr >>948
つ catch(A<B, C> E)
つ catch(A<B, C> E)
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++で使ってよかったっけ?
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★2 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」 [冬月記者★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 小泉防衛相「危険回避のための十分な情報なかった」「問題の本質は30分にわたるレーダー照射」…中国側の音声公開を強く批判 [♪♪♪★]
- 【野球】止まらぬ野球人口減少に危機感 ラミレス氏「野球人口は激減、人気自体も下がっている」「もっと野球ができる環境を整えるべき」 [冬月記者★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 日本「助けて!日銀が国債買いオペ増額を表明したら円安になっちゃったの!」 [972432215]
- 小泉防衛大臣「中国から通告はあったが具体的ではなかった」 [834922174]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- Vtuberラーメン70%オフwwwwwwwww
- 【高市悲報】漁師さん「ハタハタが豊漁になるように祈願した!」1匹しか獲れなかったと話題になる😰 [616817505]
- 【画像】地下アイドルのサービスやばいな
