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


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

C++相談室 part154



1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net]
※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/

テンプレここまで

446 名前:ンなしたいなら辞書順比較する比較関数を定義すればよし []
[ここ壊れてます]

447 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:46:24.33 ID:FbSt8IWH.net]
演算子オーバーロードは地雷度高い。

448 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:53:14.56 ID:CtNYZU7D.net]
まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね

449 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:03:45.93 ID:f9q1oLiO.net]
C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?

450 名前:デフォルトの名無しさん [2021/02/01(月) 23:11:37.27 ID:ZelzH3+k.net]
合ってます。

451 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:17:45.03 ID:f9q1oLiO.net]
>>442
ありがとうございます
今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・

452 名前:デフォルトの名無しさん [2021/02/02(火) 02:08:00.00 ID:DmcXRB7X.net]
へ椅子ブックが少し綺麗になってます。

453 名前:デフォルトの名無しさん [2021/02/02(火) 02:10:27.05 ID:DmcXRB7X.net]
RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。

454 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:17:10.33 ID:uFATDe77.net]
ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?



455 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:29:21.33 ID:kGc73xZq.net]
命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か

456 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 12:37:23.36 ID:vWAdhQ36.net]
>>446
CPUの世代やアーキテクチャによって違うが、
Latencyが、Shiftの方がandより少し遅いことがある。

457 名前:はちみつ餃子 mailto:sage [2021/02/02(火) 12:49:48.88 ID:+MtixY9O.net]
>>434
Go は GC が前提にあるから少し制約が強いけども、
OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。

458 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:08:50.07 ID:aIAA0dxH.net]
Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目

459 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:45:57.34 ID:8HFbTrXI.net]
GoはPC初心者用
昔でいういわばBASIC

460 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:03:08.15 ID:FSwj4KRK.net]
バレルシフタと単純ゲート
レイテンシも糞もねえだろ

461 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:11:36.53 ID:8HFbTrXI.net]
でもその縛りプレイが大好きな変人も居る

462 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:23:15.74 ID:likaPPB8.net]
operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く

463 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:25:04.30 ID:likaPPB8.net]
インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg

464 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:28:35.48 ID:likaPPB8.net]
あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…



465 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:25:34.21 ID:p0NvFN6a.net]
>>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。

466 名前:デフォルトの名無しさん [2021/02/03(水) 00:38:50.10 ID:53EFMpkm.net]
ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。

467 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 00:51:08.70 ID:5b6XJ+8s.net]
>>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?

468 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:54:51.58 ID:p0NvFN6a.net]
0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……

今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。

469 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 01:01:02.57 ID:+m9V7fCu.net]
>>458
具体例をお願いできますか?

470 名前:デフォルトの名無しさん [2021/02/03(水) 01:20:23.24 ID:53EFMpkm.net]
コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。

471 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 02:47:38.99 ID:+m9V7fCu.net]
>>462
丸めって暗黙の型変換のことですか?
シフト演算は特に関係しないと思いますが……

472 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:01:31.58 ID:QcjMAifW.net]
>>460
0x0000'ffffull

473 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:29:42.77 ID:y3dS6mbz.net]
unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…

474 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:38:54.06 ID:Nl+WsQpo.net]
>>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう



475 名前:デフォルトの名無しさん [2021/02/03(水) 10:23:38.02 ID:q8Ed7guF.net]
丸めと暗黙の型変換は違うものでは?

476 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 11:47:09.95 ID:HtH84Poo.net]
丸めや打ち切りは浮動小数点数の概念やね

477 名前:デフォルトの名無しさん [2021/02/03(水) 13:02:19.58 ID:53EFMpkm.net]
ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。

478 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 14:45:43.48 ID:J722wycU.net]
なにいってんだこいつ

479 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 15:50:32.48 ID:pE1foWCw.net]
>>465
やっぱり、32BITの時が一番プログラミングし易かったな。
64BITになると、64BITと32BITを区別して書く必要が出てきて、
書くのが面倒になった。

480 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:12:23.88 ID:XaYGR0Wv.net]
そう?ポインタサイズくらいしか違いなくない?

481 名前:デフォルトの名無しさん [2021/02/03(水) 21:29:02.90 ID:53EFMpkm.net]
まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。

482 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 22:36:28.54 ID:y3dS6mbz.net]
>>465の下の方のやつは符号拡張されたりする気がするorz

483 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 22:40:25.83 ID:Ea4RwHR/.net]
>>424
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];

objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
 array<int, ?> elem;
public:
 obj& operator [] (int i) {return elem[i];}
};
ということですか?

484 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 03:22:45.38 ID:R0EDVzG0.net]
>>473
size_t は、型名が長いし _ も含んでいるし、打つのが辛い。
それにコードに締める長さも長くなるので画面が狭くなるし。



485 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 04:17:06.60 ID:SkZt7jTc.net]
>>473
まじめに、て別にsize_t使ってたら偉いわけじゃない
サイズを表したいけどいちいち考えたくない場合の選択肢だぞ

486 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 11:32:06.33 ID:sIhIIpMX.net]
size_t型はSTLを使う人なら避けて通れない。

487 名前:デフォルトの名無しさん [2021/02/04(木) 11:40:48.70 ID:ZzRKCYY/.net]
>>471

488 名前:
それ本来そこにあった問題に気付いていないだけだったと思うぞ
[]
[ここ壊れてます]

489 名前:デフォルトの名無しさん [2021/02/04(木) 11:44:02.03 ID:ZzRKCYY/.net]
>>475
class obj{
 array<obj, ?> elem;
public:
 obj& operator [] (int i) {return elem[i];}
};

490 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 12:06:17.02 ID:DWE1XJjK.net]
>>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが

491 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 12:29:12.61 ID:waKgX41w.net]
一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。

class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};


でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。

492 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 13:10:42.29 ID:g2cSm/y9.net]
malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?

493 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 13:13:43.37 ID:ttCVH4wp.net]
>>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。

https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ

だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。

提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript

494 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 13:20:29.03 ID:ttCVH4wp.net]
>>483
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。

でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。



495 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 15:40:11.75 ID:R0EDVzG0.net]
>>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)

496 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 16:48:02.49 ID:DWE1XJjK.net]
>>482
ありがとうございます
ストラウストラップの「プログラミング言語C++」に「行列クラスの設計」なるセクションがあったのを覚えてるので、そちらではどうしていたかも見てみます

497 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:07:22.68 ID:dB2jWvbu.net]
unique_ptr<Hoge[]> p(new Hoge[4]{a, b, c, d});
みたいな定義と同時に代入は出来るのですが
(各要素毎に Hoge(a), Hoge(b), Hoge(c), Hoge(d) になりました)

unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
だと引数無しのデフォルトコンストラクタが無いといけないし
(そもそも引数無しのデフォルトコンストラクタ作りたくない)

unique_ptr<Hoge[]> p = make_unique<Hoge[]>({a, b, c, d});
とか
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4){a, b, c, d};
とかはコンパイル出来ませんでした

引数無しのデフォルトコンストラクタがあれば
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
p.reset(new Hoge[4]{a, b, c, d});
だとうまく逝きますが効率が悪い気がします
make_unique は使ってはいけないのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:51:26.68 ID:b9gCdorg.net]
>>487
485も見てねー

499 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:52:07.72 ID:b9gCdorg.net]
まちがえた。484

500 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 20:56:33.92 ID:ZyzsEROR.net]
配列のunique_ptrは色々と中途半端で使いづらいからオススメしない

501 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:14:32.91 ID:b9gCdorg.net]
>>488
unique_ptr<Hoge[]> p;
p.reset(new Hoge[4]{a, b, c, d});
でよいのでは?

502 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:20:26.07 ID:un3OWVjy.net]
>>486
32bitアプリでも今どきなら64bit整数を使える処理系は多いだろ
そもそもアドレスを整数型に入れるっていつの時代の人よw

503 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:47:34.63 ID:/RiZUiBF.net]
>>493
アドレスを整数に入れるのは過去の話じゃないぞ

504 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:51:09.67 ID:sIhIIpMX.net]
intptr_t整数型を使ってたのっていつの時代?



505 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 23:24:48.23 ID:hMfhfQWp.net]
uintptr_tならいつもお世話になっております

506 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 00:01:41.63 ID:NIkVqohR.net]
この手合いのボケを量産するのはC++の害だな

507 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 01:35:15.82 ID:EB7VAtvO.net]
むしろCの害

508 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 01:52:47.05 ID:xbM9VFWh.net]
Rubyって結局勉強しないままPythonの時代になってしまったな

509 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 04:42:48.12 ID:ZuGfyZDY.net]
同様にC++を勉強しないままRustの時代になる

510 名前:デフォルトの名無しさん [2021/02/05(金) 09:51:39.70 ID:U76qOqQA.net]
>>488
https://www.it-swarm.jp.net/ja/c%2B%2B/new演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
https://ja.stackoverflow.com/questions/24876/make-uniqueの利点

511 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 13:28:24.98 ID:ou/gU5gH.net]
c++やらずにrustとか馬鹿量産するだけにしか思えんな。

512 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:10:32.07 ID:Xzu/prlh.net]
それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう

513 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:17:08.86 ID:M7C1cdPI.net]
ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに

514 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:18:44.73 ID:ou/gU5gH.net]
>>503
それはもう50年くらいずっとそうだろ。
ノーコードとか逆に俺様言語作ってるのとほぼ変わらん状態にしかならんという
しょーもない展開しか見たことない。



515 名前:デフォルトの名無しさん [2021/02/05(金) 15:14:07.00 ID:zImWQG8r.net]
VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?

516 名前:デフォルトの名無しさん [2021/02/05(金) 15:14:37.91 ID:zImWQG8r.net]
Goは標準ライブラリが圧倒してる。

517 名前:デフォルトの名無しさん [2021/02/05(金) 15:18:44.78 ID:zImWQG8r.net]
半年に一度フルビルドみたいになってしまう。

518 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:12:02.35 ID:A9cGRDK5.net]
Goは何がクソといってまず名前がクソ

519 名前:デフォルトの名無しさん [2021/02/05(金) 16:36:26.85 ID:zImWQG8r.net]
C++は基本だから、義務教育で習得するべき。

520 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:50:43.11 ID:/MNAnFTn.net]
言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな

521 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 18:21:14.28 ID:7P5D6x+s.net]
>>505
昔はアセンブラすら触れない奴がC言語とか笑わせるなとか真顔で言う人がいたんだぜ。

別に仕事ができるのならRustでもPythonでも何でもいいと思うぞ。

522 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 19:09:46.26 ID:AjJLCZml.net]
仕事ができるのならw

523 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 20:48:06.29 ID:ou/gU5gH.net]
>>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。

524 名前:デフォルトの名無しさん [2021/02/05(金) 21:49:13.85 ID:a81hUa+F.net]
というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。



525 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 21:59:53.11 ID:kFtfKVND.net]
お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ

526 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:34:33.49 ID:EB7VAtvO.net]
Rustの名前は金属の錆じゃなくてサビ菌が由来

527 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:36:07.20 ID:NIkVqohR.net]
Rottenでいい

528 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:48:47.57 ID:a81hUa+F.net]
Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。

529 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 03:04:22.39 ID:kQVOjfvp.net]
「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが

530 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 04:45:05.79 ID:oQfB5lBJ.net]
>>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う

531 名前:デフォルトの名無しさん [2021/02/06(土) 04:50:47.70 ID:GfZyzG1j.net]
ブーリアン革命。

532 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 05:13:59.88 ID:oQfB5lBJ.net]
革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ

533 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 07:27:56.30 ID:S9Y30hRK.net]
>>520
だとしたら胡散臭さ200%のカルトだな

534 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:31:12.13 ID:rZdEmaWa.net]
>>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる

他言語も触ってみることをオススメする



535 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:34:34.84 ID:5Ze23T9D.net]
よくわからんが安全カミソリみたいなものかね?

536 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:10:31.61 ID:rZdEmaWa.net]
>>526
そんな感じ

まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う

537 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:11:15.51 ID:S9Y30hRK.net]
>>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容

538 名前:として良からぬ事を企むという次元には程遠いわけか []
[ここ壊れてます]

539 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:12:54.42 ID:rZdEmaWa.net]
>>528
投稿した瞬間の不意打ちレスワロス

540 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:17:55.71 ID:u/OM7jGY.net]
>>527
> プログラマーが悪vログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う

>>528
> 文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな

この流れは大草原不可避

541 名前:デフォルトの名無しさん [2021/02/06(土) 11:01:19.43 ID:PohEB++t.net]
>>504
Unity とか UE はきらい?

542 名前:デフォルトの名無しさん [2021/02/06(土) 11:07:09.44 ID:PohEB++t.net]
>>509
めっちゃわかります
https://blog.golang.org/gopher
write.kogus.org/articles/S78LHt

543 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:09:03.81 ID:gLiOOG5V.net]
rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう

544 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:19:39.89 ID:S9Y30hRK.net]
>>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ



545 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:25:16.36 ID:UXUwo66G.net]
それだけ無責任で信頼出来ない人間が多いって事だろ

