[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/05 17:41 / Filesize : 300 KB / Number-of Response : 1027
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part157



1 名前:デフォルトの名無しさん mailto:sage [2021/08/09(月) 10:57:31.60 ID:JaaB5Egp.net]
前スレ
C++相談室 part156
https://mevius.5ch.net/test/read.cgi/tech/1621389313/

766 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 13:25:23.12 ID:4nkSMT7f.net]
Microsoft、不具合修正一年くらいかかったよ

767 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 13:53:44.09 ID:emsejTNf.net]
MSは直らんなあ
google よりはマシかもな

768 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 15:13:15.33 ID:gI621CUN.net]
単発IDは自演の可能性ありますね

769 名前:デフォルトの名無しさん [2021/10/19(火) 19:19:45.97 ID:GtxXqLyf.net]
2000年ごろのLinuxユーザーなら、ゲイツがワクチンにウィルス仕込んでると大騒ぎしてただろうけどな。

770 名前:デフォルトの名無しさん [2021/10/19(火) 19:24:26.03 ID:GtxXqLyf.net]
>>732
ご指摘の動作は弊社ソフトウェア製品の問題点であることが確認されました。
引き続き調査を行います。
進展状況はID2273405でご確認できます。
今後も弊社製品ご愛顧のほどよろしくお願いします。

771 名前:デフォルトの名無しさん [2021/10/19(火) 19:28:33.46 ID:GtxXqLyf.net]
>>732
「証拠はあんのか?おお〜ん?」と言ってる晋三が暴力団に見える。
証拠がなくたって傍目に明らか。
なんで5000円でスイートに泊まれるわけない。
嘘つかずにごめんなさいしたら良かっただけ。

772 名前:デフォルトの名無しさん [2021/10/19(火) 19:52:06.47 ID:L2ZQN19z.net]
>>752
5Gにつながるためにもちゃんとワクチン2回打てよ
11月になったらワクチン接種会場がさらに減るぞ

773 名前:デフォルトの名無しさん [2021/10/19(火) 19:56:28.13 ID:GtxXqLyf.net]
>>753
桜を見る会に桜井誠は呼ばれたのか?

774 名前:ハノン mailto:sage [2021/10/19(火) 20:03:42.12 ID:KyySFZDA.net]
>>731
炎上学習法とはよくいわれたものです…



775 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 20:09:58.44 ID:L2ZQN19z.net]
違います
今後の心配は園遊会やお正月などのお食事会にモェ呼ばれるのか、という点です

776 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:14:37.76 ID:0k8Pnquo.net]
>>729
RAIIだから例外安全、と言うのは短絡的
文盲に読み飛ばされたのかしらんが>>720>>721において
@ オブジェクトが個々に盲目的にリソースを解放するのが常に安全と言えるか?
A リソース解放時にエラーが生じたものを無視しておいて安全と言えるか?(あるいはコードの追加無しに無視せずに済む方法があるか?)

777 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:16:51.24 ID:0k8Pnquo.net]
B リソース解放を解放しない瑕疵があるオブジェクトの混入が無いことをどうやって保証するのか?
という3つの問題提起をしているのに対して、あいまいに取り繕って逃げたのが>>722

@〜Bに定説が無いとすれば(実際無いのだが)、例外安全というのは信奉する馬鹿の数だけ定義があるという話

778 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:19:57.61 ID:NMVwWGr0.net]
盲目じゃねえし
uncaught_excptionsも知らんようだな
って言うとにわかで調べてシッタカこくんだろうけど
今の今までおくびにも出さなかったことで
どの程度の野郎かは察しがついてる

