C++相談室 part166 (754レス)
1-

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1: sage (ワッチョイ 8732-NXaD) 04/26(土)10:34 ID:pbPDl6lv0(1/2) AAS
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part165
省1
673: (ワッチョイ 0679-P6+q) 09/26(金)12:09 ID:uQKo8FSG0(2/7) AAS
>>672
>のが問題なのであって
違う。ETの場合、関数(演算子オーバーロード含む)が返すのは、式の構造を表すオブジェクトなのでそれをautoで受けると式の展開が行われず、計算処理の無いコードになってしまう
それを逆手に取ってauto経由で展開のタイミング遅らせることもできるけどね

あとETの利点はムーブどうこうで解決できる問題だけではないし、
誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの?

で、はちみつお前いつも「知ったかぶりしていい加減なことを言う奴」に怒ってる割に、自分も同じ事してるよな
674: (ワッチョイ 0679-P6+q) 09/26(金)12:11 ID:uQKo8FSG0(3/7) AAS
あと
>「auto なんか使っとるからじゃ!」
一言も言ってないんだが。流れ読み直しておいで
675
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f32-BMc3) 09/26(金)12:54 ID:E9e6Z1Un0(2/4) AAS
>>672
> autoで受けると式の展開が行われず、計算処理の無いコードになってしまう

書いてなかったが評価タイミングは適当な関数で明示的にする前提を置いてた。
未定義を踏むのは他の何と比べても駄目だ。単に思ってた結果と違ったなんてのは重要じゃない。

> 誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの?

日常的には使わないケースだからこそだ。
それが auto の問題点のように挙げられてただろ?
省1
676: (ササクッテロラ Sp23-P6+q) 09/26(金)13:15 ID:4po4sxfpp(1/6) AAS
>>657-658
677
(1): (ササクッテロラ Sp23-P6+q) 09/26(金)13:19 ID:4po4sxfpp(2/6) AAS
>>675
あと、ETで式の評価が発生するのは関数の呼び出し時ではない。どうでもいいけど
あと俺が作ったのは4次元まで(行列なら4x4まで。ゲーム用なので)だからヒープ使わんのでそもそもムーブどうこうは関係無いし、勝手によそのライブラリの未定義の話を持ってこられても困る
678: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f32-BMc3) 09/26(金)13:57 ID:E9e6Z1Un0(3/4) AAS
>>677
eigen は例として話題に出したつもりだったが余計だったな。
端的に主旨を言えば expression template の原理的には auto で受けれるように作ることは可能、かつその方が親切な作りだろうという話をしてる。

お前がどんな設計をしたのかなんてそれこそ俺には知ったことじゃないし、知りようもない。
お前のライブラリで auto で受けれないのはお前がそう設計しただけの話なので、 それを根拠に auto がどうこう言ってもなんの足しにもならん。
679
(1): (ササクッテロラ Sp23-P6+q) 09/26(金)14:04 ID:4po4sxfpp(3/6) AAS
>>657-658
ETの話はここで出した。

で、俺のautoの使い方に関する意見は>>656

自分が何をやってるか良く考えてからレス書き直せ
680
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f32-BMc3) 09/26(金)14:08 ID:E9e6Z1Un0(4/4) AAS
>>679
悪い設計のせいで利用者に不自然な書き方を強いるライブラリを作ったという話だということは理解してる。
681
(1): (ササクッテロラ Sp23-P6+q) 09/26(金)14:13 ID:4po4sxfpp(4/6) AAS
あといちいち知ったかぶってるバカに教えてやるのも腹が立つが、普通数値演算でET使うときは代入演算子やコンストラクタに式を渡した場所で初めて式を展開するんだよ
(autoでわざと評価を遅延させることも可能だと書いただろアホ)
Eigenでも多分そう
もちろんboost::spiritとかの構文解析ならパース処理の関数に渡すまで展開しないだろうが
682: (ササクッテロラ Sp23-P6+q) 09/26(金)14:14 ID:4po4sxfpp(5/6) AAS
>>680
不自然なのはお前の、「スキルに見合わない自尊心」だと思うぞ
683: (ササクッテロラ Sp23-P6+q) 09/26(金)14:24 ID:4po4sxfpp(6/6) AAS
バカが屁理屈書いてきそうだから再三言うが、>>658>>657を叩くために出した問いに過ぎない
「意図しないコードになる」という話

