[過去ログ] C++相談室 part157 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
253: 2021/09/05(日)19:08 ID:UYU4AxET(1) AAS
>>247 外部リンク[dcl]:timsong-cpp.github.io
254
(1): 2021/09/05(日)19:10 ID:2jP3+tuQ(1) AAS
>>246を踏まえるとこんな感じか
関数テンプレートだけで済ます方法はあるのかな?

外部リンク:ideone.com
255
(2): ハノン ◆QZaw55cn4c 2021/09/05(日)21:38 AAS
>>248
はい、頭も性格も悪いと思います、しかし >>242 の中のどういうところが悪いとお考えになったのか教えていただくと嬉しいです!!
256: 2021/09/05(日)22:21 ID:TAzC3d8r(1) AAS
>>255
そもそも、C++の生みの親で、それに関する書籍を出してその中でC++を
良い言語と自負して(それ以上の言語が出来ないというような主張も幾度もして)
解説し、まだ推進しようとしている人が、C++を徹底的に卑下するかどうかを
疑問に思ってないことも頭が悪いと思われる原因の一つ。
257: 2021/09/05(日)22:29 ID:15q7gB85(1) AAS
実際、C++は、特に初期の頃はCより全面的に優れていると誰でも思えるような
物であって、ちゃんと世界的に認められて広まっていたのに、その部分まで
全否定するようなことをインタビューで答えるわけがない。
その後に追加されて機能は人により評価が分かれて全面的に優れているとは
思えるようなものではなくなっていた。
だから、C++11は、好きな人も居れば嫌いな人も居る。C++98より全面的に
優れていると言えるかどうかは人により評価が分かれるので、好みにより
文壇の様なものが生じている。
258
(2): 2021/09/05(日)22:30 ID:cBh+EO/A(6/7) AAS
>>254
ひ、日本語でおk、、、

>If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.85
>If control re-enters the declaration recursively while the variable is being initialized, the behavior is undefined.
はどう読めばいいの?
結局concurrentlyにre-enterされるときはbehavior is undefinedとしか読めなさげ

>>254
以上の状況なので>>244の糞コードは直しても仕方が無い
259
(1): 2021/09/05(日)22:36 ID:66hkUr5p(2/2) AAS
メモリを自動解放するfinally機能さえあればCでも大丈夫とは思う
260: 2021/09/05(日)22:50 ID:yIsM5ONG(3/3) AAS
画像リンク[jpg]:imgur.com
261: 2021/09/05(日)22:52 ID:cBh+EO/A(7/7) AAS
とオモタがcontrol enters the declaration concurrently のときは初期化のcompletionまでshall waitで、
ただしrecursivelyだとイカン(未定義動作)と書いてあるのか……
つまりSingleton()関数内の初期化式「O=」の右辺がSingleton()を呼び出す場合か

まあ確かにWindousみたいに特殊な仕様のクリティカルセクションでもない限りデッドロックしそう
262: 2021/09/05(日)23:09 ID:eTOvJaZ9(1) AAS
>>251
そうか
まあ仕様的にはスレッドセーフだわ
関係ないけど参照したグローバル変数に値が入っとらんで困ったことがあった
263
(2): 2021/09/06(月)00:30 ID:62gS+LUW(1/2) AAS
>>258
なんかスレッド安全性の問題にしたいようだけど、
そもそも>>244の第一の問題点は2番目のSingletonの呼び出しだけ別のオブジェクトを指してしまっている点だよ
stdoutの2行目だけ0になってるだろ?
その原因の説明が>>246というわけだ