779 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:21:14.97 ID:0k8Pnquo.net]
だいたい火災で炎上するビルの8階から人が飛び降りたとして、
例外安全とやらでできることはせいぜい人を地面に軟着陸させて生命を守るぐらいの話で、
ビルの火災を消化はしないし(それをやるのは消防署
消化後のビルを復旧はしないし(それをやるのは各種の工事屋
復旧した8界のオフィスに飛び降りた人を戻して業務を再開させることもしない(それをやるのやEmployer

普通の人はまず火災を防ぐことを第一に目指すのだが、
例外安全主義者はそんなスタイルを古いと言い、例外安全に作っとけば安全と言い張るのだ

780 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:31:45.94 ID:NMVwWGr0.net]
全然関係ねえよ
マジでビルから飛び降りて氏んだら?

781 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:33:15.63 ID:0k8Pnquo.net]
>>759
@〜Bのどれにも掠りもしない反応
(を出したことによって知能程度に察しが付く

782 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:35:17.39 ID:0k8Pnquo.net]
でfgets()に戻るが、以下のコードの例外の捕捉のコストは話の本筋ではないので無視していただきたいのだが
(そのコストが気になるなら「スコープを抜けたら閉じるFILE*」みたいなブツを作ったらfclose()のエラー処理以外は同じにできる)、
void foo() {
 FILE* fp = fopen(...); // fpがNULLだった場合のチェックは記載省略
 try {
  Bar x, y, z;
  (fgets()とかのコード)
 } catch (Exception ex)
  fclose(fp)
}
}
とかなコードを見たら普通の人は「chatchに飛んできて大丈夫なんか?」とtryブロック内をチェックするが
(x, y, zの解放が保証される、とかは関係無しに
例外安全主義者にかかってはそんなことはお構いなしである。とにかく安全と言い張る

783 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:39:44.59 ID:kO478Zp/.net]
バカの主張: バグがあるかも知れないから例外安全は「使い物にならない」

アホすぎだろ…

784 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:44:50.14 ID:0k8Pnquo.net]
>>764
>例外安全はやれるならやった方が良いのは認める(>>721
>例外安全に予期せぬ事象が起きたときのセーフティーネット以上のことを気体できい(>>727
というわけで文盲に言われたくは無い

特定のケースにおいて、例外でエラー処理を安全に書けてその後のリカバリーもスムーズにいきますよ、
みたいな特定方面で有効なソリューションとして例外安全を勧めるのであれば問題無いのだが、
テキストファイルをfgets()で読むという絶対的に正しい事柄への批判に無理矢理つなげようとするから
話がおかしくなる



785 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:45:51.66 ID:GCto648C.net]
>>763
x,y,zのデストラクタならcatchに飛んだ時に呼ばれることは保証されてるけど…?
例えばyのコンストラクタで例外飛んでもxは~Bar()呼んでzは呼ばないくらいコンパイラがやってくれるけど…?
そういうの忘れずやってくれるのがコンパイラだから任せようぜっていうのがRAIIなんだけど…?

まさかこんな事も知らずに例外安全がどうのと偉そうに論じてたの?嘘だろ?

786 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:47:08.92 ID:GCto648C.net]
>>765
お前はもう喋るなド初心者

787 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:47:29.23 ID:0k8Pnquo.net]
>>766
ま た 文 盲 か
>(x, y, zの解放が保証される、
と書いてあるわけだが?
しかしだからといっても普通の人はtryブロック内をチェックするだろ、という主張

788 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 07:55:59.64 ID:GCto648C.net]
>>768
初心者はおとなしく教科書の質問だけしてろよ
何かを知っているふりをするのをやめろ

789 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 08:05:08.97 ID:0k8Pnquo.net]
>>769
質問ですが例外安全の教科書として藻前は何を読んだことがあるのでぃすか?

790 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 08:13:47.58 ID:kO478Zp/.net]
> 例外安全主義者にかかってはそんなことはお構いなしである。とにかく安全と言い張る
どこの主張を言ってるのか知らんけどどう見てもお前の方が「文盲」なわけだがw

791 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 08:27:40.98 ID:DhnN+uGO.net]
>>763
RAII を使わず明示的な catch でリソース解放しているコードを見て、一般的な C++ プログラマは「危険」だと見るのでは?
その例だと「fgets()とかのコード」内の return などで fp がリークする可能性があるわけで。