これだからお前には絡みたくないんだよマジ鬱陶しい
684
(1): 09/26(金)17:03 ID:iKKvsVQ80(1) AAS
お前ってのははちみつのこと言ってるのかね?
自分から絡んどいて何言ってんだろうコイツとしか思えんけど
685
(1): (ワッチョイ 0679-P6+q) 09/26(金)17:53 ID:uQKo8FSG0(4/7) AAS
>>684
で、>>666の導出出来ない例って何?www
686: (ワッチョイ 467f-RvFB) 09/26(金)19:18 ID:+hZbpaFa0(1/2) AAS
>>685
ラムダの型導出できないだろ?
なんでこんなのも知らんのにえらそうにしてんの?
あと

外部リンク:wandbox.org

とかな
この例でfooでもif constexprを使えばautoはなくせるがそんなことやって可読性とかほざけない
省2
687
(1): (ワッチョイ 0679-P6+q) 09/26(金)19:32 ID:uQKo8FSG0(5/7) AAS
屁理屈にも程がある
導出出来なきゃどうやって実体化するんだよ、Tしかテンプレートパラメータが無い状況でT以外に依存するものがあるのか?
まさか結果がTに依存するテンプレートになったら「導出出来てない」とかほざくの?
Tに依存するコンテナのイテレータと何も変わらんよそれ
688: (ワッチョイ 0679-P6+q) 09/26(金)20:12 ID:uQKo8FSG0(6/7) AAS
てかその例でauto使わずに戻り値格納するのにif constexpr使うしかないと思ってるとかどんだけ経験不足なんだ・・・(はっきり処理分けする必要がある場合を除く)
そんなクソみたいな例ならさすがにdecltypeかauto使いたくなるが(そもそも使うなと言ってないんだが)、conditionalも知らんのかお前は
必死に探してきてご苦労さん
689: (ワッチョイ 7307-RsoB) 09/26(金)20:41 ID:aJA0eUoF0(2/2) AAS
あの…そろそろ言っとくが

おもろいこと書いたヤツが優勝な?
2ちゃん5ちゃんの原則だぞ
690: (ワッチョイ 0679-P6+q) 09/26(金)20:46 ID:uQKo8FSG0(7/7) AAS
>>665はおもろいと自分で思ってんの?w
691: (ワッチョイ 467f-RvFB) 09/26(金)20:59 ID:+hZbpaFa0(2/2) AAS
>>687
おじいちゃん、ラムダの例で詰んでんのわかる?
わかんない?
わかんないかぁ
692: (ワッチョイ 8a02-CSnM) 09/27(土)00:06 ID:ov4hhnsF0(1) AAS
やっぱautoはゆるいね
C#とかPython的な感じ…
693: (ワッチョイ 7307-RsoB) 09/27(土)05:08 ID:rNLW6nkI0(1) AAS
C++は自由なんだよ

変な風にも使えるし、傍で見てたらめちゃくちゃにもなる
694: (ワッチョイ 1ed6-X2Ee) 09/27(土)05:36 ID:p3kzti810(1) AAS
自分が使った方がいいと思った時は使う。
しかないよ。後は規約や上司に従うぐらいか。
695: (ワッチョイ 7f7c-3pIy) 09/27(土)11:22 ID:0x5FUGdK0(1) AAS
久々にC++スレらしくなってておっちゃん楽しいよ
696
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f32-VPhE) 09/27(土)17:37 ID:nSvwU9re0(1/2) AAS
>>681
コンストラクタや代入演算子で実際の計算を起動する方式も支持があるのは知ってるよ。
だからその代表例として有名どころの Eigen を話題に出したのだし、そこに齟齬はない。
その上で唯一の方式ではないし悪い設計だと言ってる。

私に反論するならどうしてそんな方式を取るのか利点 (悪い設計ではない理由) を説明すべきだった。
「数値計算で expression template を使うときは普通」なんて情報量ゼロのことを書かれても何の意味も感じられない。