すべての関数・クラスを最初からスレッドセーフな設計にしないといけないわけじゃない
264
(2): 2021/09/06(月)04:31 ID:HRRCwLhx(1/2) AAS
>>263
>>258じゃないし、よく分からないけど
外部リンク:ideone.com
ではダメなの?
265
(3): 2021/09/06(月)04:31 ID:G2BRvA3h(1) AAS
ビャーネ・ストロヴストルップその人のインタビューだとは私も考えてませんよ、これはブラックジョークというべきでしょう、まあC++er が気を悪くする理由は理解できますが
それに私も GNU Multi-Precision Library を使うときはC++のラッパの方を使います。C インターフェースの方は使い難くって使い難くって、これはもう罰ゲームですね‥‥
だから演算子のオーバーロードも控えめに使えば有用という立場です、紹介することと賛成することとは別だと思います
2chスレ:tech
266: ハノン ◆QZaw55cn4c 2021/09/06(月)04:40 AAS
テステス
267
(1): 2021/09/06(月)07:17 ID:7SReNX2q(1) AAS
>>263
スレッドセーフでなくともよいシングルトンとか
>メインの処理が始まる前に普通の初期化関数呼び出しでOを生成したらそれで済むのに、、、
で良くね?

>>264
>>263じゃないが非アトミックな操作(初回か否かチェックして初回なら初期化する)
であることが明示される分その書き方の方がマシ
必要なら排他する、不要ならしないという判断ができるから
>すべての関数・クラスを最初からスレッドセーフな設計にしないといけないわけじゃない (>>263
という願いも叶うYO!
268
(1): 2021/09/06(月)08:08 ID:62gS+LUW(2/2) AAS
>>264
確かに普通こんな感じだな
テンプレート別々にすることだけで頭止まってた

>>267
そうだな
書いてはみたがC++でシングルトン使う意味は無いと思う
あれはグローバル変数の無いJavaでグローバル変数を使うためのハックだとか聞いたし
じゃあもう普通にグローバル変数使えばよくね、と
269: 2021/09/06(月)08:45 ID:3/UK3SOv(1) AAS
グローバル変数と同じなのでだめだよな
普通に動的に用意して渡せばよろしい
270: 2021/09/06(月)08:48 ID:HRRCwLhx(2/2) AAS
ログとかアプリの現行設定ファイルとかはSingletonっぽく実装するけどなぁ・・・
インスタンス生成が遅いものはただのグローバルにしたら起動が遅くなるし
271: 2021/09/06(月)09:20 ID:FistWoaj(1) AAS
>>268
最初のデザパタ本であるGOF本はc++とsmalltalkで書かれてるんで、javaは関係ないよ
272: 2021/09/06(月)10:32 ID:d5h9Y6Qi(1/2) AAS
シングルトンはスレッドセーフが実現できれば問題ないでしょ
273
(1): 2021/09/06(月)12:01 ID:KKMECnvR(1) AAS
>>255 >>265
これは「権威に訴える論証」を悪用した主張であり、議論の対象としてはいけない類のもの。
もし真面目に議論したいのなら、少なくともStroustrupの名前は消して内容だけに修正しなくてはならない。

本人も否定しているのに訂正もしないようなフェイク記事は邪悪。それに対してコメントを求めるのは正気を疑う。
274
(2): 2021/09/06(月)12:06 ID:86SPG0/G(1/2) AAS
その昔、こんなクラス作ってたな
class WinMainArguments
{
public:
static HINSTANCE hInstance;
static HINSTANCE hPrevious;
static LPSTR lpszCmdLine;
static int nCmdShow;
};
275
(1): 2021/09/06(月)15:04 ID:DsY+3+kX(1) AAS
>>265
ブラックジョークは大半の人が聴いた瞬間にジョークだと判るから成立する
麦藁禿のあの名文はまさにそれ

だまされてるのは事情を知らない若い人かも知れんな
276
(1): 2021/09/06(月)15:52 ID:86SPG0/G(2/2) AAS
>>265
GMPについて同意見
277
(1): 2021/09/06(月)16:43 ID:akmYwjNo(1) AAS
>>274
ネームスペースつかえよバカww
278
(1): 2021/09/06(月)16:51 ID:5nha9zO6(1) AAS
>>277
初期のc++には名前空間が無くてなぁ。
標準化する前だから良く知らんが。
279
(1): 2021/09/06(月)17:50 ID:xrgLRigr(1) AAS
その初期のC++ってもしかしてEC++とかいうパチモンじゃないですかね
280: 2021/09/06(月)17:51 ID:ugWeBDlD(1) AAS
今更バイエルの運指について議論してるような雑魚に構うなよ
C++もピアノも、憧れだけあって実力がまるでないバカ
281: 2021/09/06(月)20:33 ID:d5h9Y6Qi(2/2) AAS
日本語版(0xCC=フ)によりフフフフフ…で埋められたWin32アプリデバッグメモリを思い出した人、どのくらいいるかな

「フフフ…」4歳娘が撮影した花火に家族で爆笑! 見ると笑顔になる“奇跡の1枚”の状況を父親に聞いた | FNNプライムオンライン
外部リンク:www.fnn.jp
282: はちみつ餃子 ◆8X2XSCHEME 2021/09/06(月)23:42 ID:buVCF6sT(1) AAS
>>278-279
D&E によればネームスペースは 1991 年に ANSI/ISO の委員会において浮上したトピックであるとのことだ。
逆に言えばそれ以前には無かった。
Windows 3.1 の頃に C++ でプログラミングしていたなら >>274 のようなコードが有ったとしても不自然とは言い切れない。
283: 2021/09/07(火)02:14 ID:b2odouMM(1) AAS
今でもchar_traitsみたいのあるね
284: 2021/09/07(火)02:29 ID:fAleIY7G(1) AAS
なあに名前空間的な修飾を省略させたくない時に役立つ
285: 2021/09/07(火)03:15 ID:5ki66s4L(1) AAS
>>259
cに付け加えるならgoのdefer文かなと思う。
286
(3): 2021/09/07(火)11:04 ID:1Eqd+3ka(1) AAS
C...Cにだってtry~catch~finallyあるんだからね!(ネタ=setjmp/longjmpを使ったマクロ)
外部リンク:gist.github.com
287
(1): 2021/09/07(火)23:50 ID:jZhA4bAr(1) AAS
>>286
ちなみにtry~catch~finallyっぽいのはVC++が持つと光と闇が両方そなわり最強に見える
Cが持つと逆に最適化が合わさり頭がおかしくなって死ぬ
288: 2021/09/08(水)05:21 ID:KzXEzs8I(1) AAS
>>287
別に頭がおかしくなって死なないでしょ
finally機構で資源解放する機会が増えるのはユーザーの利益になるだけで、複雑さを増す不利益にはならないよ
289
(1): 2021/09/08(水)05:59 ID:4NmVrZFW(1/3) AAS
確かにgccだと-O1でも2でも3でも暴走しちゃうけど、vc++だと最適化してもちゃんと動くね
290: 2021/09/08(水)09:59 ID:1wbeyQs7(1) AAS
VC++はマイクロソフト拡張によってCでも構造化例外処理が使えたんだよね

__try __except __finally
291: 2021/09/08(水)10:59 ID:6jFCz4HP(1) AAS
intalコンパイラはほんとにヤバいが、gccの最適化で変なことになったことは自分は一回もない
292: 2021/09/08(水)17:34 ID:nCYYHiA4(1) AAS
finallyは20年前からBorlandC++に既に実装済だったしその頃のVC++なんか>>146の状態やし
293: ハノン ◆QZaw55cn4c 2021/09/08(水)19:46 AAS
>>276
ですよね!
294
(1): ハノン ◆QZaw55cn4c 2021/09/08(水)19:47 AAS
>>286
最近まで try.. catch の実装の大半は sjlj だと思っていましたが最近は違うのですか?
295
(3): ハノン ◆QZaw55cn4c 2021/09/08(水)19:51 AAS
>>273
あなたはジョークの分からない人か、それとも >>275 のいう若い人か
>>242>>230 と同様でしょ
296
(1): 2021/09/08(水)19:52 ID:zE01k1pD(1) AAS
>>294
IDが出る板でID消してると浪人焼かれるぞ
297
(1): ハノン ◆QZaw55cn4c 2021/09/08(水)20:33 AAS
>>296
それは単なる都市伝説
お布施を毎年律儀に払っている人にそんなことをするわけがないでしょう‥‥
298
(2): 2021/09/08(水)20:48 ID:4NmVrZFW(2/3) AAS
>>289の件、再現コード抽出しました。最適時i=1がlongjmp後に0に戻ります。
// gccだと最適化なしなら正常終了。最適化すると終わらない。
#include <stdio.h>
#include <setjmp.h>
int main(int argc, char *argv[])
{
int i = 0;
jmp_buf jmpbuf;
_setjmp(jmpbuf);
printf("hoge\n");
省7
299: 2021/09/08(水)21:06 ID:QZMwNs5W(1) AAS
gccで例外ぽい事したいならC++にして使えで完結しちゃうからな……
300: 2021/09/08(水)21:09 ID:4NmVrZFW(3/3) AAS
インラインアセンブラとかでもない限り、処理系依存の文法を使いたくはないし、>>286はあくまでネタですよ。
ただ最適化時の挙動が違う原因を知りたかったので、個人的に調べた結果を載せといただけです。
お気になさらず。
301: 2021/09/08(水)22:55 ID:7k6oklod(1) AAS
setjmpの結果を変数に入れちゃダメだって教わらなかった?
302: 2021/09/08(水)23:11 ID:cWvdMGeM(1) AAS
入ってなくない?
303: 2021/09/09(木)02:02 ID:aICFtjZy(1) AAS
>>297
規制議論板を一度でも見たことがあるの?
どれだけのIDを消して書き込んでる奴が浪人焼かれてるかその目で確かめてくるといい
304: 2021/09/09(木)02:39 ID:AtdpUvef(1) AAS
コテとトリ付けながらIDは消すとかいうガイジムーブ
他スレでの荒らしがバレたら困りますって宣言してるようなもんだな笑
305
(1): 2021/09/09(木)03:11 ID:GRtgENVW(1) AAS
>>298 外部リンク[html]:www.jpcert.or.jp
306: 2021/09/09(木)03:58 ID:k9fYYQrZ(1/3) AAS
>>305
何を言いたいのか分からない無言URL貼りは時間の無駄なのでやめて欲しいです。少なくとも該当していません。
307: 2021/09/09(木)04:10 ID:k9fYYQrZ(2/3) AAS
一応書いておくと、>>298のコードは見れば分かるとおりiをvolatile宣言して最適化の対象から外せば当然動きます。
これはlongjmpに限った話ではありません。

先のURLの個別のコードにはありませんが、一般論としての記述はありました。このサイトが元にしてるサイト(リンクのURLは違いましたが)ではvolatileも例に含まれているようです。
外部リンク:wiki.sei.cmu.edu
308: 2021/09/09(木)04:18 ID:k9fYYQrZ(3/3) AAS
すみません。見落としてただけみたいですね。日本語の方でも個別のコードありましたね。寝ぼけてたかも。
309: 2021/09/09(木)08:55 ID:+RnvyubR(1) AAS
>>295
嘘記事かどうかくらいは書いておくべきだと思うがね
だいぶ前に初めて見たとき俺も半信半疑だったし(D&Eをまだ読んでなかった頃だが

てかオブジェクト指向のとこをテンプレート(メタプログラミング)に置き換えるとすごいしっくり来るんだよなアレ
310: 2021/09/09(木)12:39 ID:emntwqXC(1/2) AAS
>>295
全然違う。
>>230は少なくとも本人の発言からの引用であり、(権威に訴える論証が混ざっているとはいえ)すべてを否定することはできない。
>>242は自分の主張を強化するためにでっち上げた嘘であり、本人の普段の主張を否定する邪悪な紛い物。本人も否定しているものをジョークと称するのはやはり正気を疑う。
311
(1): 2021/09/09(木)12:56 ID:emntwqXC(2/2) AAS
>>295
一言言い忘れた。
ジョークを「主張」するなよ。アホか。
312
(1): 2021/09/09(木)18:44 ID:9obv3E3K(1) AAS
ワクチン拒否とかしてそう
313: 2021/09/09(木)18:45 ID:I6ZDQIJr(1) AAS
ダニングクルーガー効果のなんちゃってマスター状態でも容易に書けちゃうのが問題。
そのクソコードの状態でも一応動くところがC++の恐ろしいところでもあり幅広いフリーフォーマットの適応力でもある。
314: 2021/09/09(木)19:54 ID:VcdPV4nP(1) AAS
jokeもhumorも馬鹿には理解できない
315: 2021/09/09(木)20:23 ID:M2q//47O(1) AAS
>>312
自粛警察乙
マスゴミに煽られるまま踊るのジュリアナのお立ち台みたいな気分?
316: 2021/09/09(木)20:26 ID:5B6QjFP1(1) AAS
お前らってホント人にケチつけるときだけイキイキとしてんな
317: 2021/09/09(木)20:41 ID:Ja2+yviO(1) AAS
シャリーア・ポリスとかスシ・ポリスとかみたいな人
318
(1): 2021/09/11(土)11:18 ID:ke/Tkn8S(1/3) AAS
オブジェクト指向も構造化も原理主義者がウザいだけで
ナンチャッテでいいからやってると問題がきれいに整理できるので
やめようとは全然思わない

テンプレートだってそうだ
319: 2021/09/11(土)11:23 ID:rfW8qH4V(1) AAS
画像リンク[jpg]:pbs.twimg.com
画像リンク[jpg]:pbs.twimg.com
320: 2021/09/11(土)12:26 ID:3OqmYb77(1/4) AAS
C++には酸っぱい葡萄もある
321: 2021/09/11(土)12:37 ID:FXACoymx(1) AAS
テンプレートってただの超絶便利機能だろ
オブジェクト指向笑とは比べ物にならない
322: 2021/09/11(土)12:45 ID:d+bn5JZd(1/2) AAS
>>318
歴史は繰り返す、ってことだろ
一時期C++コミュニティがJavaに悪影響受けたりしてたことからJavaを嫌悪してたやつが
何でもSTLの真似してりゃ自動的に価値のあるコードになると盲信してたからな
笑うしかない
323: 2021/09/11(土)12:49 ID:ke/Tkn8S(2/3) AAS
俺ら技術屋の辛いとこだよ
新しいものはとりあえず食ってみるしかない
あげくゲロマズで非常に気分が悪くなることもあるが怖がってらんない
324: 2021/09/11(土)12:59 ID:d+bn5JZd(2/2) AAS
技術屋というか、実用してる人は盲信はしないと思う
原理主義に走るのは、自分の頭で考えない(権威に頼る)からだ
自分の頭で考えて使ってれば、自ずと長所も短所もわかるもんだ
325: ハノン ◆QZaw55cn4c 2021/09/11(土)14:40 AAS
>>311
人を選ぶジョークとはまさに >>242 のことだったんですね‥‥
今回は勉強させていただきました
326
(1): 2021/09/11(土)15:50 ID:pU9Ou8D7(1) AAS
分かったら二度とデマ流すなよ
ワクチンにマイクロチップだのどこそこの銀行が潰れるだの朝鮮人が井戸に毒入れただのもだぞ
本人は軽いジョークのつもりでも、デマとして流行したら人が死ぬんだからな
327: 2021/09/11(土)18:07 ID:ke/Tkn8S(3/3) AAS
> 原理主義に走るのは、自分の頭で考えない(権威に頼る)からだ

ほんこれ
328: 2021/09/11(土)21:27 ID:3OqmYb77(2/4) AAS
そうはいってもC言語規格にfinally機構があったら便利なはず
PGが規格追加に後ろ向きになってしまうのはコンパイラの対応が信頼できるレベルになるまで時間がかかる不快な経験を積んできたから
329
(1): 2021/09/11(土)21:45 ID:mopEDxb+(1) AAS
デストラクタもないC言語にfinallyだけあってもねぇ…
330: 2021/09/11(土)21:55 ID:x2ZLDQix(1) AAS
じゃあC#使えで……
331
(1): 2021/09/11(土)21:59 ID:3OqmYb77(3/4) AAS
>>329
デストラクタがないからこそfinallyで資源解放処理を呼び出す需要があるともいえるんだけど
332: 2021/09/11(土)22:14 ID:rQxvOqzv(1) AAS
>>331
実際に書いてみたらわかると思うけどどこからfinallyに来るのかわからないから解放処理書くのはけっこう大変だぞ
333: 2021/09/11(土)22:44 ID:3OqmYb77(4/4) AAS
どこから来るかわからないのはgotoも同じ
334: 2021/09/11(土)22:51 ID:6kN4WIJa(1) AAS
だからたいして楽にはならんよって話ね
335: 2021/09/11(土)22:54 ID:zCvRZpSn(1) AAS
例外がいらんわ
必要としてるやつはC使うなよ
336: 2021/09/11(土)23:18 ID:EO9owr6G(1) AAS
関数毎に atexit かな
337: 2021/09/12(日)01:57 ID:z8yQu9Mw(1) AAS
Goのdefer文でいいんじゃないか
338
(1): 2021/09/12(日)11:03 ID:JRO5EM3e(1) AAS
ハノンフルボッコされて火病を起こしててワロス
自分が悪いのに逆ギレするほどみっともないことはないなあw
339: 2021/09/12(日)11:40 ID:AN8tG6su(1) AAS
整形後に関数が10行以上になったらコンパイルエラーにしよう
関数名1行+開きカッコ1行+return1行+閉じカッコ1行だから実質5行までな
340
(1): 2021/09/12(日)12:24 ID:SBMPlzna(1) AAS
たまにちびっこだらけのピアノ教室に一人だけ下手くそなおじさんが混ざってて臆面もなく発表会とかにも出てくるけど、それがその固定ハンドル
341
(1): 2021/09/12(日)17:30 ID:d/9I2lQ9(1/3) AAS
質問でsが
std::this_thread名前空間内の関数は、std::thread以外の手段で作ったスレッドで
実行しても大丈夫なんでしょうか、

一部のC標準ライブラリ関数みたいにスレッド起動手段次第でリークしたりすることは無い?
外部リンク[html]:cpplover.blogspot.com
342
(1): 2021/09/12(日)18:10 ID:TJh0S1vO(1) AAS
>>341
やってみないと分からないから自己責任でご自由にどうぞ、というのが正しい回答
343: 2021/09/12(日)18:54 ID:d/9I2lQ9(2/3) AAS
>>342
std::thread以外の手段で作ったスレッドで実行したときのふるまいは
規格上非規程ということでおk?
344: 2021/09/12(日)18:58 ID:d/9I2lQ9(3/3) AAS
未定義動作とか処理系依存とかではなく、規定されていないということ?
345: 2021/09/12(日)20:27 ID:x/1IPUIX(1) AAS
大丈夫なんじゃないすかね
mainはstd::thread以外の手段で呼び出されるんだし
346: 2021/09/12(日)21:31 ID:ewAYKYUU(1) AAS
どうやってアクセスするん
347
(1): ハノン ◆QZaw55cn4c 2021/09/13(月)01:29 AAS
>>326
米国民主党の宣伝=ロイター・ブルームバーグ=真実
米国共和党、なかんずくプレジデント・トランプの言ったこと=フェイクニュース
という理解でいいでしょうか?イヴェルメクチンの話 動画リンク[YouTube]

>>338
どこがフルボッコか詳しく、ジョークのわからない馬鹿一人だけが騒いでいた、という印象ですが

>>340
バッハコンクール大人の部には出てみたいですね‥‥たぶんよくできる中高生のなかに一人ヨボヨボが混ざるの図になりそうですけれどもね
348
(1): 2021/09/13(月)02:16 ID:ZygXXNwA(1/2) AAS
>>347
コンクールとは無縁の音楽歴だろうがクソバカが
見栄張んなよ
精々弱小音楽教室の発表会止まり
349: 2021/09/13(月)03:47 ID:PttYpQoG(1/4) AAS
わかるよ
C++とはつまりCから2キー(2半音)上げたDという意味
ピアノならCはドでDはレ
350
(1): 2021/09/13(月)04:01 ID:PttYpQoG(2/4) AAS
このスレにMIDIエンジンを自分で作ったことある人、どのくらいいる?
351
(2): 2021/09/13(月)06:59 ID:ZygXXNwA(2/2) AAS
ピアノじゃなくても「CはドでDはレ」だと思うが……
352: 2021/09/13(月)07:04 ID:B8QV0Pmm(1/3) AAS
MDLを入力してWAVを出力するコンパイラみたいのなら
1-
あと 650 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s