792 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 08:31:29.32 ID:xpWbVnlK.net]
誰が「例外安全なら大丈夫」と言っているの?レス番は?

793 名前:デフォルトの名無しさん [2021/10/20(水) 09:12:35.95 ID:OEiI06HQ.net]
Kuso.KENTA.

794 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 09:21:20.26 ID:glY3n63N.net]
いつになっても
do {
} while(0);
でbreakをgoto代わりに使うしかないのか



795 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 09:23:08.99 ID:NMVwWGr0.net]
>>763
めまいが

796 名前:キるほどのひでえコード
やめてくれバカがうつる
[]
[ここ壊れてます]

797 名前:デフォルトの名無しさん [2021/10/20(水) 09:35:49.31 ID:OEiI06HQ.net]
>>743
観ようとしなければ何も観えない
そんな簡単なことにも気付けない

798 名前:デフォルトの名無しさん [2021/10/20(水) 09:39:48.17 ID:OEiI06HQ.net]
>>757
2GB以上じゃなくて良いけど
そこそこの大きさのファイルで
書き込んでcloseしてる途中に
電源OFFとかになったら例外どころじゃないんだが
最近のOSはちゃんとコンデンサ放電仕切るまでの間に書き込み終了するんだろうか

799 名前:デフォルトの名無しさん [2021/10/20(水) 09:44:46.84 ID:OEiI06HQ.net]
>>760
サンフランシスコ地震で高速道路崩落←直後に「日本では起こり得ない」と言われた
インドネシアの津波で街が吹っ飛ぶ←直後に「日本では起こり得ない」と言われた
チェルノブイリで原発爆発←直後に「日本では起こり得ない」と言われた
武漢でコロナ感染者急増でパニック&パンデミック←直後に「日本では起こり得ない」と言われた
いつも否定したがる人はいるしそれを信じたがるひともいる

800 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:10:43.38 ID:NMVwWGr0.net]
>>778
UPSもアレスタも知らないど素人w

801 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:15:17.23 ID:glY3n63N.net]
ファイル編集中、Ctrl+Sを押下して保存しようとした瞬間に停電になったことがある
再起動後、ファイルは存在しているのに中身は\0で埋められていたよ

802 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:16:33.48 ID:PaxGKk4c.net]
>>778
・UPSぐらい付けろよ
・障害が心配なら多重化しとけ
って話で例外安全とはレイヤーの違う話

803 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:28:28.97 ID:EqJEar1P.net]
>>770
古典だけどExceptionalC++あたりから読み始めるのがいいよ
準拠規格が古いから所々アレだけど大きな考え方を学ぶには十分だろう
感想聞かせてね

804 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:41:33.49 ID:Px+syONf.net]
いつもの



805 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 11:43:42.24 ID:BFKUlxpT.net]
786以降C++なコードもC++なURLも載せないやつは発言禁止な

806 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 12:28:18.88 ID:vkb7a42p.net]
>>763
try内のコードが例外出さない限りcloseされない

807 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 12:55:58.99 ID:Px+syONf.net]
確かにそうだ
すっかりfinallyのつもりで読んでた
やはりRAIIは正義

808 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:11:06.68 ID:NMVwWGr0.net]
いーやfreadで2G超のファイルはvsでも完全にあつかえる不都合はない
と、自信を持って断言できないゴミが
URL乞食でドヤってるのバカすぎ

809 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:28:11.75 ID:vkb7a42p.net]
C++にもfinally欲しい

810 名前:デフォルトの名無しさん [2021/10/20(水) 13:30:01.90 ID:OEiI06HQ.net]
fseek()/ftell()が32bit用でfseeki64()/ftelli64()の方を使ってないというオチか

811 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:36:27.87 ID:glY3n63N.net]
自信をもって断言したところで、モリカケ・桜を見る会と同じことになるだけだよ
アベノセイダーズは不具合を見つけてくるまで決して許さない