コンストラクタや代入演算子をトリガーにするのは expression template を最適化として使う考え方だ。
省10
697: (ワッチョイ 0679-P6+q) 09/27(土)17:54 ID:iipvXy1W0(1) AAS
よほど悔しかったんか知らんが、恥の上塗りやめたら?
autoをC++に取り込んだ人達は、お前が調子に乗るために提案したわけでも採用したわけでもなかろうよ
698: (アウアウウー Sacf-kv3/) 09/27(土)19:49 ID:k7oMySGea(1) AAS
>>696
八光さんに同意だけど
それだとC++が設計ミスと言う結論になりかねない
699: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f32-BMc3) 09/27(土)20:00 ID:nSvwU9re0(2/2) AAS
C++ が設計ミスだらけなのは今更な話だろ。
700: 580 (ワッチョイ f5a1-hkyQ) 09/28(日)18:27 ID:MSQtxm6D0(1) AAS
解決しますた!
701: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2d32-jLB2) 09/28(日)19:20 ID:pjQge+jC0(1) AAS
そうか。
702: (ワッチョイ 4366-WwN1) 09/29(月)19:03 ID:ALxfRd8b0(1/2) AAS
VSCode(WSL)のclang-tidyで質問です
関数にconst付けるのを警告する「readability-make-member-function-const」って奴ですがDoSave()関数にも警告が出ます
可能ならgetterのみに付けたいのですが皆さんこれはどうされてますか?
無効にしてるか、無視してるか、const付けてるか、その他何かやってますか?

C++の環境構築は初めてなので助言をいただけるとありがたいです
よろしくお願いします
703: (ワッチョイ 2d7c-2Udd) 09/29(月)19:56 ID:BDszbKFL0(1) AAS
こういうこと?
要はconst性を「セーブさせたくない」という符丁に使いたいのかな

class Hoge; // DoSave()持ち