546 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:31:39.86 ID:58EQLFGq.net]
信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当

547 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:53:16.04 ID:DutNpJ49.net]
>>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない

548 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:19:02.89 ID:Hu1Z4B3S.net]
>>534
負け犬の遠吠え

549 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:29:55.66 ID:EjDQT0l8.net]
>>460
「(type)~0」でどう?

550 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:32:30.22 ID:TGsCRbLO.net]
>>536
ハゲを流出させたら〜と空目した

551 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:33:33.54 ID:rZdEmaWa.net]
>>538
しー!余計なことを言うんじゃないっ!

552 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:38:49.17 ID:Hu1Z4B3S.net]
>>528はスマートポインタを知らなさそう
文章から溢れ出る無能感

553 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:44:48.20 ID:S9Y30hRK.net]
構ってちゃんは、スマポ憶えたてらしいなw

554 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:46:38.15 ID:gYQHLnIz.net]
天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな



555 名前: mailto:sage [2021/02/06(土) 13:50:19.96 ID:kbrcRlAn.net]
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…

556 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:53:43.56 ID:ROiZJzWf.net]
コテハンでこの程度の文章も読めないのは

557 名前: mailto:sage [2021/02/06(土) 13:55:54.96 ID:kbrcRlAn.net]
>>546
そりゃ馬鹿だからでしょう…

558 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:59:04.79 ID:aJ9IYVGP.net]
どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど

559 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:05:03.59 ID:fN0CSTPN.net]
傲慢かましすぎもへりくだりすぎも良くない

560 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:06:38.65 ID:zTEH7215.net]
>>548
すでに荒れる種をまいてるきみが一番有害

561 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:12:51.02 ID:aJ9IYVGP.net]
>>550
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全

562 名前:R思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!!
だから!それ以上この話はやめろぉおおおお!!!
[]
[ここ壊れてます]

563 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:21:36.41 ID:rZdEmaWa.net]
>>545
馬鹿でも扱えるくらい綺麗なコードが天才のコードだと思う
C++は表現豊かな言語だから...他の言語も触ると、綺麗な記述方法を学ぶ良い機会になるよ

564 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:56:25.58 ID:58EQLFGq.net]
>>552が扱えるかどうかが天才か否かの基準か!



565 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:01:56.11 ID:S9Y30hRK.net]
綺麗かどうかじゃない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない

566 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:11:21.64 ID:f5ipo2xA.net]
>>553
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する

567 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:21:29.14 ID:58EQLFGq.net]
行政が法律に基づき行うなら問題無い
人が作った法律なら人が改正することができる

568 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:22:17.24 ID:S9Y30hRK.net]
スレ違い板違い失せろ

569 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:28:25.66 ID:58EQLFGq.net]
>>557
>>555に対するレス

570 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:30:29.13 ID:f5ipo2xA.net]
自作自演?

571 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:36:26.06 ID:oR/8CbQ7.net]
やらかしちゃいましたねー
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました

こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう

572 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:38:50.88 ID:oR/8CbQ7.net]
>>560
他にもテストの自動化、バージョン管理ツールの導入等もして不具合が流出しない仕組みを揃えておきましょう
以上

573 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:54:20.22 ID:bwIKlxQ8.net]
std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。

UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。

574 名前:はちみつ餃子 mailto:sage [2021/02/06(土) 17:05:10.96 ID:N9CbrPsc.net]
>>562
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。

高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。



575 名前:蟻人間 mailto:sage [2021/02/06(土) 17:07:58.83 ID:gG6zzvvp.net]
>>562 Windowsだったら
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。

576 名前:デフォルトの名無しさん [2021/02/06(土) 17:41:00.54 ID:GfZyzG1j.net]
スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。

事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。

577 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:44:16.27 ID:+KPQZs33.net]
https://youtu.be/wN0x9eZLix4

578 名前:蟻人間 mailto:sage [2021/02/06(土) 17:50:18.63 ID:gG6zzvvp.net]
https://ja.wikipedia.org/wiki/UTF-8

>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。

579 名前:蟻人間 mailto:sage [2021/02/06(土) 17:55:50.63 ID:gG6zzvvp.net]
つまり、

uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}

580 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:11:29.66 ID:6eQmSTNr.net]
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/453

UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています

こういう規則か?

581 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:16:40.60 ID:S9Y30hRK.net]
>>561
殺虫剤のパラドックスって知ってる?

582 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 20:33:00.74 ID:zn5WrP4C.net]
>>570
恥の上塗り?w

ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
https://note.com/akiyama924/n/nc006015de2d2

583 名前:デフォルトの名無しさん [2021/02/06(土) 21:07:07.97 ID:GfZyzG1j.net]
テストロボットだぞ、ガシャーン!ガシャーン!

584 名前:デフォルトの名無しさん [2021/02/06(土) 21:08:55.93 ID:GfZyzG1j.net]
片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。
なんでWindowsにこだわるんだろ。



585 名前:蟻人間 mailto:sage [2021/02/06(土) 22:54:31.87 ID:gG6zzvvp.net]
>>573 JavaScriptで動くものはすでにある。
https://katahiromz.github.io/xword.js/
あるが、ビジネスとして展開する能力がない。

586 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:50:48.27 ID:58EQLFGq.net]
クレブナー基底で解くやつ!

587 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:07:42.85 ID:HYoiJUgB.net]
>>571
質問に答えてねw

588 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:47:27.09 ID:jX/y7Db/.net]
>>576
ん?
どの質問?
>>570ならリンク先読めばいいだけだろ
恥ずかしくて読めないのかもしれないけどw

589 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:26:36.56 ID:HYoiJUgB.net]
>>576
俺の質問にアンカーつけといてどの質問はねえだろ
恥ずかしくてとぼけてんのおまえさんだろ

590 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:29:49.52 ID:p49/UnNX.net]
テストはやらないよりもやったほうがはるかに良い
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です

591 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:49:47.79 ID:m5BD34IK.net]
>>578
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ

592 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:57:32.70 ID:HYoiJUgB.net]
>>580
おまえさん、こう言ったんだぜ

> 不具合が流出しない仕組みを揃えておきましょう

流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある

揃えられるものなら揃えてみな
自分ができねえことを他人に言うな

593 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:11:28.01 ID:p49/UnNX.net]
人は思い込みを反証することで生

594 名前:きていける
だが完璧に反証できないこともある
ユニットテストはそのかけがえのないものを教えてくれた
[]
[ここ壊れてます]



595 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:41:41.73 ID:m5BD34IK.net]
>>581
え?それ俺じゃないけど
テストやればバグが無いといえるわけじゃないから安心するなってだけで、テストするなって話じゃないよね
主旨は同じだよね
何が気に入らないの?

596 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:00:05.54 ID:HYoiJUgB.net]
ああ、俺じゃないで逃げるのか
情けねえやつだな

597 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:07:20.85 ID:jX/y7Db/.net]
>>578
アンカーつけてると言うなら
> >>570ならリンク先読めばいいだけだろ
って書いてあるだろ
よほどアホでもない限りそんなアホなこと言うわけ無いと思ったからどれ?
って聞いたんだけど、想像以上のアホだったってことかな?w

598 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:10:29.25 ID:jX/y7Db/.net]
>>581
不具合はなくせないから仕組みも努力もいらんと言うならそれでいいんじゃね?
お・ま・え・ん・と・ろ・こ・で・は w

599 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:13:42.72 ID:2AGAGJ05.net]
マスクも手洗いもコロナを100%防げるわけじゃないから
マスク付ける必要も手を洗う必要もないね

600 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:20:21.65 ID:HYoiJUgB.net]
テストツールいらねえなんて言ってねえぜ
テストツール万能論はアホの考えだと言っている

601 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:21:25.49 ID:HYoiJUgB.net]
で、身に覚えのあるやつが返事してるから
ニヤニヤ笑ってるのさ

602 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:48:37.66 ID:2AGAGJ05.net]
「テストツール万能論」を主張したレスなんて一つも見えないんだけど
存在しないものを見てニヤニヤしてる変態こわい

603 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:56:59.83 ID:HYoiJUgB.net]
それを>>587がぬかすとは笑止な

604 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:11:45.24 ID:0QEz1MW7.net]
構い過ぎじゃね?



605 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:52:54.07 ID:jX/y7Db/.net]
>>591
まさかと思うけど>>587がマジで言ってるとか思ってないよね?w

606 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:03:05.54 ID:2AGAGJ05.net]
ああ・・・そういうことね・・・すまん触るべきじゃなかった

607 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:47:28.22 ID:p49/UnNX.net]
すまんで済んだらユニットテストは要らんわ!

608 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:09:34.56 ID:qbLU6RFF.net]
野菜食えで馬鹿みたいにブチギレるホリエと一緒やな

609 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:05:54.73 ID:HYoiJUgB.net]
>>593
奴は「必要ないね」とぬかしたんだ
別に武漢熱に話をすり替えようとすり替えまいとそこは関係ない

610 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:41:29.20 ID:yi1XmM9H.net]
>>597
文章を字面通りにしか解釈できない人?

611 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:31:48.90 ID:jcLu/xd9.net]
vectorを参照渡しするときの方法について教えてくください
class sansyo
{
private:
std::vector<short> _stdSansyo;
public:
void setSansyo(std::vector<short>& sansyo);
}
;void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = sansyo;
_stdSansyo[5] = 500;
}
int main()
{
std::vector<short> moto;
sansyo cSansyo;
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto);//ここで参照渡しのはず
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わっていない
}
}
こんなふうに、参照渡しにしてみたのですがどうも参照渡しになっていないでそのまま新しいvectorが作られちゃったぽいのですが
これだとメモリを倍使っちゃってるし、時間も掛かってますよね
どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう

612 名前:蟻人間 mailto:sage [2021/02/07(日) 16:37:08.22 ID:sfdJNFTq.net]
>>599
右辺値参照かstd::swap

613 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:13:26.18 ID:8CWTHaUD.net]
>>600
サンプル貼ってよ

614 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:21:04.63 ID:jcLu/xd9.net]
std::swapも右辺値参照も全然上手く行きそうになかっのたで

宣言をポインタにして
private:
std::vector<short> *_stdSansyo;

void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = &sansyo;
sansyo[6] = 100;
_stdSansyo->data()[5] = 50;
}

関数をこんなふうに書き換えたら、ちゃんと参照だけで動いたのでもういいや

けど右辺値参照とstd::swapの例も出してくれたらこれから色々いたスカリマス



615 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:24:59.07 ID:8CWTHaUD.net]
>>600
ほれほれ
貼れんのか

616 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:28:56.01 ID:yi1XmM9H.net]
>>599
参照渡し自体はできてるはず。
ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。

617 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:29:10.92 ID:jX/y7Db/.net]
>>598
もうそう言うことにしないと自我が保てないんだろw

618 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:59:39.88 ID:p49/UnNX.net]
sansyo::_stdSanshoをどうしても参照にしたいならこうするしか、
class sansho {
private:
std::vector<short> _stdSansyo;
public:
sansho(std::vector<short>& src) : _stdSansyo(src) { }
void setSansyo(std::vector<short>& sansyo);
};
void sansyo::setSansyo(std::vector<short>& sansyo) {
_stdSansyo[5] = 500;
}
int main() {
std::vector<short> moto;
sansyo cSansyo(moto); //ここで参照渡し
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto); // moto[5]に500が入りまくり
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わった!(予定
}
};

619 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:00:52.99 ID:HYoiJUgB.net]
>>598
だったら何だとぬかす気だ?
> 存在しないものを見てニヤニヤしてる変態こわい
> 文章を字面通りにしか解釈できない人?

要するに話になんない奴ってことだろ
言ったことにも裏の意味にもコメントされたくない
じゃあ相手しねえでやるから黙ってろゴミ

620 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:02:35.24 ID:p49/UnNX.net]
訂正orz
誤: private: std::vector<short> _stdSansyo;
正: private: std::vector<short>& _stdSansyo;

もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ!
という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして
ポインタを持つようにすべき

621 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:10:05.07 ID:p49/UnNX.net]
ちゅかもっと大きな一般原則としてつぎのどっちかにすべき
(1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない
(2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる
※ 個人の感想です

つまり出題が悪い。出し直し

622 名前:はちみつ餃子 mailto:sage [2021/02/07(日) 18:10:05.98 ID:hHDgzHUe.net]
>>602
元の考え方を変えずに動作させるにはその方法は十分に妥当だと思うよ。

ただ、もっと複雑なプログラムになったときにうっかりデータよりポインタのほうが
長生きすることになっても発見しづらいデザインになっている。

可能なら全体のデザインを見直すべきという話で、
いっそ所有権を渡してしまったほうが間違いにくいかもねという意味で右辺値参照や swap の話題が出ているので、
>>599 をベースにして右辺値参照や swap を使う例に書き換えるのは難しい。
別物になってしまう。

623 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:11:12.01 ID:yi1XmM9H.net]
>>607
自分以外の複数の人を同一人物だと思っちゃう人?

624 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:14:03.86 ID:p49/UnNX.net]
>>611
ネットの総意とか言い出しちゃう人?