812 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:39:14.76 ID:glY3n63N.net]
>>789
コストラクタでラムダ式をメンバ変数に受け取りデストラクタでそのラムダ式のメンバ変数を実行するクラステンプレートを自作すれば問題解決

813 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:41:35.24 ID:NsIIvpqv.net]
fseekの引数はなぜああしたんだろうね

814 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:46:56.17 ID:glY3n63N.net]
宇宙人がいないことを証明するための労力たるや



815 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:50:04.27 ID:NMVwWGr0.net]
不都合があるという主張であろうと
不都合がないという主張であろうと
自分でコード書けないゴミは引っ込んでろ

816 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 13:53:43.95 ID:glY3n63N.net]
>>795
そのとおりだな、まずお前が引っ込め

817 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 14:13:30.21 ID:glY3n63N.net]
再帰呼び出し

我々の宇宙は高度な文明を持つ知的生命体の実験により作られたものであると推測するハーバード大学の科学者 : カラパイア
https://karapaia.com/archives/52306877.html

818 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 14:38:01.57 ID:NMVwWGr0.net]
>>796
おいURL乞食、おまえに言ってんだよ、おまえに
俺はftellで例示するコード出してんだよ
同類呼ばわりすんな穢らわしい

819 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 14:47:18.86 ID:BFKUlxpT.net]
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdio>
#include <algorithm>
int main()
{
const char path[] = { "hoge.dat" };
std::vector<char> buffer(1024 * 1024); // 1MB
std::ofstream f(path, std::ios::binary);
for (int gb = 0; gb < 5; ++gb) {
std::fill(buffer.begin(), buffer.end(), static_cast<char>(gb));
for (int i = 0; i < 1024; ++i) f.write(buffer.data(), buffer.size());
}
f.close();
#pragma warning(suppress : 4996)
std::FILE* fp = std::fopen(path, "rb");
for (int i = 0; i < 5 * 1024; ++i) {
if (std::fread(buffer.data(), sizeof(buffer[0]), buffer.size(), fp) < buffer.size()) return 1;
for (auto ch : buffer) if (ch != static_cast<char>(i / 1024)) return 2;
}
std::fclose(fp);
std::cout << static_cast<int>(buffer[buffer.size() - 1]) << std::endl;
return 0;
}
とりあえずVC++2019でx86(32bit)ビルドして実行したら終了コード0の出力4だったのでfread 4GBは超えられてる模様

820 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 15:12:34.13 ID:glY3n63N.net]
>>799
それは、おま環にすぎないので不具合がないことの証明にはならない
不具合を見つけるのがお前の責務だ
赤木さんのように自○したくなるまで頑張って探せ

821 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 15:18:25.38 ID:BFKUlxpT.net]
今日は2つのIDで頑張ってるみたいだね

822 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 15:29:22.63 ID:NMVwWGr0.net]
プログラム技術板の正規メンバに
クソ以外の乞食が何か寝言ぬかしとんな

823 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 15:34:29.03 ID:glY3n63N.net]
お前らの家の冷蔵庫にエルビス・プレスリーがいないからといって、この世にエルビス・プレスリーがいないことの証明にはならないんだよ
血を吐くまで探せ

824 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 15:55:06.91 ID:4r95dvH8.net]
不具合あるのを証明したほうがてっとりばやい



825 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 16:02:32.88 ID:glY3n63N.net]
あぁ?わかって言ってんのか?
泥棒の証拠を泥棒に探させるのがアベガー品質だぞ

826 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 16:09:49.79 ID:Px+syONf.net]
元々>>637がC++でもfgetsを使う俺は天才などとのたもうて
>>687がFILE*を使うなら例外安全をどう保証するのという話だったのが、
当の>>637>>691でfread/fgets自体が例外を投げる可能性(?)という謎の問題を考え始め
>>710が根拠不明の2GB制限の話を持ち出し

問題があると考えるひとは存在しない2個の問題を同時に考えて混乱し
まあまあ分かってる人はRAIIすればいいじゃん(ってかfstreamでいいじゃん)で話が終わっている