void foo(Hoge& h1, const Hoge& ch2)
{
  h1.DoSave(); //ゆるす
  ch2.DoSave(); //ゆるさない
省2
704: (ワッチョイ adf0-pGVw) 09/29(月)20:49 ID:Qgirjd9Z0(1) AAS
const_cast<Hoge*>(&ch2)->DoSave();
705
(3): (ワッチョイ 4376-Duv+) 09/29(月)22:22 ID:ALxfRd8b0(2/2) AAS
>> 703-704
すみませんサンプルを載せるべきでした

ソース:
double Point::X(){return x;}
void Point::X(double value){ x=value;}
ヘッダ:
static Point {
省18
706
(1): (ワッチョイ 1b39-ZlhK) 09/29(月)23:01 ID:jk3QzjEU0(1) AAS
NOLINT
707
(1): 09/29(月)23:04 ID:rfIMSjI90(1) AAS
>>705
その場合const付けたほうが良い理由は「変更されないことを明示」することより
constのインスタンスに対してその関数を呼べなくなることでは?
↓はエラーか警告(どっちかは忘れた)になると思う(constオブジェクトの非constメンバ関数は呼び出せない)

void SaveData(const Sample sample)
{
sample.DoSave();
省3
708
(1): (ワッチョイ adf0-pGVw) 09/30(火)01:33 ID:Xmjd+d/v0(1) AAS
処理だからconst付けないんじゃなくて、そのメンバ関数がPointクラスの中身を書き変えないことを保証するためにメンバ関数の後ろにconstは付ける
つまり、Save処理はPointクラスを特段変更するメソッドではないだろ?
だったらconstは付けるべき
709
(1): (ワッチョイ 2d7c-2Udd) 09/30(火)07:07 ID:NaKN2pJV0(1) AAS
>>705
つまり、constを本来の意味(中身を変更するかどうか)ではなく「getterであるかどうか」を示すラベルとして使いたいってことでしょ?
で、何を持って「getterであるかどうか」はあなたの頭の中にしかない定義であって、そのlintはもちろんコンパイラもエディタも世のライブラリも知ったことではない
それらをオレオレconstラベルに適合させるためにどうしたらいいか?というのがあなたの問うていることだ
やっぱりどうしてそんなことがしたいのか全く理解できない
710
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2d32-jLB2) 09/30(火)08:58 ID:0fqHawiZ0(1/3) AAS
>>705
オブジェクトがなんらかのストレージを抽象化したものであると考えたらそのオブジェクトが const であるときはセーブ機能を使えないようにしたいというのはわからんでもない。
実際の管理は他の場所でやっていて窓口に過ぎないならメンバ関数に const を付加可能 (だがそうしたくない) なこともあるだろう。

それが良い設計かどうかは脇に置いてそうすることに決めたときに clang-tidy の警告はどうすればいいのかということなら、
例外的な状況なので例外的なものとして無視してもらうしか仕方ないんじゃないか。
NOLINT コメントを書いておくと clang-tidy はその箇所については警告を抑制してくれるよ。
711: (スッップ Sd43-WwN1) 09/30(火)10:38 ID:Dzyyn8xKd(1) AAS
>>706-710
御返事がおそくなりすみません
ご意見ありがとうございます
自分の理解不足と設計思想が間違ってるまたはずれてるんだと理解しました

・「readability-make-member-function-const」の指示にしたがってconstを付けるのが良い
・更に言うと-fixオプションで自動付与するレベルの内容
・だけどNOLINTで無視もできるよ(無視してるとは言ってない)
省3
712
(1): (ワッチョイ 2596-TDpG) 09/30(火)21:38 ID:bXNPhBlr0(1/2) AAS
VC++20のテンプレート制約で不可思議なことが起きるのだけど、以下の二つは同じ意味だよね?
1だと目的通りTParentに該当static関数<T>があれば適用、なければスルーという挙動になるのだけど、
2だと無くても適用されちゃって他を探しに行かずにオーバーロード未解決に陥るんだけどどういうことだろう?

1
template<typename T, typename TParent> concept HasSizeGetter = requires { (size_t)TParent::template get_size<T>(); };
template<HasSizeGetter<TParent> T> static consteval size_t get_require_space() { return TParent::get_size<T>(); }

2
省1
713: (ワッチョイ 2596-TDpG) 09/30(火)21:40 ID:bXNPhBlr0(2/2) AAS
ちょっと書き間違えてたけど1はget_require_spaceじゃなくてちゃんと2と同じくget_sizeね
714
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2d32-jLB2) 09/30(火)23:39 ID:0fqHawiZ0(2/3) AAS
>>712
オーバーロード未解決という形で現れるのはよくわからないけど
この場合はその関数テンプレートを使わなくても (呼び出さなくても) エラーになるのが正しい挙動だと思う。

get_size は依存名ではないのでテンプレートの定義時 (テンプレート実引数を当てはめる前) に名前のルックアップが試みられて失敗する。
requires 節はテンプレート引数の妥当性を検証する仕組みなのでテンプレート引数をあてはめなくても式が不成立になるようなのはエラー。

というのが私の理解なんだけどあんまり自信はない……。
715
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2d32-jLB2) 09/30(火)23:47 ID:0fqHawiZ0(3/3) AAS
>>714
これは TParent::get_size が存在しない場合の話で、
TParent::get_size が存在するけど TParent::get_size<T> の展開に失敗する場合はちゃんと次の候補が選ばれるはず。
(手元に MSVC がないんだけどオンラインコンパイラで一応の動作確認はした。)
716
(1): (ワッチョイ 2596-TDpG) 10/01(水)06:54 ID:O1Ml42XO0(1) AAS
>>715
そう、2の場合でもTParent::get_sizeはあるけど<T>とはマッチしない場合にはちゃんと1と同じ挙動になるんだよね
TParentにstaticなget_sizeが全くない場合だと1と2で挙動が変わってしまう
でも2って1をインラインに直接書いたものであって同じ意味だよね?
だからrequiresがどういう意味を持つかとか以前に挙動変わってくる時点で不可思議なんだよね
717: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2d32-I4u/) 10/01(水)07:43 ID:XKqCU3PC0(1) AAS
>>716
1 の場合は get_size は依存名だ。
そこで解釈が違うよ。
718
(1): (ワッチョイ faa6-/eJP) 10/22(水)12:58 ID:6nuMV8zc0(1) AAS
C++26から入るらしい^^と[::]という二つの演算子はどういう用途に使うものなのでしょうか?
719: はちみつ餃子◆8X2XSCHEME (ワッチョイ 4132-ctWl) 10/22(水)13:31 ID:/iXiQCcE0(1) AAS
>>718
リフレクションで検索したら色々な例がみつかるよ。
構文要素を値として取り扱う、本物のマクロだ。
720: (アウアウウー Sa09-u8G0) 10/22(水)19:35 ID:t2Chdy11a(1) AAS
^^
↑ちょっと顔にみえる
721: (ワッチョイ aa71-zeRK) 10/22(水)21:43 ID:q+0a8lK20(1) AAS
^^;
722: (アウアウウー Sa09-HZvd) 10/22(水)21:55 ID:tW3LNod+a(1) AAS
^^;ゞ
723: (ワッチョイ 417c-ib/k) 10/22(水)22:05 ID:b6F/3uj70(1) AAS
^^::←グローバル名前空間のリフレクション値
724: (ワッチョイ d6d6-9FkA) 10/23(木)05:29 ID:HOQCmR4+0(1) AAS
v^^
725: (ワッチョイ c1ef-6mJJ) 10/23(木)21:41 ID:FPW1mHao0(1) AAS
山崎渉
726: (アウアウウー Sa09-6N1s) 10/24(金)14:17 ID:nAYKU6CIa(1) AAS
GGは
へへ
ミミ
727: (JP 0Hab-oW0m) 10/29(水)17:48 ID:KY7jGttbH(1) AAS
Y(^_^)Y なんすかこれ