625 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:16:20.19 ID:p49/UnNX.net]
検証不能な事物を錦の御旗にするような人間が
ソフトウェアのテスト推しなのは
大いなる矛盾である氏ね

626 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:18:25.00 ID:HYoiJUgB.net]
>>611
あの流れで
> 文章を字面通りにしか解釈できない人?
なんてぬかすやつは複数ID自演厨と見なされて当然だ
疑われたくなければ口の利き方に気をつけな

疑いは晴れてない
この後の発言にも気をつけるんだな

627 名前:デフォルトの名無しさん [2021/02/07(日) 18:24:44.17 ID:4v/nAOdw.net]
>>566
なにこれ

628 名前:デフォルトの名無しさん [2021/02/07(日) 18:29:05.24 ID:U/6f7Qk0.net]
参照をフィールドに保持するのは、一部のパーサーくらいでは?

しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。

629 名前:デフォルトの名無しさん [2021/02/07(日) 18:31:34.10 ID:U/6f7Qk0.net]
むかし5chで誰かが、プログラムを書くときは必ずテストしてるはずなんだって言ってましたが。
それを単体テストとして書いておけばずっと使えて便利だよと。

その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。

630 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:06:50.71 ID:n+epGkV9.net]
>>616
想像力が足りなすぎ
>>617
想像力が豊かすぎ

631 名前:デフォルトの名無しさん [2021/02/07(日) 20:53:42.20 ID:U/6f7Qk0.net]
バッドエンディングですね。

632 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:03:56.50 ID:ZOvCZ0cx.net]
グローバル変数使うなとは言わないけどコメントもないのはキツい
grep掛けて検索しても訳分からん
ポインタで飛び火してるときなんてもう…

633 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 22:09:55.11 ID:IiZq+u+t.net]
演算子オーバーロードの厄介さはキーワード検索で拾いにくいこと。
反復子もそうだが。ま、言い出したらきりないが。

634 名前:仮トリップ mailto:sage [2021/02/07(日) 22:57:26.65 ID:HI2f2oIL.net]
>>561を書いたのは私なんだけどなぁ...
面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ



635 名前:仮トリップ mailto:sage [2021/02/07(日) 23:02:22.83 ID:HI2f2oIL.net]
ちなみに、>>561以降は何も述べてない。
私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。

殺虫剤のパラドックス?それがどうした?
私はテストコードを書いて不具合を激的に抑えているが?

殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。

636 名前:蟻人間 mailto:sage [2021/02/07(日) 23:09:32.25 ID:sfdJNFTq.net]
>>622-623
自我の芽生え、おめでとう!
では、かえるの歌を歌います。

【...JASRAC権利関係の為、自主検閲...】

♪パパーン
(全員でクラッカーを鳴らす)

637 名前:デフォルトの名無しさん [2021/02/07(日) 23:20:12.91 ID:IiZq+u+t.net]
殺虫剤のパラドックスなんてものは存在しない。
ただの退行テスト不足だ。

638 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:24:22.18 ID:PnrMZIJR.net]
殺虫剤のパラドックスって言いたかっただけやろw
そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前
摘出できたら単なる修正漏れだしw
JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う

639 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:42:41.05 ID:HwnOmmQF.net]
蒸し返さなくていいから……

640 名前:デフォルトの名無しさん [2021/02/08(月) 07:03:25.17 ID:nKLqWVxG.net]
虫返さないですと!?

641 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:05:43.31 ID:NGjwD54G.net]
>>610
そもそも>>600は的外れだと思うんだが
メンバの方を参照かポインタで持つ、で終わりだろ
3行目以降完全に蛇足

642 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:20:50.36 ID:VJ9lplXi.net]
>>627,628
そういうのは無視しろ

643 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:00:56.57 ID:zDqHH6LK.net]
スルーの法則

644 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:43:41.70 ID:DuebuhTc.net]
>>602
>>599
誰か
永続的に使用するなら shared_ptr



645 名前:で受け取れ。今のままだとsetSansyoを呼び出す側が所有権手放していいのかわからなくて困るだろ。
て指摘した?
今や生ポインタなんて性能優先のときに内部的に使用するもんで、インターフェイスで使用するもんじゃない。

あと、参照も関数内だけで使用する引数に使うもんで、永続的に所有する引数に使うもんじゃない。
[]
[ここ壊れてます]

646 名前:デフォルトの名無しさん [2021/02/08(月) 14:04:18.90 ID:VJ9lplXi.net]
コンストラクタでなら参照型のメンバ変数に保存できる。ほとんどの人はやらないけど。

647 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:54:29.18 ID:DuebuhTc.net]
>>633
できるのと実際に実装するのは別の話だわな。
所有権の無いオブジェクトの参照を保存するなんて狂気の沙汰だ。

648 名前:デフォルトの名無しさん [2021/02/08(月) 19:12:34.60 ID:nKLqWVxG.net]
アイキャンユーキャン。

649 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:51:28.21 ID:U8Md53kE.net]
>>633
クラス間に親子関係のようなものがあって、子の生存期間が常に親の生存期間内にあるような場合は、親への参照をメンバ変数とすることは普通にあると思うけど。例えば>>484とか

650 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:15:43.14 ID:NGjwD54G.net]
shared_ptr(またはスマポ)至上主義の変なやつ以前から居るんだよな
相手にするな

651 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:37:27.20 ID:UsSsiWeS.net]
ナマポ使ったほうが良い場面なんて皆無でしょう

652 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:48:31.75 ID:2GJiXyxS.net]
出たwナマポ完全否定奴w

653 名前:デフォルトの名無しさん [2021/02/08(月) 21:58:57.06 ID:VJ9lplXi.net]
参照型のメンバ変数は参照オブジェクトの生存期間を保証できないからweak_ptrで保存しておいて使う時だけshared_ptrを取得するのがC++的な解決なんじゃないの。

654 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:08:09.48 ID:FKp3giDs.net]
スマポにしたら所有権の問題を考えなくてよい
というわけではないからスマポ使えというのは妥当ではない
逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い

ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら
エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避



655 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:11:14.29 ID:NgGwlfwa.net]
コピー禁止のshared_ptr欲しい

656 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:25:23.27 ID:bp+4mh0R.net]
すべてスマポで書くスタイルも悪くないと思うけど、メイヤーズ神もツリー構造で子が親のポインタを持つときはナマポで十分と書いている

657 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:27:43.60 ID:34Jom8HU.net]
木のノードは子へのポインタじゃなくて子のノードIDを持て😡

658 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:48:15.38 ID:NgGwlfwa.net]
自分よりポインタの方が寿命が長いことが保証されているなら確かに生ポで問題ないが
それが成り立つ状況ってなかなかないよな。

659 名前:デフォルトの名無しさん [2021/02/08(月) 23:02:19.81 ID:VJ9lplXi.net]
参照先の実体がまだ生存しているかどうか知るにはweak_ptr::expired()を使うしかないのが現状でしょ。

660 名前:デフォルトの名無しさん [2021/02/08(月) 23:07:56.19 ID:nKLqWVxG.net]
Chromiumはstd::unique_ptrを全面的に使ってるけど、ポインタを使う設計そのものが古いような気がする。

661 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:13:28.50 ID:BwguerZK.net]
まあcコードを全く使わないってのならいいんでないの。
ただc++のポータビリティーは君が思ってるより低いけどね。

662 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:23:15.47 ID:cR8ppl+C.net]
露骨すぎるマウント取りたがりダッセーwww

663 名前:デフォルトの名無しさん [2021/02/09(火) 01:58:29.04 ID:qUmf+U4D.net]
マウントじゃなくてポインタでは?

664 名前:デフォルトの名無しさん [2021/02/09(火) 02:46:23.52 ID:jPnyP+Vp.net]
C++に特化したAPIなんてどこのOSでも提供されないから、結局、Cの配列と互換性のあるstd::vectorやstd::arrayを使わざるを得なくなる。



665 名前:デフォルトの名無しさん [2021/02/09(火) 04:01:45.22 ID:qUmf+U4D.net]
>>644
木もコンテナで良いですよね。
所有権がハッキリしてて。

666 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:34:27.86 ID:nSJhwzEU.net]
>>651
data()を必ず使う手合いか?

667 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:39:10.06 ID:s3p3GZ7R.net]
木は木全体を収める領域ごと一気に解放する場合もあるから別に

668 名前:デフォルトの名無しさん [2021/02/09(火) 17:49:12.66 ID:KrtnTLUi.net]
>Cの配列と互換性のある

doubt

669 名前:デフォルトの名無しさん [2021/02/09(火) 17:53:30.91 ID:LEWRJrN2.net]
ダウトとデビューって似てるよね

670 名前:デフォルトの名無しさん [2021/02/09(火) 18:35:55.16 ID:qUmf+U4D.net]
親が子のポインタを所有する木は、親を消すとネストして子孫のデストラクタを呼ぶので、スタックが枯渇します。

したがって、子から順番に消さなくてはなりません。

671 名前:デフォルトの名無しさん [2021/02/09(火) 18:56:53.48 ID:qUmf+U4D.net]
その様はまるで摩天楼がドミノ倒しのように連鎖倒壊するようでもあり、DOMINOというピザにもなっています・

672 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 19:07:16.84 ID:IPYpL0sA.net]
なんと後味の悪い話

673 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 20:39:36.84 ID:zHOwdh/n.net]
意味が分からない

674 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:07:48.14 ID:Rh87rJZX.net]
>>657
それで枯渇するようじゃ木の探索すらできない。



675 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:13:02.23 ID:5Ac7csWH.net]
探索はループでもできるんで、たとえば数万個の要素を持つツリーを子から消せというのは真理なのかも

676 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:27:40.55 ID:AojZLEiV.net]
消すのは独立して実行できるので別スレッドに送れば実質コスト0

677 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:38:09.75 ID:s3p3GZ7R.net]
>>662
DFAとPDAではやれることの範囲の違いがちげう

つかこの場合は安易にスマポとかコンテナを使うから破棄ごときにトラバースの手間がかかるんである

678 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:44:42.72 ID:5Ac7csWH.net]
それもそうであるな

679 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:50:17.60 ID:s3p3GZ7R.net]
ちゅか垂直探索なら木をメモリに持っておく必要が無い
水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が
兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに
親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、
子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、
ウィークポインタの出番でもない

680 名前:デフォルトの名無しさん [2021/02/10(水) 01:37:49.58 ID:XIZePh+h.net]
子から消さなかったばかりに。
2000人を乗せた航空機が洋上で消えた。
ってなるかも?

681 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:48:13.89 ID:ZYaksnCf.net]
A380でさえ853席だが2000人なんてどうやって載せるんだろう

682 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:51:41.17 ID:2ozOIzIF.net]
く、空中で衝突するとか…

683 名前:デフォルトの名無しさん [2021/02/10(水) 01:53:08.99 ID:XIZePh+h.net]
インドでは屋根の上にも乗ります。

684 名前:デフォルトの名無しさん [2021/02/10(水) 01:55:11.55 ID:XIZePh+h.net]
https://trafficnews.jp/post/80031

証拠写真みつけてきた。



685 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:55:17.84 ID:uF0JvJPV.net]
GTA5のMOD作成者みたいな会話だな

686 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 02:01:19.54 ID:uF0JvJPV.net]
>>653
昔はdata()がなかった。(遠い目)

687 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 06:40:17.61 ID:ZYaksnCf.net]
アントノフの貨物室にすし詰めでどんくらい乗れるかな

688 名前:デフォルトの名無しさん [2021/02/10(水) 06:40:27.16 ID:XIZePh+h.net]
東京: TK
京都: KT
大阪: OSK
淡路: AWG

689 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 07:59:22.76 ID:FGGGEnfF.net]
航空機や原発みたいなクリティカルなシステムでは
全部固定長の配列で書いてあるんじゃないの

690 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 08:06:21.27 ID:uF0JvJPV.net]
釣れますか。
ヒープのほうが少し安全です。