まとめるとこんなところか?

827 名前:デフォルトの名無しさん [2021/10/20(水) 16:17:28.71 ID:glY3n63N.net]
挙証責任をガン無視できる文部科学省元事務次官前川喜平こそ最強
座右の銘は面従腹背、ライフワークは貧困調査

828 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 16:39:46.06 ID:NMVwWGr0.net]
キチガイ極左は内ゲバで共食いしとれ

829 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 00:40:30.45 ID:ObBh/r ]
[ここ壊れてます]

830 名前:k9.net mailto: >>806
俺はcの標準ライブラリ使うならosの関数使えって言ってた人でアンカの中には登場しない人だけど
「根拠不明の2GB制限」についてはlarge file問題というのが昔あった
https://en.wikipedia.org/wiki/Large-file_support
LinuxなどUnix系が64bit環境にほぼ移行した現在その問題はレアケースだとは思うけど
32bitアプリが割と残っているWindowsだと実際のところどうなのか分からない
でもfreadくらいは出来そうだと考えわざわざコード書いただけ(>>799)
ちなみにLinuxでもdebian系のantiX 19.4 32bit環境では#define _FILE_OFFSET_BITS 64がないとfopenがNULLを返していた
[]
[ここ壊れてます]

831 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 00:51:53.61 ID:l0SlZ35R.net]
話の肝は「私が間違ってました。ごめんなさい」と素直に言えるかどうかなわけで
小室文書みたいな屁理屈の羅列はいらねンだわ

832 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 01:06:38.58 ID:5bux1k1I.net]
>>807
NHK は メード イン ジャパン とか オーダー メード とか表記するのに
メイド 喫茶は なぜ メイド 表記なのですか?

833 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 01:19:29.04 ID:ObBh/rk9.net]
ちなみに>>809の「cの標準ライブラリ使うならosの関数」という意味で以前実験した結果も貼っとく
read, fread, std::ifstream::readの比較
https://ideone.com/H2jc7B
systemdのユーザーごとのRAMディスクを使っているのでそれがある環境でだけ動作する
ubuntu 20.04 64bit環境で実行した結果だと↓
$ g++ -O2 test.cpp -o test
$ ./test
227
267
225
$

834 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 03:46:14.13 ID:Y6x8PTxQ.net]
>>811
前者がmadeで後者がmaidだからじゃね?



835 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 07:45:14.90 ID:5PpYpVBN.net]
以前はメードだったと思うけどね

836 名前:デフォルトの名無しさん [2021/10/21(木) 11:19:37.65 ID:l0SlZ35R.net]
ババ抜きはOld maidの日本語訳だよ
セクシズムやエイジズムはポリコレの立場から見てどうだろうね

837 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 12:39:37.82 ID:u1ltZUWw.net]
regexで\dを使いたい場合はどうやるん?

838 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 14:10:28.52 ID:ObBh/rk9.net]
https://cpprefjp.github.io/reference/regex/basic_regex.html

839 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 17:33:55.95 ID:MfhbDLcG.net]
>>812
その比較でなんで fread だけ遅いんだ?と思ってコード見たら fread じゃなくて fgets になってた。
あと read_cpp_standard() の if (std::cin.fail()) もたぶん f.fail() の間違い。

840 名前:デフォルトの名無しさん [2021/10/21(木) 18:24:19.20 ID:/1ln80gU.net]
>>815
フェミが言葉狩りのネタにしないのは何故

841 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 18:42:48.64 ID:7ERuyWg6.net]
言葉狩りなんてないから

842 名前:デフォルトの名無しさん [2021/10/21(木) 18:56:39.47 ID:ObBh/rk9.net]
>>818
thx
>>812のコードは脳内破棄してくれ
指摘された部分を修正した
https://ideone.com/DoI3ww

同環境での測定結果が↓
214
213
214

freadだとバッファリングされるからその分遅いのかと勝手に思ってたらそんなところから間違ってたとはすまんw