口が違う。覚えてる人修正して
728: (アウアウウー Sae3-N4yN) 11/11(火)14:16 ID:crDtfQHZa(1) AAS
バルタン星人のひと元気かな
729
(1): (ブーイモ MM9f-lDbn) 11/13(木)14:20 ID:jo2+4JNJM(1) AAS
多分基本的な質問ですまんけど、参照型のメンバー持ったクラスをmove対応させるのってどうやんのが定石?
ポインタにするしかない?
730
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f32-jcp5) 11/13(木)14:53 ID:bJCWdXAy0(1/2) AAS
>>729
その参照が差す先のオブジェクトの所有権 (最終的に後始末する責任) を持っている状況ということ?
ポインタを交換する手法がよく使われるのはヌルで無効を表現してるだけなので所有権を持ってるかどうかわかるフラグを立てれるならなんでもいいよ。
型システム的に表現するなら optional と reference_wrapper を組み合わせるのがよいかな。(optional は参照を直接には保持できない。)
731: (ワッチョイ ffd6-UeF3) 11/13(木)22:00 ID:oKSfQs8Q0(1) AAS
いきなりわからんorz
732
(1): (ブーイモ MMd3-lDbn) 11/13(木)22:38 ID:PBCTneT3M(1) AAS
>>730
なるほどサンキュー
でもoptionは省きたいところ
moveしたあとは使わない前提でこれはUBになる?