691 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:25:11.13 ID:4XPmMtZj.net]
>>671
どこが証拠やねん!
せいぜり100人やないかヽ(`Д´)ノ

692 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 14:32:04.65 ID:TFzLuCg0.net]
すみません、std::for_each を使っていて continue したくなりましたが、サポートしてないです
よね? これって:
1. for_each は continue する必要がないような処理に限ってに使うべき。
2. ループの中で大きい if ブロックを作って空の処理にすればよい。
3. その他

693 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 15:13:45.18 ID:ZYaksnCf.net]
returnすれば?
for_each(begin(foo), end(foo), []{ if(bar) return; });

694 名前:デフォルトの名無しさん [2021/02/10(水) 16:06:00.49 ID:HSfvjOUE.net]
return は continue ではなく break じゃないの?
質問者の2.大きなif分で実質何もしないでいいと思う



695 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:20:11.24 ID:ZYaksnCf.net]
for_eachをbreakするにはthrowかlongjmpがいるぞ

696 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:35:39.62 ID:S47HOUGT.net]
きったねぇジャンプだ

697 名前:デフォルトの名無しさん [2021/02/10(水) 16:51:31.94 ID:HSfvjOUE.net]
あ、ラムダ式になってたのか

698 名前:はちみつ餃子 mailto:sage [2021/02/10(水) 17:51:08.81 ID:tNqysU9n.net]
>>679
for 文で書いた方が短く書けそうだけど、
あえて for_each を使いたい理由が何かあったりするの?

699 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:41:41.17 ID:FGGGEnfF.net]
Perlなら問題無くできる(continue→next、だが
C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…

700 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:57.06 ID:teDb7k99.net]
何の一線よ

701 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 20:18:41.39 ID:ln/pLvjf.net]
いやreturnでいいだろ…
許可しないってなんのことだよ

702 名前:デフォルトの名無しさん [2021/02/10(水) 21:21:18.68 ID:+e+FbMSY.net]
vectorで一億件ほどで、飛ばしたいのが100〜1000件程度なんだろう

703 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:51:25.56 ID:QYfnOwKH.net]
>>679
for_eachをrange based forに変更は出来ないの?

704 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:59:01.21 ID:ZYaksnCf.net]
>>690
おまえのスキルのためにか?



705 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:17:23.69 ID:qtVJ0qYe.net]
range based forなら普通にcontinueできるぞ

706 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:18:26.21 ID:ln/pLvjf.net]
>>689
飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?

707 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 04:16:42.30 ID:nrDdTgaQ.net]
early returnは正義

708 名前:デフォルトの名無しさん [2021/02/11(木) 11:22:44.35 ID:n0GRjtoR.net]
>>685
テンプレのときとか

709 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:53:02.68 ID:Iq2aKjep.net]
679がなぜfor_eachを使うのかを無視するのは
他人の領分を侵すお節介だ

for_eachの使い方をアドバイスできんやつは
しゃしゃり出てくるな

710 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:00:13.22 ID:hRfccug1.net]
よくよく話を聞いてみたらまるで異なる解決策が見つかるなんてよくあることじゃん。そんな経験ないの?
何をしたかったか確認するのは重要

711 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:15:41.21 ID:Iq2aKjep.net]
流れをよく読んでみろよ
for_eachをロクに使ってないやつなのモロバレだろ
質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは
回答者の資格ねえんだよ

712 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:18:25.32 ID:Iq2aKjep.net]
自分が何か尋ねているときに
質問内容に付き合ってやれる懐のねえやつは
うぜえだけだろが

713 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:23:57.31 ID:Iq2aKjep.net]
質問内容において自分より下なやつに教えを請いたいかよ

714 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:34:11.92 ID:hRfccug1.net]
for_eachを使う場合の答えはとっくに出てるのに何言ってんの?



715 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:17:08.97 ID:15xoUz1R.net]
3のその他で答えただけ。

716 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:01:29.92 ID:veopzNW6.net]
他人の領分なんて侵してナンボ

717 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:03:18.37 ID:qccRsQET.net]
>>702
はあ?returnではいけない理由は?

718 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:19:00.69 ID:a/CQbB/Z.net]
>>679はループしたいだけだろ
std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし

719 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:23:31.36 ID:nDjPJyoP.net]
>>704
returnで良いと思うよ。

720 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:50:06.93 ID:Iq2aKjep.net]
>>701
680は俺だが何言ってんの?

721 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 21:58:36.08 ID:bviF/sLG.net]
Visual Studio 2010(MSVC2010)で
 template<class T>
 void foo(T x) {
  printf("%d: %d\n", targetEntity, x);
 }
という関数テンプレートが定義されているときに、
 namespace bar { const int targetEntity = 1; }
 using bar::targetEntity;
 void baz() { foo(100); }
はコンパイルが通るのに、
 namespace bar { const int targetEntity = 1; }
 void baz() {
  using bar::targetEntity;
  foo(100);
 }
だと
 error C2065: 'targetEntity': 定義されていない識別子です。
と言われるorz

722 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 22:06:56.76 ID:bviF/sLG.net]
>>688
for_eachを勘違いいてたわサーセン、
確かにfor_each<bgn, end, Function>のFunction(*it)からならreturnするで良さげ

723 名前:デフォルトの名無しさん [2021/02/11(木) 23:28:48.49 ID:Ooe4jkn9.net]
>>707
アンパンマンはキミだ。

724 名前:はちみつ餃子 mailto:sage [2021/02/12(金) 01:36:02.90 ID:2OOQ6m86.net]
>>708
宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則
(クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど)
なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。

逆にどういう理屈で前者が通るのかは気になる。



725 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:02:20.64 ID:45Tu3B4L.net]
>>708
当たり前だね
最初の例ではtargetEntryをグローバル空間に導入しているからbaz()とfoo()の両方から見える
2番目の例ではtargetEntryをbaz()のブロック内に導入しているから、そこに包含されないfoo()のブロックからは見えない

ただし、これはfoo()を関数原型と関数定義に分けて関数定義をbarよりも後方に置いた場合の話だ
原文のままでは>>711が言うとおり通るわけがない

726 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:03:16.30 ID:45Tu3B4L.net]
- barよりも後方
+ usingよりも後方

727 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:01:12.63 ID:3x5iWh5q.net]
確かにideoneでもVS2019でも両方エラーになるのですだが、
1番目の例はVS2010ではビルドも通って動くもーん

ソース:
https://ideone.com/DC8fMv

実行結果(※ VS2010限定):
1: 100
続行するには何かキーを押してください . . .

728 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:04:11.00 ID:3x5iWh5q.net]
ちな関数テンプレートfoo()の定義をusingよりも後方にしたら全てでビルドが通って動く
まそりゃーそうならないとおかしいが

729 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:12:42.48 ID:45Tu3B4L.net]
>>714
通ってねえじゃん
何が言いたいんだ?

730 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:17:08.75 ID:3x5iWh5q.net]
>>716
> >>714
> 通ってねえじゃん
> 何が言いたいんだ?
※ VS2010限定

731 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:24:49 ]
[ここ壊れてます]

732 名前:.77 ID:45Tu3B4L.net mailto: だから何?
ill-formedなのがわかっても自分が正しいと強弁したいのか?
[]
[ここ壊れてます]

733 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:27:26.57 ID:3x5iWh5q.net]
全員の主張を再検証しただけでつよ?
>原文のままでは>>711が言うとおり通るわけがない (>>712)
が覆されてご機嫌ななめ??

734 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:32:07.63 ID:45Tu3B4L.net]
覆った?
おまえVS2010限定で逃げただろ
ill-formedはill-formed
これを覆せたら出直して来な



735 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:34:53.80 ID:45Tu3B4L.net]
俺も昔のバージョンのコンパイラは使うがバグ技は使わないし
そういうことをする厨二病とは組みたくない

736 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:38:38.54 ID:3x5iWh5q.net]
>おまえVS2010限定で逃げただろ
VS2010ではビルドが通るというのが話の発端なので…
1番目の例がill-formedであろう点は同意

737 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:51:23.22 ID:45Tu3B4L.net]
orzなんだろ
何が誰が悪いのかわかったら素直になれよ
居直る態度が気に入らねえ

738 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:12:22.74 ID:3x5iWh5q.net]
何が悪いのか、はともかく
誰が悪いのかとは一体…
つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;;

個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、
例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて
template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる
(template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然

再発防止のためには、C++規格のどこをどう読めば良いんじゃorz

739 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:57:55.62 ID:45Tu3B4L.net]
>>719は明らかに煽り口調だろうが
和解したいなら、あの態度を撤回しろ

俺は和解なんかできなくて構わんが

740 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:26:37.15 ID:1W1GlA05.net]
匿名掲示板で誰が何を言ったのどうのとみっともないぞデフォルトの名無しさんよ

741 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:29:35.12 ID:jxDcSv/l.net]
どう見ても>>716がイミフな言いがかりつけてるだけにしか見えんが…

> 確かにideoneでもVS2019でも両方エラーになるのですだが、
> 1番目の例はVS2010ではビルドも通って動くもーん

742 名前:デフォルトの名無しさん [2021/02/12(金) 13:22:44.45 ID:x9NfpsA7.net]
匿名でも江副とかQZとか片山やはちみつが糞なのは伝わってくるω

743 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 18:24:14.30 ID:45Tu3B4L.net]
単発IDになりやがった
どこまでも腐ってやがるな

744 名前:蟻人間 mailto:sage [2021/02/12(金) 19:12:56.39 ID:fTOQtm+W.net]
どこでも動くように標準化しましょうねって話だよね。



745 名前:蟻人間 mailto:sage [2021/02/12(金) 19:29:19.43 ID:WC9JZZt5.net]
G++とかclang++などの複数のコンパイラで警告最大にして自動ビルドすれば再発防止できると思われます。

746 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 19:37:54.63 ID:3abO7oQ0.net]
流れをぶった切って質問です。

あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、
::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする
ことって可能かしらん?

747 名前:蟻人間 mailto:sage [2021/02/12(金) 19:46:11.11 ID:WC9JZZt5.net]
>>732
private dtor使え、だとよ。
https://stackoverflow.com/questions/631783/what-is-the-use-of-having-destructor-as-private

748 名前:蟻人間 mailto:sage [2021/02/12(金) 19:55:37.68 ID:fTOQtm+W.net]
dtorはデストラクターの略ね。
死のトラクターじゃないよ。

749 名前:デフォルトの名無しさん [2021/02/13(土) 02:57:21.77 ID:ZCgeuP6g.net]
映画化決定。

750 名前: mailto:sage [2021/02/15(月) 00:20:32.87 ID:M7Hs01/T.net]
>>728
私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥

751 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 12:30:59.56 ID:tZ1nblID.net]
>>733
ありがとう。参考になりました。

流石にグローバルdtorの直接呼び出しを気にしている人は居なさそうですね。
通常の使い方じゃないから気にするな、が正解かしらん。

752 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:45:49.14 ID:zTH+X1Xm.net]
画像
https://genkibox.com/linepic/wp-content/uploads/2017/10/line0049.jpg

753 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:59:33.07 ID:zTH+X1Xm.net]
つかprivate dtorって何の解決にもなって
なくね?
クラスFooのデストラがprivateな時点で
Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは…
あとp.get()->Delete()とされるのも恐ろしいすぐる………

754 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 19:15:28.82 ID:Pme6j5oX.net]
>>739
そのあたりは回避策ある。
どのwebページに解説あったか覚えてないけど……



755 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 08:24:04.17 ID:Pn/OWNHb.net]
operator <=>を定義しても
==と!=が使えるようにならないのは、なんで?

756 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 11:29:34.99 ID:u6Au0MiC.net]
https://cpprefjp.github.io/lang/cpp20/consistent_comparison.html
のoperator==節で仕様とその理由についても説明してあります

757 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:05:07.17 ID:8kTif7Fu.net]
relops

758 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:07:48.78 ID:ZhVk2C4b.net]
relops

759 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:14:57.71 ID:7xS0C1vs.net]
なるほどわからん。弱順序って何よ?

760 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 13:36:33.88 ID:peDNmUYI.net]
>>745
二項関係で、反射律、推移律、比較可能性を満たすもの

761 名前: mailto:sage [2021/02/17(水) 21:10:31.90 ID:n4obO1jB.net]
>>746
擬順序とか半順序と呼ぶ本もありますね、
ただ、その「比較可能性を満たす」とはなんでしょうか?私の教科書では、擬順序には反射律・推移律だけしか要請されていなかったと記憶しているのですが?

762 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:46:57.44 ID:ZhVk2C4b.net]
普通に言葉通り任意の2つの元を比較できるということなのでは…

木構造で「親は子より大きい」という順序を定義しただけ
(全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、
 文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ
では兄弟間の大小が定まらない、
みたいな

763 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:47:32.54 ID:ZhVk2C4b.net]
のは半順序で、
整数みたいなやつが全順序

764 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:59:39.55 ID:ZhVk2C4b.net]
なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ
つまり全順序集合の集合と半順序集合の集合が区別できん
両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、



765 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:34:07.44 ID:48a8FzyN.net]
a≦b または b≦aが成り立つ時、比較可能
弱順序ってしらなかったけど、半順序とは違うようだ
「半順序?弱順序?二項関係・順序関係まとめ」って記事

766 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 03:35:31.61 ID:sRdwF113.net]
束論やってるけど弱順序とか初めて聞いた…
マ界用語?

767 名前:741 mailto:sage [2021/02/18(木) 06:50:20.77 ID:brZHVFLx.net]
>>74

768 名前:2
まだ何とも言えないが
thx!
[]
[ここ壊れてます]

769 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 10:08:01.17 ID:48a8FzyN.net]
弱順序は、半順序よりは制限強いが全順序より弱いもので、
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど
半順序までは緩められない、ってのがあるみたいね

770 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 13:16:30.49 ID:9Yl3mCZH.net]
>>752
束って何で勉強すればいいん?

771 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 14:43:05.98 ID:48a8FzyN.net]
アルゴリズムとの関連はちょっとわからんけど

数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな
もしくは順序集合の話として集合論の本

772 名前: mailto:sage [2021/02/19(金) 04:42:11.06 ID:3tFNJrqv.net]
>>748
>普通に言葉通り任意の2つの元を比較できるということなのでは…

いや、それは全順序ですよ
・擬順序
・順序
これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います

擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、
順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序
だったかと

773 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:38:08.11 ID:mpGE+xsF.net]
wikipediaの「推移関係」の項目より

半順序 - 反対称的な擬順序
擬順序 - 推移的であると同時に反射的
全擬順序 - 完全的な擬順序
同値関係 - 対称的な擬順序
厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合
全順序 - 推移的で反対称的な完全関係

全順序、半順序くらいしか知らんかった

774 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:51:11.65 ID:gWMDVcMR.net]
OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス
かつ反射的、AはAのサブクラス



775 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:55:11.79 ID:fAhRarpN.net]
>>757
>いや、それは全順序ですよ
は? その条件が共通なだけだろ

776 名前: mailto:sage [2021/02/19(金) 21:23:56.68 ID:3tFNJrqv.net]
>>760
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ
すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています

777 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:53.04 ID:gWMDVcMR.net]
ブール代数 型システムで検索しても出てこないけど>>523
可補分配束の定義見てると確かにそんな気はしてくる

インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える

要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす
void *は何でも指せるという意味で最大元
まともな型システムなら(少なくとも)上記の擬順序以上は要求る
演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える
型チェック通らない全ての型を考えられるし、それが¬
型述語で定義してればそのまま!演算子になる

778 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:14.25 ID:gWMDVcMR.net]
確証が持てなくてもどかしい…数学できる人ツッコミ待ち

とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた

779 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:34.53 ID:hHLb88jw.net]
ググってる時点で、というかそのことを隠しもしないニワカ

780 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:56:36.22 ID:gWMDVcMR.net]
>>764
隠して5chなんかで偉ぶってどうすんのさ

781 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:01:35.27 ID:aORwmd7L.net]
質問ですがムーブコンストラクタを有する基底クラスの
派生クラスでムーブコンストラクタを
派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても
安全に書く方法って何かあるんでしたっけ

782 名前:デフォルトの名無しさん [2021/02/19(金) 22:03:03.40 ID:6z9jMlRH.net]
作ったクラスをmapにいれるときoperator<を書かなきゃいけないのがめんどい

783 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:08:24.37 ID:aORwmd7L.net]
あとムーブコンストラクタを有するクラスを
詳細を隠ぺいする目的でインターフェースを設けたとき
インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ
アブストラクトファクトリイーを作るしか無い?

784 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:11:39.72 ID:aORwmd7L.net]
この場合アブストラクトファクトリイーといっても、元のクラスFooに対して
IFoo IFoo::move() { ... } が定義してあって
 IFoo x = (適当な生成手段)
ののち、
 IFoo y = x.move()
でxが破壊されるやつ!



785 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:36:29.47 ID:F7SsNRLa.net]
それインターフェースとして使えてないよ

786 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:40:16.16 ID:iK8Sr3o/.net]
領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
memcpy(b.data(), a.data(), n*sezeof(T))
で良いんですかね?

UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか

787 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:38:00.62 ID:YJV0xwOV.net]
>>771
ド素人かよ

788 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:42:23.87 ID:upzAgg50.net]
>>771
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな

789 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:11:48.90 ID:BRyl48dG.net]
>>761
その「一番弱い」とか言ってるのは前順序だろ。

ククク... 前順序は順序四天王の中でも最弱...
ウィキペディアにも書いてあるのに間違うとは面汚しよ...

790 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 11:17:36.76 ID:ZF+WEG2v.net]
半順序とかいう訳が悪い
英語のpartial orderの方が分かりやすい

791 名前: mailto:sage [2021/02/20(土) 11:27:39.73 ID:mkFIMg3t.net]
>>774
本によって用語にブレがあるのは数学では常識でしょう?だから>>761 では定義もあわせて書いておきました

792 名前:デフォルトの名無しさん [2021/02/20(土) 11:30:33.89 ID:ec7b4JGn.net]
あとは裁判で争うしかないでしょうね。

我々には判決が出せませんから。

793 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:52:10.16 ID:N5IkYQZo.net]
>>771
前提条件として

・ T の型が trivially copyable である
・ vector の大きさが必要な大きさ分に出来ている

ならそれでもいいよ。
でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、
作法的にはあまり使わないに越したことは無いって感じ。

794 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:56:56.24 ID:N5IkYQZo.net]
>>771
>>778
と思ったけど、 vector<T> ではなくて vector< vector<T> > なのか。
それだと領域が連続するという前提が成り立たないんじゃないんですかね。



795 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:51:28.34 ID:K0wy5MAI.net]
>>770
どういう意味じゃ…
ムーブコンストラクトする手段をインターフェースとして公開したい需要は論理的に有り得る
それともIFoo::move()に実装が伴うからという意味?

796 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:23:36.69 ID:XZPJJfWU.net]
>>779
なぜ?
行優先か列優先かは置いといて、vectorの要素は連続するのだからvectorのvectorも連続するのでは?
サイズやキャパシティが変わったときに不連続になりうるということ?

797 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:39:27.43 ID:ZF+WEG2v.net]
vectorのvectorの中身はサイズ値とバッファポインタが連続で並んでるだろうな

798 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:57:30.99 ID:upzAgg50.net]
>>781
正しくコピーしたければ、
memcpy(b[0].data(), ...)
みたいにしないと。
このとき当然b[1]のデータ領域はb[0]の後ろに連続していない

799 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 15:27:01.55 ID:N5IkYQZo.net]
>>781
vector 型のオブジェクトが連続して並んでいることは保証されるよ。
でも vector 型のオブジェクトのメモリレイアウトがどうなってるかは保証されない。

常識的な実装は >>782 が言う通りヒープから持ってきたメモリのポインタなどを持ってるだけ。
データそのものを内包しているわけではない。

800 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 16:22:37.93 ID:UDAFNKrx.net]
ほらCと同じ基本の部分を教えずにいきなりSTLとか勧めるからこういう初心者が出てくる・・

801 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:06:29.35 ID:1TZxH4Mg.net]
ある程度出てきても問題ないだろ。ちゃんとドキュメント読んで理解してくれる人も多いんだろうし、
「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。

802 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:09:29.42 ID:UDAFNKrx.net]
ちょっと何言ってるかわかんない

803 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:54:39.09 ID:ZF+WEG2v.net]
相談室に初心者が来て何の問題があるのか

804 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 18:06:15.32 ID:N5IkYQZo.net]
>>788
程度による。



805 名前:蟻人間 mailto:sage [2021/02/20(土) 19:27:14.79 ID:VmESNyRi.net]
>>771

> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
> memcpy(b.data(), a.data(), n*sezeof(T))
> で良いんですかね?

待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。

ダメです。

806 名前:蟻人間 mailto:sage [2021/02/20(土) 19:49:01.06 ID:HfYkFRCd.net]
C++のvectorでは、演算子[ ]がオーバーロードされてるから、C言語の常識が通用しないんだよ。

memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。

std::vector v;
int a = 5;
memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。

807 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:38:26.44 ID:PUIofNKd.net]
>>791
流石にそれは質問者のレベルにも達してないんで問題外

808 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:44:29.23 ID:Rkd/h2tQ.net]
別にここで何が正しいかを結論できなくてもいいのだが

>>776
そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を
教えてくれる?
手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw
知識として一応確認しておきたいかなと。

809 名前: mailto:sage [2021/02/20(土) 21:19:47.30 ID:mkFIMg3t.net]
>>793

>>761 では「推移的かつ反射的であるのみの順序関係が『弱順序』」とはいっていませんよ、よく読んでくださいね
>>761 で言っているのは「一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいい」としかいっていませんですよね‥‥
曲解もはなはだしいと思いますね

ちなみに私の教科書ではこれを「擬順序」と定義しています、大熊正氏の本ですが、私には一生かかっても私には読めないでしょうから、あとはググってください

810 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:44:52.70 ID:K0wy5MAI.net]
std::vector v(sizeof(int));
int a = 5;
memcpy(&(v[0]), &a, sizeof(a)); // おk

811 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:47:14.25 ID:K0wy5MAI.net]
つかこうかorz
std::vector<int> v((size_t)1);
const int a = 5;
memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));

812 名前:蟻人間 mailto:sage [2021/02/20(土) 21:58:40.54 ID:HfYkFRCd.net]
この場合は素直にループを書くか、それとも格好良くstd::copy使うのが楽かな。

813 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:26:13.27 ID:G4m9GHw4.net]
for文回したら死ぬ病気にでもかかってんのか?

814 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:29:00.28 ID:oO8KGr2m.net]
条件を満たすならmemcpyのほうが圧倒的に早いからな



815 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 01:32:42.66 ID:jd0qgVVy.net]
それほど速くならない・速くなくていい場合のほうが圧倒的に多いってのもあるけどな。

816 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:13:29.79 ID:ZrTKdY4P.net]
そもそもそんなクソみたいなコードはふつう書かない

817 名前:770 mailto:sage [2021/02/21(日) 03:54:49.57 ID:HYHVDYIS.net]
>>780
IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど
それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ

818 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:58:42.63 ID:0HHdBuLy.net]
メモリコピーを最適化する前に、他にすべきこと沢山あるだろ的な答えになるよな、確かに。
PG界の真理情報だわ。

819 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 05:11:43.88 ID:L28MHLBD.net]
valarrayでxorとか

820 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:43:27.01 ID:F92hI73d.net]
>>802
オブジェクトAがconstメンバとして保持しているブツの所有権を移してオブジェクトBを構築することは
ムーブコンストラクタでないと_なのでムーブコンストラクタである必要があり
この要請はオブジェクト全体が直接アクセスかポインタや参照経由の間接アクセスかとは独立愚連隊、

>>803
真に高速化を求められる内側のループでstd::vector<int> xとかしないから
>>796はひとつながりの省略のないコードとして読んだら判断を誤りうる

821 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:51:19.71 ID:F92hI73d.net]
じゃなかったorz
 Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) }
はconst_cast<Foo>的な危険手段でないとやれないが
 Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) }
とするとなんかコンパイラが警告を出すから
 Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) }
にせざるおえないという、

822 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:21:42.30 ID:Dqlg3tSu.net]
関数と関数オブジェクトってどう使い分けるの?

823 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:30:17.46 ID:YxY+Ievf.net]
こういう馬鹿にはちゃんとベンチマークとれって言ってやるのが正しい行い。

824 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:32:16.15 ID:HYHVDYIS.net]
>>805
そんなこと聞いてるんじゃなくて
提示されたコード片じゃどう考えても動かないから何したいか分からんのよ

https://wandbox.org/permalink/ancQey3IkQKyWsu1

こっから始めてどこをどうしたいか教えてくれ



825 名前:デフォルトの名無しさん [2021/02/21(日) 14:47:26.80 ID:9WgNecVw.net]
404 Not Found

826 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 15:33:36.83 ID:HYHVDYIS.net]
すまん
https://wandbox.org/permlink/ancQey3IkQKyWsu1

827 名前:デフォルトの名無しさん [2021/02/21(日) 16:21:41.69 ID:u2qGdVDT.net]
過疎ってるし、初心者どころかJavaの質問でもOKでは?

828 名前: mailto:sage [2021/02/21(日) 19:01:13.83 ID:3Ebck9FU.net]
>>807
この質問に対して回答をつける用意がありますが、しばしお待ちを

829 名前: mailto:sage [2021/02/21(日) 19:27:36.57 ID:3Ebck9FU.net]
>>807,813
昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています
数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥
https://mevius.5ch.net/test/read.cgi/tech/1434079972/72

830 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:07:12.76 ID:F92hI73d.net]
>>809
Fooはこんなやつ、
https://ideone.com/mPPH8I

IFooは、C++ではよく考えたらIFooのオブジェクトを直接生成できないので(>>802の仰せの通り
std::shared_ptr<IFoo>とかで生成することを考えたのだがエラーになるorz
(上のリンク先のコードでコメントアウトしてあるgenerate_IFoo()
思いのほか闇が深かった\(^o^)/

std::shared_ptr<IFoo>が生成できた暁には、
std::shared_ptr<IFoo> pがリソースの所有権を握ったFooを保持しているとき、
std::shared_ptr<IFoo> qというのがいるとして、
 *q = *p
で所有権を*pから*qに渡したり、
 return *p
で呼び出し元が所有権を有するFooを受け取れるようにしたいワケ

831 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:09:12.28 ID:F92hI73d.net]
ちなみにWandboxでソースコードをフォークする方法は
初心者なので
わかり
ません

832 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:14:47.49 ID:LxNhpnKU.net]
generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ

後半も意味不明
*q = *pってそれスライシングだぞ

833 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:23:47.49 ID:F92hI73d.net]
>>817
普通の(ムーブでない)コピコンは書けないなぜなら>>806の理由により

>*q = *pってそれスライシングだぞ
どゆこと?
Foo foo1とFoo foo2だと
foo1 = foo2
とできるのに、

834 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:26:48.03 ID:F92hI73d.net]
ちょっと補足すると、IFooには現状代入手段が無いから、
*q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード
のつもり



835 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:03:58.63 ID:+My/Unlg.net]
>>814
処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?

836 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:05:03.53 ID:HYHVDYIS.net]
>>815
コピー代入演算子とムーブコンストラクタだけ定義するとか意味分からんし
インターフェースによる隠蔽より先にそっち解決しなさい
何がしたいのか自分で本当にわかってる?

837 名前: mailto:sage [2021/02/21(日) 21:07:32.53 ID:3Ebck9FU.net]
>>820
まあ、そのとおりであり、そうなんですよね…
>>814 は関数オブジェクトである必然性はありません、関数オブジェクトを積極的に使う例としては STL にご登場願うしかないのかもしれませんね

838 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 22:29:56.45 ID:LxNhpnKU.net]
>>818
shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ)
IFoo* p = new Foo();
IFoo* q = new Foo();
というのがあったとして*q = *p;ってのは何だと思う?
pとqはIFoo*型だ
だからもちろん*pと*qというのはIFoo型だ
すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ
operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない
よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される
これをスライシングという

839 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 23:00:12.09 ID:jd0qgVVy.net]
>>822
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。
状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、
状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。
(普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)

840 名前: mailto:sage [2021/02/21(日) 23:42:46.53 ID:3Ebck9FU.net]
>>824,820,(>>813,814,822)
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト
https://mevius.5ch.net/test/read.cgi/tech/1434079972/21
https://ideone.com/9KIuSD
あとはラムダ式の理解のための存在という認識、か

841 名前:はちみつ餃子 mailto:sage [2021/02/22(月) 00:10:55.10 ID:oiAqsUn6.net]
「ラムダ式が関数オブジェクト (型の定義と生成) の構文糖」というのは
既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、
しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが
通りがよくなったりするかもしれないね。

842 名前:デフォルトの名無しさん [2021/02/22(月) 04:39:33.19 ID:7qATnC1I.net]
関数オブジェクトで状態を渡せるのは結構なんだが、コピーコンストラクタ渡しなので、
手の込んだ状態管理だった場合は結局、C言語と同じ

843 名前:ュユーザー定義変数を介して状態を読み書きすることになる。 []
[ここ壊れてます]

844 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:23:10.03 ID:Dz0hZ3aS.net]
>>827
shared_ptr使えば、大抵の場合は問題ないんじゃない?



845 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 09:54:32.23 ID:Y0MZ31oO.net]
>>807,820ですけどQZで始まる人あまりにもレベル低いというか回答者として不適格だと思うのでNGします

846 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:22:59.45 ID:1euWwsnd.net]
>>829
答えてもらってる立場で偉そうに。常識ないの?

847 名前:デフォルトの名無しさん [2021/02/22(月) 11:11:29.17 ID:M+ptXBNl.net]
いやでも実際・・・QZはね・・・
50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね
ほんと残念だけども

848 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:36:36.23 ID:7qATnC1I.net]
関数オブジェクトに対するラムダ式の優位性は、ローカル変数を比較的安全かつ手軽に参照渡しできることだろう。

849 名前:デフォルトの名無しさん [2021/02/22(月) 12:08:03.12 ID:5Ezd+ZoO.net]
あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな?

急にその手の書き込みが増えてあからさますぎる。

850 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:15:54.50 ID:rpJl6SNk.net]
>>831
QZの回答は糞だとして、回答者に対して>>829みたいな態度をとることがどう正当化されるわけ?

851 名前:デフォルトの名無しさん [2021/02/22(月) 17:04:18.35 ID:M+ptXBNl.net]
回答者には無条件で感謝しないといかんのか?
気持ち悪いな

852 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:39:33.90 ID:rpJl6SNk.net]
>>835
感謝しろなんて言ってないぞアホ

853 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 19:14:24.66 ID:SaDkzfTf.net]
>>835
回答を得るのに適切な行動を取りゃいいよ。
変にヘイトを吐くとつっかかる奴がいるから回答から遠くなる。
>>829は感情を制御する訓練をしないとな。

854 名前:デフォルトの名無しさん [2021/02/22(月) 19:28:11.36 ID:M+ptXBNl.net]
たしかに
勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね
擁護した俺が悪かったごめん



855 名前: mailto:sage [2021/02/22(月) 19:57:55.16 ID:R3R68rti.net]
>>831
認めましょう

>>838
私の意見に一番近いですね
私は、馬鹿な私の意見を見たくない人も多いと想定しており、馬鹿な私が発言するときは馬鹿の印としてトリップをつけるようにしています、それだけは確約しますので、後は好きなように NG に入れていただいて結構ですよ
私はそういう人に干渉するつもりはありません

856 名前:デフォルトの名無しさん [2021/02/22(月) 20:02:59.96 ID:5Ezd+ZoO.net]
そういう書き込みを見ると、あわしろ氏よりQzのほうが大人に見えるなあ。
まあでも、あわしろ氏には技術評論社がついてるからね。
謝っといたほうが良いんじゃないの?

857 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 20:52:21.84 ID:jfkpe4Eh.net]
>>834
俺も以前質問したら、明らかに見当違いなマウント取りたいだけの回答が来て、言い返した時
君みたいな事言われたよ
回答くれるのは有難いが・・・ねぇ。
まぁそういうのはスルーしろ、ってんならまだわかるけど

ちなまともな回答くれた人には礼言ってるからね

858 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:08:29.88 ID:51epSMYu.net]
知らんがな。キミの意見だけ聞いてその時どっちに問題があったかどうやって判断すればいいんだよ

859 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:18:11.70 ID:jfkpe4Eh.net]
そういう話じゃねーよ

860 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:38:10.30 ID:6MWC7t1x.net]
あるクラスのメソッドを他所で借りたいというか使いたいときって移譲(インスタンス化)するかコピペするしかないの?

861 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:41:49.01 ID:Z5ZYenTn.net]
>>844
メソッドをクラスから分離してテンプレート関数にすれば、クラスの継承関係がなくても使えるので便利。

862 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 01:01:30.38 ID:48JMuLBY.net]
>>844
メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる
ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど

あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する

863 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:11:59.35 ID:kBU50DXM.net]
>>846
> ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
極論、引数をとって返り値を返す関数だけで全てのことが実現できますよね?
そう思ったらクラスのメソッドにするよりも何でもクラス外の関数にする方がお得というか楽な気がしてしまいます

864 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:21:43.52 ID:7kgSemXY.net]
そのとおりで極力フリー関数にするべき
(非静的)メンバ関数というのはデータメンバーの一貫性を保つためだけに使うもんだよ



865 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:27:00.90 ID:ex5XjLGm.net]
>>847
"メンバアクセスしてない"てのが重要だと思うよ
実際、非staticではなくstaticなメンバ関数にしたい場面てあんまり無い(外の関数と大して変わらんから)

>>848みたいなのはオブジェクト指向も理解出来てないド素人が玄人ぶってよく言うんだよなぁ・・一応釘だけ刺しとく

866 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:19:26.69 ID:kBU50DXM.net]
なんかOOPの行き着く先みたいな話してるな

俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う
必然、その方が副作用も少ない

867 名前:デフォルトの名無しさん [2021/02/23(火) 08:29:56.96 ID:Z5ZYenTn.net]
staticなメンバ関数には、名前衝突しにくい、msvcのインテリセンスのような入力支援を得やすい、という恩恵はある。

868 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:30:00.72 ID:u3MMsI1X.net]
メッセージ・・?
何の言語の話してんだ

869 名前:デフォルトの名無しさん [2021/02/23(火) 09:47:50.72 ID:DwnxTU4/.net]
オブジェクト指向の概念の話をするときにメッセージって言葉使いませんか?
C++ならメッセージ=メンバ関数
Javaならメッセージ=メソッド
言語によって呼び方が違うから概念的な話のときはメッセージといったほうが通りがよい

870 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:07:32.09 ID:B3ih21Pc.net]
>>849
「オブジェクト指向も理解出来てないド素人が玄人ぶってよく言う」
の意味がさっぱりわからん
>>848の表現に一切ケチつけられる要素ないと思うけど

871 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:15:54.38 ID:gTQJYaBt.net]
> データメンバーの一貫性を保つためだけに使う

いったい何が言いたいんだろう
他人に分かり易く言えないのは自分が解ってないからというケースがある

872 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:18:06.26 ID:B3ih21Pc.net]
> データメンバーの一貫性を保つためだけに使う

この表現で普通に分かるけど
分からん人もいるのね了解

873 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:20:33.46 ID:NIjAanwq.net]
メッセージが何のことかわからないのはワロス

874 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:21:51.05 ID:gTQJYaBt.net]
>>856
でか口は具体的に説明できてからぬかせ
このハッタリ野郎



875 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:22:34.65 ID:7kgSemXY.net]
データメンバに対して想定した扱い方だけをさせるようにして予期しない状態の発生を防ぐため、って言えばお気に召したかしら
普通はそれを短く「一貫性を保つ」って言うのだけど

876 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:31:05.01 ID:u3MMsI1X.net]
>>853
使わない、というか使うな誤解を招くから
SmalltalkとかObjective-Cならわかるけど
C++やJavaのそれはメッセージングではないと考えるのが普通(そう見做せないわけではないが

877 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:33:09.34 ID:B3ih21Pc.net]
>>858


878 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:34:51.99 ID:gTQJYaBt.net]
>>859
1行目は納得
2行目の主観論には付き合ってらんね

879 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:37:31.33 ID:B3ih21Pc.net]
>>860さんに同意で
C++やJava界隈だと明確に避けてると見てる
メッセージってのは

880 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:49:29.89 ID:7kgSemXY.net]
ごめんねおじいちゃん知らない表現を使われただけでそんなに拗ねるなんて思わなかったんだ

881 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:07:54.70 ID:u3MMsI1X.net]
いや、悪いけど>>859を以って
>データメンバーの一貫性を保つためだけに使うもんだよ
などと言い切れるのは経験不足と見られても仕方ないと思うよ学生ちゃん

882 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:13:43.78 ID:j4L8+y6t.net]
おじいちゃんとか学生ちゃんとか、おまえらマウンティングしながらじゃないと会話できないのかw

883 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:54:07.11 ID:oVEFpcof.net]
このスレは特にそういうの多いよね

884 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:46:58.74 ID:HLi0yp23.net]
昔からこのスレは特に酷いよね
なぜマウントの必要があるのかは少しだけ興味深いけど



885 名前:デフォルトの名無しさん [2021/02/23(火) 13:21:23.20 ID:+0nZ2NLW.net]
Linuxを使う以上、C++を嫌わないとダメだろ。

886 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:45:38.11 ID:iu17pC6m.net]
>>857,864
いや、メッセージはわかってるけどなんでC++スレで?
って話だろ
>>860の言うようにC++界隈ではあまり使わんし
単にイキってるだけにしか見えんw

887 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:46:51.42 ID:iu17pC6m.net]
>>865
どういう理由で経験不足と判断したか言ってみ

888 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:47:30.93 ID:alqL+AST.net]
オブジェクト指向に関しては、今の人は、昔はメモリが高価だったとでも思っておけば良いよ。

889 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:53:26.39 ID:UMWafFvJ.net]
>>823
レスdクス大儀であった
自己解決しますた、
https://ideone.com/k76kj5

890 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:59:21.85 ID:UMWafFvJ.net]
一貫性というのはオブジェクト内部の整合性のこ
とを言いたい
のでは…
※ 個人の感想です

891 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:03:58.66 ID:UMWafFvJ.net]
C++のメソッドの呼び出しをメッセージと言い出すとウィンドウメッセージと紛らわしい(小並感
ていうかC++においてメッセージと言えるのはメソッドの「呼び出し」であってメソッドそのものではない
(例えば)メッセージ自体は継承メカニズムとは独立の概念なのだから
※ 個人の感想です

892 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:10:51.07 ID:HLi0yp23.net]
Smalltalkはほぼ知らんけど
メッセージ式ってのは
セレクタ+引数のことだったはず
いやこれどうでもいいか

893 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:18:47.72 ID:UMWafFvJ.net]
ていうか今にして思えばstd::shared_ptr<IFoo>がIFooのインスタンスに対する所有権を適切に移譲したり管理するので
std::shared_ptr<T>に持たせることにした時点でIFoo自体がリソースに対する所有権を管理する必要はなさげorz

894 名前:デフォルトの名無しさん [2021/02/23(火) 14:29:34.84 ID:+0nZ2NLW.net]
smalltalkなんて誰も使わないのだから、アジソンウェスレイのオブジェクト指向プログラミング入門にそう書かれていたからという理解で良いのでは?

若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。
この本しかなかったんですよ。
良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。

全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。



895 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:09:16.56 ID:CS53pw6I.net]
C++のオブジェクト指向でメッセージングのワード出してくるのは
継承を説明するサンプルコードで動物の階層もちだしてくるのと同じ功罪がある
理解のとっかかりにはいいが、リアルな実装の段階ではそういうポエムみたいな話は忘れたほうがいい

896 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:11:25.59 ID:feF5fzNV.net]
メッセージ(笑)とか頭おかしい奴が言いそう

897 名前:デフォルトの名無しさん [2021/02/23(火) 16:16:12.25 ID:+0nZ2NLW.net]
>>879
功もあると御自分で書かれているのでは?

898 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 19:10:57.35 ID:48JMuLBY.net]
>>873
これで本当にいいのか?
コピー代入演算子でムーブさせるのが本当にあなたのやりたかったこと?
std::auto_ptrはこの問題があったからdeprecatedになったんだけど

899 名前: mailto:sage [2021/02/23(火) 21:53:45.68 ID:tPF8d5Rx.net]
>>878
>書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。

私の若い頃を思い出します。
当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした
最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥

そういうわけで、アマゾン・ウェルカム!

900 名前: mailto:sage [2021/02/23(火) 21:57:00.55 ID:tPF8d5Rx.net]
>>875
私は例のペゾルド教本を何とか C++ に適応させたくて、ペゾルド本の WM 処理・巨大 switch 文を C++ に適合させようと未だに四苦八苦していますが、やっぱり MFC に移っちゃったほうが楽チンなんでしょうか?

901 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:05:53.75 ID:u3MMsI1X.net]
>>871
あまりに一面的な見方やろ
>>848はカプセル化も多態も、上で話してた関数オブジェクトさえ否定する暴論
よほど拒否反応があるんだろうなー、と

902 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:07:42.70 ID:HLi0yp23.net]
否定したように見えちゃってるんだな
いろんな人がおるな

903 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:15:00.14 ID:iu17pC6m.net]
>>885
まあ
> (非静的)メンバ関数というのはデータメンバーの一貫性を保つため「だけ」に使うもんだよ
の「だけ」に引っかかってると思うんだけどそっちの方がどちらかと言うと暴論に見えるよ

904 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:20:52.65 ID:u3MMsI1X.net]
まぁ関数オブジェクトはある意味当てはまってるかもしれんと思うが
>>887
そっちも根拠書いてね



905 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:28:42.45 ID:iu17pC6m.net]
>>888
>>886が言うように「否定」はしてないと思うよ
ってことね

906 名前:デフォルトの名無しさん [2021/02/23(火) 22:44:54.86 ID:H7IAWcv9.net]
[selector message]

Objective-Cが良かったな。

907 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 06:48:21.60 ID:Vo6CI9FQ.net]
>>884
やってみるとわかるけど、MFCと同じものを自分で作ってる感じになるね
ARM C++時代に作るとああなるんだけど、
今どきのC++20で作るとどうなるのかは興味深い

908 名前:はちみつ餃子 mailto:sage [2021/02/24(水) 15:54:28.46 ID:EZ8EgbLC.net]
現代的な Windows のフレームワークとしては C++/WinRT に力が入ってるみたいなんで、
今からはこれを使った方がよさげ

909 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 17:47:00.67 ID:T43vsud+.net]
P/Invokeともこれでおさらば、
と言いたいところだがネイティブC++をwrapするC++/WinRT自体はCLR上の言語なんじゃなかったっけ…
違ったっけ…

910 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 20:59:30.49 ID:T43vsud+.net]
C++/CXと混同すた、orz

911 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 00:40:25.02 ID:hxonNlh3.net]
C++/CLIだよ(小声

912 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 12:27:48.18 ID:Kp+Bp4Dl.net]
int (int)型のコールバック関数ポインタにて、一応呼ばれるのでnullはマズイけど不要なので空にしたいという場合に
int () { return 0; }という引数が一致しない空関数へのポインタを渡すとまずい事になるんでしょうか?
低レベルの知識がないのでよく分からないんですが、スタックの巻き戻しとかでズレが生じるとかありそうな気がしています

913 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 14:45:58.57 ID:ziL/azOs.net]
>>896
使われている ABI による。
x64 環境なら Unix (系の多くの OS) でも Windows でも引数は整数4個分までは
レジスタで渡されるんで、スタックの整合性は壊れないはず。

914 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 15:12:23.79 ID:bxBNuN1v.net]
>>896
スタックは呼ぶ側で処理するからズレないよ
でないと可変長引数とか実現できないし

>>897
そんなもんは処理系やオプション次第



915 名前:デフォルトの名無しさん [2021/02/25(木) 15:36:41.54 ID:SLTnVXDN.net]
静的解析ツールやコード分析で警告が出るだろうから直したほうがいいと思うけどね

916 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 15:44:39.43 ID:ziL/azOs.net]
x64 の一般的な ABI ではもう様々な呼出し規約を使い分けないようになってる。
(cdecl と stdcall が混在していた Windows が例外的で
他は 32bit 時代からかなり統一されていたみたいだけど。)

まあそれはともかくとして、
実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。
不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。

917 名前:デフォルトの名無しさん [2021/02/25(木) 16:08:57.78 ID:0Aa2beUH.net]
はちみつは見所がある弟子にしてやっても良いと、あわしろ氏が褒めてた。

918 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 16:57:46.00 ID:2x/2jVQO.net]
>>896
古いCから新しいC++まで含め、素朴な観点では原則的には大丈夫では有るが、
あなたが言っているように例外処理が入ってくるとどうなるかは不明。
C/C++では型を厳しくしているのは、そういうことを避けるため。
あなたのやろうとしていることは、関数アドレスをキャストしなくては
関数ポインタへの代入できない。
このようにキャストすることによって、アーキテクチャ依存となり、不具合が起きる
確率が0でなくなる。

919 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 17:00:32.01 ID:2x/2jVQO.net]
>>902
[補足]
例外処理はとても複雑なことが行なわれることがある。
関数ポインタに代入する際に関数シグネチャが異なるものをキャストして入れると
どうなるかは処理系依存となる。
関数アドレスを同じビット数の整数型の変数との間で相互にキャストするのは構わない。
関数なのに、異なるシグネチャのものを代入しあうのは問題。

920 名前: mailto:sage [2021/02/25(木) 19:04:36.48 ID:FipxGJhu.net]
>>891
そうですか‥‥
いまどき MFC の教科書が存在するかどうかは疑問ですが、やっぱり MFC に戻るしかないのですか!
でも、あのドキュメント=ビュー構造はいまだによく理解できないですね‥‥

921 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:52:59.02 ID:0YuzuhSG.net]
c/c++で型が厳しい?何言ってんだろ

922 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 22:34:17.62 ID:GHceiqHX.net]
C++は一応明示的に破ろうとしなければ結構ちゃんとチェックしてくれる
C? 知らんな

923 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 23:10:04.64 ID:NZmV0r2o.net]
>>902-903
「引数が一致しない」という素朴な観点でアウトだろうし例外処理関係ないだろ。

924 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 02:06:22.71 ID:uELWbBar.net]
>>907
でも、引数を関数内で参照して無い場合、素朴な呼び出し規約的には問題ない。
例外処理の unwinding は仕様が難しいので良くわからないと言うこと。
実際は大丈夫かも知れない。



925 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:24:52.91 ID:gCkWSKrb.net]
int (int) { return 0; }で埋めて何が嫌なのかが分からないからな
特別な事情があるなら動かすハードとかの仕様調べろ
そんなのないなら素直に安全に書いとけ、でいいじゃん

926 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:52:48.02 ID:M2eccXrm.net]
>>904
一つのデータを複数のウインドウで見るって考え方だよ
テキストエディタでもスプリットバーやマルチビューは普通に使うだろ

927 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:57:36.04 ID:M2eccXrm.net]
>>909と同意見だ
[](int){return 0;}では何がダメなのか
説明がないとこれ以上何とも言い様がない

928 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:52:04.91 ID:X0njcRoR.net]
cは互換型の概念がガバガバだからなあ…
typedefは当然互換だけど、structは中身のpodが同じでも(typedefしなければ!)タグ名で弾けるので、一々structに包めば論理ミスを防ぐこともできなくもない

929 名前:デフォルトの名無しさん [2021/03/01(月) 02:34:24.68 ID:sakgt9rY.net]
規格書を読んでみんなC++覚えてたの?
入門用のドキュメント読んだら規格書読むべきですか?

930 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 06:09:14.80 ID:N/bll+Sf.net]
趣味のC++オタクでいいんならそれでいいと思うよ
C++を実用したいならそういうのはやめとけ、というかまず手を動かせ
その上で疑問が出てきたら調べるのはアリ

931 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:15:36.61 ID:770X86Bb.net]
問題に遭遇したときに疑問として感じ取れる人ならいいんだが、
謎理論を自分の中に構築して邁進してしまうやつも
少なからずいるので安易に手を動かせとは言いにくい。

932 名前:デフォルトの名無しさん [2021/03/01(月) 09:31:54.75 ID:Qi7MAN5S.net]
各コンパイラに固有の実装依存があるから、結局は試すしかない。
PGが規格と違った動きをしているコンパイラをなじったところで、勝利するのはPGではなくコンパイラ。

933 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:41:00.95 ID:770X86Bb.net]
商用コンパイラがその商用コンパイラがサポートしているはずの規格と違う挙動だったらそれは文句言ってもいいだろ。

934 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:44:14.28 ID:kUoELfRz.net]
文句を言うのはいいけど、規格書を盾に納期は延びないのよ。



935 名前:デフォルトの名無しさん [2021/03/01(月) 09:46:40.02 ID:Qi7MAN5S.net]
>>918
それな

936 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:52:30.22 ID:nOTghizW.net]
まあその通りなんだけど、誰かが言ってるからコンパイラ改良されるわけで

937 名前:デフォルトの名無しさん [2021/03/01(月) 09:52:48.41 ID:Qi7MAN5S.net]
PGは、コンパイラが規格準拠してくれる日のために #if #endif で区切ってすぐに切り替えできるようにしておくことしかできない。
dirent周りのカオスを知っているなら、規格準拠をうるさく言う虚しさを理解しているはず。

938 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 10:34:18.93 ID:770X86Bb.net]
商用コンパイラを商売で使うならサポート契約とセットじゃねーの?
使い倒さないと契約料丸損やないけ。

939 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:42:44.99 ID:N/bll+Sf.net]
>>922
いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?

ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ
仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける
皆お前みたいに暇じゃねーんだよ

940 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:52:02.51 ID:f1Pg/hcl.net]
>>923
こういうのって結構な割合で最適化の不具合だったりするよね
特に組み込み系だとしょっちゅうそういうのあるから、該当箇所だけ最適化レベル下げて通したりしてるわ
もちろん不具合の報告もしてるけど修正まで時間かかるからね

941 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:11:13.26 ID:770X86Bb.net]
すぐにとはいかない現実があるのはわかるが、サポート契約の内容を本当に把握して言ってる?

商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。
契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。

VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。

942 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 11:12:35.72 ID:Qi7MAN5S.net]
#if #endif マクロがない言語は無駄にネストするのが欠点だと思う。

943 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:38:15.03 ID:770X86Bb.net]
#if での切り分けだってネストはありうるけど、
それが見た目に分かりづらかったりするし、
いいことばかりじゃないよ。

944 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:12:42.88 ID:CPl5J/qU.net]
一昔前なら effective c++ くらいは読もうってとこだったが、
今はどうだろうな。efective modern c++ でも足りない感じがする。
てかc++やるなら自分であれくらいのポイント抑えるくらいの準備が必要かもしれんという地獄。



945 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:23:24.82 ID:Qi7MAN5S.net]
スマートポインタが標準規格に採用されたC++11とそれ以前では、作法が随分違ってくる気がするよ。

946 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 17:34:12.59 ID:oQ7wqd0O.net]
>>917
「文句」みたいな感情的なものじゃなく
ドライにバグレポだ
再現コードだけじゃなく回避方法もつけて

947 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 20:24:36.67 ID:YhH9VVk1.net]
>>923
> いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?

やめたれw

948 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:14:48.91 ID:Dkl+jirL.net]
>>925
> 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
無いかも知れんが、「なんかおかしいんです~」でバグの特定がめっちゃ困難なことはプログラマーは身を持って知ってるから
そもそもバグの解決が遠のいたら苦しむのは自分だし

949 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:56:02.87 ID:N/bll+Sf.net]
>>931
いや、純粋な言語仕様の話なら別に偉そうでもいいのよ正しい事書いてくれてるなら

950 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 23:56:40.27 ID:770X86Bb.net]
>>932
雑な報告でいいというわけではないが、
サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、
報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。

C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが
出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで
見たことがあって商用処理系ってすげーなーと思ってたんだが、
そういう対応のほうが例外的に良すぎるだけなんかね?

951 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:07:05.02 ID:n7F7EI9c.net]
>>934
そういう対応はマイナーメーカーの方がいいことが多いよ
MSの対応が悪いとは言わないけどユーザーがアホほど多いから処理系のバグにぶち当たる可能性も低いし

952 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:37:21.45 ID:wbC9damv.net]
スケジュールきついだけかもよ
バグがあるのわかってたけど数日かかりそうだから放置
バグ報告が出たから優先度上げて修正

953 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 02:03:18.16 ID:+qoPTldB.net]
そもそもユーザー数がアホみたいに多くてあらゆる層で利用されてるようなコンパイラだと
バグ報告あがってきてもまずそれほんとにバグなの??
ていうかまたコイツのリポートか!!!もしかしてただのいやがらせとかじゃないの??とか
色々まず疑ってかからないケースも半端なく多いだろうしな

954 名前:デフォルトの名無しさん [2021/03/02(火) 05:18:47.46 ID:+XzLrHKh.net]
>>923
あわしろ氏は、はちみつのことを褒めてたけどな。
見どころがあるから弟子にしてやっても良いと。
月一万で弟子にしてやるぞ。



955 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 05:46:06.48 ID:eqvY2Z+d.net]
>>934
サポート契約はどんなに使い倒しても契約料が戻ってくるわけじゃない
自分が頑張ってインカムを増やすのが「元を取る」ということだ

956 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:15:09.36 ID:1/ifTUd4.net]

957 名前:rel="noopener noreferrer" target="_blank" class="reply_link">>>934
VSのサブスク(旧MSDN)入ってる企業なら優先的に対応してくれるかもしれんけどね
ただVS2019の更新は数日とかのスパンでは来てないやろ(しかもベータを経てからじゃなかったか?
Xcodeのclangなんかはもっと遅い
そのLispWorksとかいうのは例外的だろうね

で、みんな回避方法くらいは自分で見つけるし直るまでの間何もしないわけにはいかんからな
[]
[ここ壊れてます]

958 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:43:01.65 ID:auUulvn4.net]
コンパイラを作っている人は他の誰よりも標準規格に詳しい。
コンパイラが規格準拠できないのはなんらかの事情がある。釈迦に説法はカッコ悪い。

959 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 11:52:24.56 ID:K6P+Ktrz.net]
cl書くけどlispworksは資料もすごいのでお世話になる、中の人がlisp界隈で愛称で呼ばれるくらい精力的なんで、ただそうなだけだと思う
まあフリーな処理系使うけどな
しかしニッチ過ぎるlispのどこで儲けてるのやら全く謎

960 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:42:51.15 ID:NRNfCe84.net]
言語としての機能はともかく、lispはマスコットがきもすぎ

961 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:45:21.36 ID:NT1aj9pH.net]
言語を作った人の本を読むのが一番良い

962 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:50:53.20 ID:NT1aj9pH.net]
ていうか言語を作った人の本に載っているサンプルコードが
言語の思想を一番正確に表現しているはず……

963 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 04:56:27.42 ID:W4jJ9FhP.net]
禿の思想はC++03までだろ
頑なにラムダ式とrange-based-for-statementを拒み続けたところまで
4th editionでasyncを持ち上げてたけどその後の展開がアレだし

964 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 06:51:09.01 ID:gVMBPcTA.net]
>>943
googleさんのImage for ...サジェストに
caution: made with alien technologyって標語の例の生物のロゴが出てきやがるのは風評被害
rplacd、dpb、fmakunboundとかほぼほぼ英語だし明らかにエイリアン語ではない
cも大概だしな



965 名前:はちみつ餃子 mailto:sage [2021/03/03(水) 14:59:21.41 ID:ymUPAFSA.net]
>>943
C++ も似たようなもんだろ
https://www.pixiv.net/artworks/31803602

966 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 16:32:38.43 ID:wyPUKIrf.net]
うわ下品な絵

967 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 19:08:40.13 ID:7D0nPsrG.net]
>>948
これは・・意外と嫌いではない・・w

968 名前:デフォルトの名無しさん [2021/03/03(水) 19:15:48.54 ID:zRjA/+hm.net]
オライリー表紙絵みたいな動物の絵じゃないと、しっくりこない。

969 名前:デフォルトの名無しさん [2021/03/03(水) 22:54:00.65 ID:on2XNxxF.net]
オイリー禿山。

970 名前:デフォルトの名無しさん [2021/03/04(木) 11:11:37.69 ID:J6mhpq5t.net]
禿と禿(かむろ)の違いが判らない

971 名前:デフォルトの名無しさん [2021/03/04(木) 13:03:17.03 ID:K63vSywh.net]
カムロは半グレ

972 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 13:36:37.45 ID:Ep7EXP13.net]
c++は仕事で書いてない人ほど好きな言語

973 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 14:22:00.04 ID:qn7RQ+4J.net]
と、仕事で書いてないやつが言う

974 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:32:17.13 ID:9GqbczPP.net]
二人以上でやるとOOPの思想的違いがぶつかって最悪破綻するんだよな



975 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:33:34.57 ID:9GqbczPP.net]
で、仕事でやるときは、最下層にレベル合わせないとモノが出来上がらないしね

976 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 17:35:44.00 ID:Ep7EXP13.net]
自分一人ならさぞかしすごいソフトウェアが書けると思ってるんですね。すごいですね。

977 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 19:51:50.17 ID:cqTSJRKn.net]
>>955
それあると思う
アマチュアにこそ好かれる言語だと思う(;^ω^)

978 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:33:50.17 ID:Xyn3qjeu.net]
constexpr制限きつすぎ

979 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:47:45.23 ID:FQXwH3J2.net]
C++11の頃ならともかく今そんなにきついか?

980 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 05:58:33.51 ID:BcBZQBoi.net]
C++20、情報過多でしんどい

981 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 06:14:45.51 ID:ddot6YlQ.net]
std::variant を使い始めたのですが、例えば variant の中身が4種類あって、そのうちの
2種類とか3種類だけに対し共通なコードを実行したい、ときにはどんな書き方がありますかね?
全部に同じコードを適用するなら std::visit() でいいわけですが。

982 名前:デフォルトの名無しさん [2021/03/06(土) 13:33:27.36 ID:bGzUu7RI.net]
apply

983 名前:デフォルトの名無しさん mailto:sage [2021/03/06(土) 20:35:43.51 ID:aLQdimbx.net]
>>964
共通処理を別の関数にまとめたうえで、visitする時に各型のオーバーロードでそれを呼び出す
visit時にジェネリックラムダを使って内部でif constexprで分岐
visit時にオーバーロードされた関数オブジェクトを用いて、共通処理が必要な型について呼び出されるところをテンプレートにして、他は型を指定しておく
visit時にオーバーロードされた関数オブジェクトを用いて、コンセプトで分岐
.index()とif文で書き分ける

984 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:48:37.36 ID:B2szmBNH.net]
>>962
msvcのバージョン古くて。
c++14に対応してない。c++11でやってるイメージ。再帰でどんどんソースが汚れる。



985 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 13:31:16.40 ID:b6BdhXEV.net]
int getX() const { return mX; }
みたいな関数があるクラスのメンバ関数内でmXを参照するときに
mX と getX() のどっち使うのが一般的な書き方?

986 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:04:43.65 ID:8PvVb8hX.net]
>>968
確かにこれはいつも悩むなー
きっとアクセサ使うべきなんだろうけどね
頻繁にアクセスするならローカル変数に代入した方が早くなったりするし、一般的にクラス宣言に書いてるのもはインライン展開されてコスト的には変わらないだろうしね

むしろ他の言語のときにインライン展開なんてされないからめちゃくちゃ悩む

987 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:10:23.61 ID:mzPrKkeu.net]
プロパティがないからな

988 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:16:37.41 ID:ZK+TZHvn.net]
なんでもかんでもgetterとかはJAVAから来たのかとか思ってしまう
取得時に演算しないならそもそもgetterなんか作らない方が分かりやすいと思うのだが

989 名前:デフォルトの名無しさん [2021/03/10(水) 15:36:26.11 ID:pTnyTINd.net]
>>971
C#みたいなのはそれはそれでわかりにくいから、getterも関数がいい。

990 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:47:37.68 ID:qvIOwUBa.net]
無理にgetter作れってのはアホだなと思うけど、まあgetterくらいならそこまで問題になることもないかなとは思う。
やたらめったらsetter作ってたら死ねとは思うが。

991 名前:デフォルトの名無しさん [2021/03/10(水) 15:50:25.97 ID:pTnyTINd.net]
const 属性をうまく使えば、getterを減らしても安全にコーディングできる。

992 名前:デフォルトの名無しさん [2021/03/10(水) 15:55:29.61 ID:SA6nop04.net]
オブジェクト指向に侵されてるとプロパティが欲しくなるだろう。

しかし、本物のC++は知っている。

それは間違いだと。

993 名前:デフォルトの名無しさん [2021/03/10(水) 19:38:24.39 ID:pTnyTINd.net]
クラス外からは以下のようにconst 属性をつけてアクセスさせれば心持ち安全になる。
const MyClass& getInstance() const { return *this; }

994 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 19:39:09.45 ID:pDjVp4Qi.net]
>>968
フックを残すかどうかだな
abortとterminateみたいに



995 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 20:37:43.62 ID:wDDQFNF0.net]
JavaBeans方式のプロパティはリフレクションあってこそのものなのにC++で真似してもなー。

996 名前:デフォルトの名無しさん [2021/03/10(水) 21:11:42.58 ID:98wPPrPT.net]
JavaFXのプロパティは観測可能になってたすごかった
データバインディングとかリアクティブとかプログラムの書き方もずいぶん変わったよね

997 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 01:07:59.93 ID:6JW0gImZ.net]
そうだね流石Oracleだね

998 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 00:57:21.49 ID:9IOLdfat.net]
https://ideone.com/0FptIo
だれか、剰余の符号関係を教えてくれ。

999 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 01:32:57.35 ID:I1KnPozY.net]
たぶんCから変わってないよな?
(a/b) * b + a%b == a
以上に説明できることはないと思うけど
他になにかあるの?

1000 名前:はちみつ餃子 mailto:sage [2021/03/12(金) 03:04:36.84 ID:ByeOJ4Y7.net]
符号の向きは C++11 から仕様に入った。
(それはでは処理系定義)
C では C99 から。

1001 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:30:25.58 ID:GKbHXc3G.net]
プロパティーは継承できたりインターフェースとして定めたりできるのが強み
だがそれしか強みが無i

しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる
というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん

1002 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:36:14.31 ID:GKbHXc3G.net]
P=Q・X+R (0≦R<Q)
ので除数が負の%とか定義不能
被除数が負の場合はしらそん
多分Rが非負でなければならないから多分XはPより負の側に振れねばならないのではないか

1003 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 14:00:09.40 ID:9IOLdfat.net]
未定義っぽいですね。ありがとう。

1004 名前:デフォルトの名無しさん [2021/03/12(金) 16:14:00.58 ID:EbD8nxkK.net]
C/C++に限らず界隈では「負数の剰余をとるべからず」という伝承がある



1005 名前: mailto:sage [2021/03/12(金) 20:35:32.66 ID:IXuMqCK3.net]
>>985
剰余の定義は、その定義だけではないですね
「最小正剰余」のほかには「絶対的最小剰余」もあります
https://ja.wikisource.org/wiki/%E5%88%9D%E7%AD%89%E6%95%B4%E6%95%B0%E8%AB%96%E8%AC%9B%E7%BE%A9/%E7%AC%AC1%E7%AB%A0/%E6%95%B4%E6%95%B0%E3%81%AE%E6%95%B4%E9%99%A4

自分で適当な剰余を定義したっていいのですよ

1006 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 14:10:18.80 ID:9o031KiD.net]
0へ丸めるtruncate算だったかと
mod算するときに結構困るのでユークリッド算関数は常にヘッダに入れてる
a % 2 == 1 // -1かもしれない
まあ偶奇判定くらいなら!=0で取り繕えるけど
ネットで見かける拡張ユークリッドのトイプログラムは大体間違ってるね
負の除数を想定してないgcdならそれでいいけど、ベズー係数求める時に負の被除数を扱えないと一般解の公式で他の解出してお茶は濁せるけど
有限体やら他の体とテンプレート共有できない

1007 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 23:25:02.49 ID:H7rJK4fS.net]
ttp://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf

1008 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 08:32:15.77 ID:j6rur0Vp.net]
静的ライブラリを作るときに-fPICを指定する必要はないよね?

1009 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 09:41:25.38 ID:mzxuOn07.net]
OSによるのでは

1010 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 23:28:52.74 ID:iFQHROzx.net]
PICマイコン用のバイナリが吐かれる

1011 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 07:52:17.23 ID:PNXF+EC1.net]
struct a{};
struct b:private a{};
b c;
(a*)&c; //ok

この下痢糞仕様は何?
こう決まった理由が知りたい

1012 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 08:46:44.63 ID:QJMmjFss.net]
>>994
C形式のキャストを使ってるからではなくて?
どんなポインタにもキャストできると思うけど

1013 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:11:00.00 ID:PNXF+EC1.net]
reinterpret_castとちゃうで

1014 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:17:53.26 ID:R+oM8cup.net]
たとえ(int*)&c;でも通るでしょ



1015 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:40:19.90 ID:PNXF+EC1.net]
仮想継承にするとダウンキャストはできなくなるんで
型を無視しているのでもなさそう

1016 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:03:59.75 ID:FhOgWspo.net]
ポインタは任意のポインタに変換出来る
未定義動作になる可能性があるのはデリファレンスするコードを書いた場合

1017 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:41:19.80 ID:uPqg/PBu.net]
64bitアプリで32bit整数値をvoid*にキャストしようとするとエラーになる場合があるね。
それを親切と感じることが出来れば玄人。

1018 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 74日 16時間 47分 20秒

1019 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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