843 名前:デフォルトの名無しさん [2021/10/22(金) 00:41:05.61 ID:bIdSm1HR.net]
BB抜きが有ってGG抜きが無いのは差別

844 名前:デフォルトの名無しさん [2021/10/22(金) 00:43:55.21 ID:bIdSm1HR.net]
>>821
fread最強でFA



845 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 01:17:58.50 ID:JLUkeFzw.net]
freadのバイナリな
DMA効くのは
テキストはゴミ

846 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 02:55:23.69 ID:ugOmuUc2.net]
>>822
ジジ抜きもあるよ。
ジジ抜きはジョーカーを使わない。
適当な札を一枚抜いておいて組にならない札を最後まで持ってた奴が負け。
どれが負け札なのか最後までわからないというのがゲームの面白い部分。

ちなみに日本語でジジ抜きと呼ばれているゲームこそが Old maid (行き遅れ、お局様) の本来のルールで、
ペア (結婚相手) がないことを Old maid に喩えた命名になっている。

847 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 05:43:15.83 ID:I4IH0MDY.net]
C++20ちょっと書き始めたらvscodeのインテリセンスが何でもないところにエラーの波線出しまくってくる

848 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 07:07:31.23 ID:viI1I/mh.net]
DMAか、懐かしい

849 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 12:50:15.03 ID:xpSH/+fs.net]
>>826
どの環境でそうなる?

850 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 13:37:10.17 ID:I4IH0MDY.net]
>>828
OS: Windows 8.1 (64 bit)
コンパイラ: MinGW GCC 11.1.0

文句を言ってくる拡張機能は多分普通の"Microsoft C/C++ 拡張機能"でコードの例としては
https://wandbox.org/permlink/Fcqjvfqt8rWVqren
こんな感じ

エラーは
operator<=>: 戻り値の型だけで識別される関数はオーバーロードできません
requires(1個目): こちらでは requires 句は許可されていません (テンプレート関数ではありません)
vec: エイリアス テンプレート "vec" の引数リストがありません
v: ';' が必要です
という感じ

まあエイリアスのやつはC++17でも言えるけど

851 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 23:23:13.68 ID:Q/4+pM2R.net]
Pythonのリストのように不定型の配列を作るにはどうすればいいですか?

vector<int> a;
vector<double> b;
vector<vector<any>> hoge;
hoge.emplace_back(a);
hoge.emplace_back(b);

みたいなことをしたいですが、エラーになりました。
最終目的は、
void f(vector<vector<any>>, vector<vector<any>>)
のような不定型配列を複数引数に取る関数を作りたいです。

852 名前:デフォルトの名無しさん mailto:sage [2021/10/22(金) 23:45:34.05 ID:vgFDGRgE.net]
std::variantつかうとか

853 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 01:05:44.90 ID:UQ/XjfNb.net]
>>830
出来るといえば出来るんだが、動的型っぽいことを C++ でやろうとすると煩雑だよ。
std::any は何でも格納できるが使うときには結局は元の型として取りださないといけない。
格納することが出来たとして、その後にどういう風に使うのかによってデザインの仕方がかわってくる。

854 名前:ハノン mailto:sage [2021/10/23(土) 01:33:33.73 ID:0KDU0Kot.net]
>>830
C++17以降、へえ、こんなこともできるんだ… https://cpprefjp.github.io/reference/variant/variant.html
https://ideone.com/G8IPFR
>>831
ありがとうございます!



855 名前:ハノン mailto:sage [2021/10/23(土) 01:34:50.09 ID:0KDU0Kot.net]
>>832
うん、実用に供するまでには結構大変そう、使い道がわからん…

856 名前:はちみつ餃子 mailto:sage [2021/10/23(土) 01:57:47.58 ID:UQ/XjfNb.net]
>>834
クラスの設計段階で抽象クラスとの継承関係を作っておくだとかいった方法で多相にするのが
旧来からの方法で、それができるならそのほうがまともなものになると思うんだが、
そうは言ってもユーザーからは弄れない既存のクラスをどうしても使いたいということも無くはない。