class A {
 std::reference_wrapper<const std::string> m_s;
public:
省3
733: (ワッチョイ 9f7c-18cq) 11/13(木)22:48 ID:qvmNyT2p0(1/4) AAS
・T*(ナマポ)にする
Pros: 一番素直、ムーブ後状態をぬるぽで自然に表現できる。
Cons: メンバ使ってるとこで*付けたり.を->に書き換えたりが必要。deleteとか加減算とか好き勝手できちゃう。今どきナマポとかダサい。
・std::unique_ptr<T>やstd::shared_ptr<T>にする
Cons: 多分セマンティクス違う(もともとはヨソのオブジェクト覗いてるだけでしょ?)
・std::referrence_wrapper<T>にする
Pros: 参照の置き換えという意味でこれも素直。
省8
734: (ワッチョイ 1f01-/Hnv) 11/13(木)23:01 ID:/tchf03X0(1/4) AAS
unique_ptrと同様のもの(unique_ref)を作ればいいんじゃねえのって話だろ
ただしptrはnullptrで無効を表現してるから
代わりにフラグを用意する
class unique_ref{
T& ref;//参照
bool isValid;//無効判定
//コンストラクタ
省9
735: (ワッチョイ 1fa6-0yYo) 11/13(木)23:06 ID:pKRh1I850(1) AAS
参照なんて引数と演算子オーバーロード以外で使ってもいいこと無くね?
736
(1): (ワッチョイ 9f7c-18cq) 11/13(木)23:07 ID:qvmNyT2p0(2/4) AAS
そもそも所有権自分で保持してるメンバがもともとT&ってことはないだろ
どっか遠くのオブジェクトを見えるようにしてるだけでしょ?
(それはそれで設計的に焦げ臭いけど置いとく)
737: (ワッチョイ 1f01-/Hnv) 11/13(木)23:07 ID:/tchf03X0(2/4) AAS
もしくはunique_ptrをunique_refでラップしてしまうのが楽か
738
(1): (ワッチョイ 1f01-/Hnv) 11/13(木)23:10 ID:/tchf03X0(3/4) AAS
>>736
たまにある
外部リソース(たとえばファイルハンドル)を一時的にクラスに保持して使いやすくするとか
なんにせよ寿命を明示的に管理しておかないと後でやばいことになる
739
(1): (ワッチョイ 9f7c-18cq) 11/13(木)23:14 ID:qvmNyT2p0(3/4) AAS
>>738
ファイルハンドルだとして、それを管理するクラスがファイルハンドルの値自体を持たずにヨソに置いて参照するのはなぜ?
やっぱり意味がわからない
740
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f32-jcp5) 11/13(木)23:20 ID:bJCWdXAy0(2/2) AAS
>>732
UB になる。
ポインタと違って参照自体は無効を表現できないのが C++ の基本ルールであり、 reference_wrapper でもそれは同じ。
それでもあえてやるなら適当にダミーのオブジェクトを作っておいてそれを参照していたら無効ということにするというようなことをできなくはないが……それはそれでちょっと不恰好だよね。
741
(1): (ワッチョイ 1f01-/Hnv) 11/13(木)23:22 ID:/tchf03X0(4/4) AAS
>>739
クラス内部でちゃんと管理するのがいいんだけど時には関数内クラスを定義してちょっとしたことを行うこともある(かも)
その時には所有権を一時的にでも委譲しなきゃならなくなる
742: (ワッチョイ 9f7c-18cq) 11/13(木)23:30 ID:qvmNyT2p0(4/4) AAS
>>741
ハンドルは外部で持ったままで、その関数内クラスにはハンドルの参照を渡す(関数内クラスの参照メンバを外部のハンドルで初期化する)って言ってる?それ委譲とは言わないよ
委譲したからにはそのリソースはその関数内クラスの消滅とともに消えないといけないけど、そうなったら外部で持ってたハンドルの実体はどうなるの?
どんなケースを想定してるのか全然わかんない
743
(2): (ブーイモ MM0f-lDbn) 11/14(金)12:19 ID:YW3kWFexM(1) AAS
>>740
までもnull objectはよく使ってるからそれにするわ
個人的にはすっきり
でもc++の参照っていらん子やん?って気がしてならない

class A {
 static constexpr std::string s_empty_str{""};
 std::reference_wrapper<const std::string> m_s;
省4
744
(1): (ワッチョイ ff36-TpjX) 11/14(金)17:06 ID:sw2A38eb0(1) AAS
>>743
型無しのnullpointerが型システム(機能保証)を破壊しているから、型を強要する参照は必要。
745: (ブーイモ MM0f-lDbn) 11/14(金)17:48 ID:d/VpWy+aM(1) AAS
>>744
古くね?
そういうのはoptional使えってのが最近のやり方でしょ?
746: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f32-jcp5) 11/14(金)19:18 ID:YeCIJNF30(1) AAS
>>743
参照は色々な場面で有用ではあるが、 D&E によれば最初の動機は演算子オーバーロードだと書かれている。
オブジェクトをコピーする必要がない (値をコピーせずに場所を渡せば充分) ような状況で参照がなくポインタを使うならいちいち &a+&b みたいにして書く必要が生じる。
いかにも煩わしいだろう。
747
(1): (ワッチョイ 1fa6-0yYo) 11/14(金)19:55 ID:p/1JbX4j0(1) AAS
C++より古いの新しいの含めて多くの言語が採用してるように参照は引数でのみ使用可能で良かったと思うよ
748: (ワッチョイ 9fda-V2U1) 11/14(金)20:35 ID:/xnnTPah0(1) AAS
>>747
他の言語はともかく、C++の参照は引数に限定されてないですよ。

int a = 10;
int* pa = &a;
749: (ワッチョイ 1f42-q6Sd) 11/15(土)10:22 ID:ncudN0/g0(1/2) AAS
747は、(実際の仕様はそうなっていないけど)引数でのみ使用可能なら良かったのに……という意味だと思うぞ。
750: (ワッチョイ 9fda-V2U1) 11/15(土)19:11 ID:lfrbAWbT0(1) AAS
ああ
>使用可能で良かったと思うよ

ではなく、

>使用可能だったら良かったのにと思うよ
って事ですか
751: (ワッチョイ ffa1-lDbn) 11/15(土)19:25 ID:3JdS/6Ib0(1) AAS
カスみたいな読解力
752: (オッペケ Srf3-rRus) 11/15(土)19:35 ID:QqRirP4Fr(1) AAS
そんなコミュ力高かったら、石が友達なんて言わない
753: (ワッチョイ 1f42-q6Sd) 11/15(土)19:39 ID:ncudN0/g0(2/2) AAS
分かりやすいように749みたいに書いたけど、747で普通に意味が通じるので、「ではなく」というとちょっと違う気がするかな。言葉って難しい。
1-
あと 1 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s