根本的な部分をいじれないときに場当たり的にどうにかするよりは std::any や std::variant を使ったら
少しはマシかもねという程度の話で、あまり積極的に使うようなものではないというのが私の感触だな。

857 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 08:10:22.62 ID:LycCK1PV.net]
void*よりはちょっとマシって程度の感覚だな

858 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 10:04:52.59 ID:rMqegMI3.net]
>>832
その後の使い方は、基本的には
全要素をany_castでstringにして使うつもりです。
不定型可変長のデータを受け取ってcsvファイル出力に使いたい感じです。

859 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 10:05:50.17 ID:bwy1yWHL.net]
void*「むかしはあんなに愛してくれたのに…」

860 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 11:08:12.01 ID:FGy8rv7m.net]
>>830
any使うんだったら、
vector<vector<any>> hoge;
じゃなくて
vector<any> hoge;
じゃない?

861 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 11:40:12.00 ID:KcnUiVki.net]
>>835
>>833じゃないけど>>833のdump()を例えば
template<class... Args>
void dump(const std::variant<Args...>& e) {
std::visit([](const auto& x){
std::cout << " " << x << std::endl;
}, e);
}
template<class V>
void dump(const std::vector<V>& v) {
for (const auto& e: v) {
dump(e);
}
}
みたいにするんなら
class Dumpable {
virtual void dump() = 0;
};
みたいな抽象クラス作って素直にArgsの各classが継承(実装)した方がいいと思うってこと?

862 名前:はちみつ餃子 mailto:sage [2021/10/23(土) 13:07:50.50 ID:UQ/XjfNb.net]
>>840
そう。 クラスごとに違う挙動が必要ならその違いはクラスの中に隠蔽されているべきで、
クラスを使う側で分岐するのはなんかちょっとあれだなという感じ。

型を調べて分岐するようなコードが嫌だから動的な型を調べる機能を意図的に入れなかった話は D&E にも書かれてる。
(最終的には typeid が導入されてしまったけど……)
ただそれは「型を追加したくなったら分岐も増やすのはめんどいしミスしそう」みたいな話なので、
十分に賢いユーティリティが標準で用意されている今ならそれほど強い動機でもないんだけどね。

863 名前:デフォルトの名無しさん [2021/10/23(土) 13:12:23.67 ID:quaWTEll.net]
C++はパラメトリック多相が無いからこういうのは面倒だよね。
とりあえずはstd::vector<std::function<std::string()>>に[v](){ return std::to_string(v); };
あたりを入れとくのが簡単かね。

conceptを「その制約を持つクラスの総称クラス」としてshared_ptrあたりで指定できるようになると便利なんだけどなぁ。
concept_shared_ptrとか用意してくれんかね。

864 名前:はちみつ餃子 mailto:sage [2021/10/23(土) 13:16:46.64 ID:UQ/XjfNb.net]
>>837
any_cast での取り出しは「元の型」でなければならず、
string に変換可能な型であっても any_cast<string> は出来ない。
(やったら例外が飛ぶ)

最終的に文字列になると決めているなら文字列にしてから格納したほうがすっきりするんじゃないの。



865 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 14:23:02.68 ID:KcnUiVki.net]
>>841
まあそうだよね。ありがとう。

866 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 08:17:03.78 ID:mo2+vXTQ.net]
>>771-772
以下のような場合についてBarクラスがRAIIであるというだけでどう例外安全にできるのかお考えをお聞かせ願えますか
void foo() {
 {  // 何かのコードブロック (try { } catch { } のtry{ } とかでも良い
   Bar x, y, z;
    (例外を生じる可能性があるコード)
   アプリケーション固有の別スレッドXにイベントなりシグナルを送る
 }
}

>>723
上に書いたようなケースを踏まえてっ例外安全に言及している>>720>>721に対して
理解しいないまま捨て台詞を残して逃走した>>722とか、






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<300KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef