C++相談室 part154at TECH
C++相談室 part154 - 暇つぶし2ch814:デフォルトの名無しさん
21/02/21 01:29:00.28 oO8KGr2m.net
条件を満たすならmemcpyのほうが圧倒的に早いからな

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

816:デフォルトの名無しさん
21/02/21 03:13:29.79 ZrTKdY4P.net
そもそもそんなクソみたいなコードはふつう書かない

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

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

819:デフォルトの名無しさん
21/02/21 05:11:43.88 L28MHLBD.net
valarrayでxorとか

820:デフォルトの名無しさん
21/02/21 07:43:27.01 F92hI73d.net
>>802
オブジェクトAがconstメンバとして保持しているブツの所有権を移してオブジェクトBを構築することは
ムーブコンストラクタでないと㍉なのでムーブコンストラクタである必要があり
この要請はオブジェクト全体が直接アクセスかポインタや参照経由の間接アクセスかとは独立愚連隊、
>>803
真に高速化を求められる内側のループでstd::vector<int> xとかしないから
>>796はひとつながりの省略のないコードとして読んだら判断を誤りうる

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

822:デフォルトの名無しさん
21/02/21 13:21:42.30 Dqlg3tSu.net
関数と関数オブジェクトってどう使い分けるの?

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

824:デフォルトの名無しさん
21/02/21 14:32:16.15 HYHVDYIS.net
>>805
そんなこと聞いてるんじゃなくて
提示されたコード片じゃどう考えても動かないから何したいか分からんのよ
URLリンク(wandbox.org)
こっから始めてどこをどうしたいか教えてくれ

825:デフォルトの名無しさん
21/02/21 14:47:26.80 9WgNecVw.net
404 Not Found

826:デフォルトの名無しさん
21/02/21 15:33:36.83 HYHVDYIS.net
すまん
URLリンク(wandbox.org)

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

828:
21/02/21 19:01:13.83 3Ebck9FU.net
>>807
この質問に対して回答をつける用意がありますが、しばしお待ちを

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

830:デフォルトの名無しさん
21/02/21 20:07:12.76 F92hI73d.net
>>809
Fooはこんなやつ、
URLリンク(ideone.com)
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:デフォルトの名無しさん
21/02/21 20:09:12.28 F92hI73d.net
ちなみにWandboxでソースコードをフォークする方法は
初心者なので
わかり
ません

832:デフォルトの名無しさん
21/02/21 20:14:47.49 LxNhpnKU.net
generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ
後半も意味不明
*q = *pってそれスライシングだぞ

833:デフォルトの名無しさん
21/02/21 20:23:47.49 F92hI73d.net
>>817
普通の(ムーブでない)コピコンは書けないなぜなら>>806の理由により
>*q = *pってそれスライシングだぞ
どゆこと?
Foo foo1とFoo foo2だと
foo1 = foo2
とできるのに、

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

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

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

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

838:デフォルトの名無しさん
21/02/21 22:29:56.45 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:はちみつ餃子
21/02/21 23:00:12.09 jd0qgVVy.net
>>822
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。
状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、
状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。
(普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)

840:
21/02/21 23:42:46.53 3Ebck9FU.net
>>824,820,(>>813,814,822)
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト
スレリンク(tech板:21番)
URLリンク(ideone.com)
あとはラムダ式の理解のための存在という認識、か

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

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


843:ュユーザー定義変数を介して状態を読み書きすることになる。



844:デフォルトの名無しさん
21/02/22 08:23:10.03 Dz0hZ3aS.net
>>827
shared_ptr使えば、大抵の場合は問題ないんじゃない?

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

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

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

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

849:デフォルトの名無しさん
21/02/22 12:08:03.12 5Ezd+ZoO.net
あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな?
急にその手の書き込みが増えてあからさますぎる。

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

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

852:デフォルトの名無しさん
21/02/22 17:39:33.90 rpJl6SNk.net
>>835
感謝しろなんて言ってないぞアホ

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

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

855:
21/02/22 19:57:55.16 R3R68rti.net
>>831
認めましょう
>>838
私の意見に一番近いですね
私は、馬鹿な私の意見を見たくない人も多いと想定しており、馬鹿な私が発言するときは馬鹿の印としてトリップをつけるようにしています、それだけは確約しますので、後は好きなように NG に入れていただいて結構ですよ
私はそういう人に干渉するつもりはありません

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

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

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

859:デフォルトの名無しさん
21/02/22 21:18:11.70 jfkpe4Eh.net
そういう話じゃねーよ

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

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

862:デフォルトの名無しさん
21/02/23 01:01:30.38 48JMuLBY.net
>>844
メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる
ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する

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

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

865:デフォルトの名無しさん
21/02/23 07:27:00.90 ex5XjLGm.net
>>847
"メンバアクセスしてない"てのが重要だと思うよ
実際、非staticではなくstaticなメンバ関数にしたい場面てあんまり無い(外の関数と大して変わらんから)
>>848みたいなのはオブジェクト指向も理解出来てないド素人が玄人ぶってよく言うんだよなぁ・・一応釘だけ刺しとく

866:デフォルトの名無しさん
21/02/23 08:19:26.69 kBU50DXM.net
なんかOOPの行き着く先みたいな話してるな
俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う
必然、その方が副作用も少ない

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

868:デフォルトの名無しさん
21/02/23 08:30:00.72 u3MMsI1X.net
メッセージ・・?
何の言語の話してんだ

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

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

871:デフォルトの名無しさん
21/02/23 10:15:54.38 gTQJYaBt.net
> データメンバーの一貫性を保つためだけに使う
いったい何が言いたいんだろう
他人に分かり易く言えないのは自分が解ってないからというケースがある

872:デフォルトの名無しさん
21/02/23 10:18:06.26 B3ih21Pc.net
> データメンバーの一貫性を保つためだけに使う
この表現で普通に分かるけど
分からん人もいるのね了解

873:デフォルトの名無しさん
21/02/23 10:20:33.46 NIjAanwq.net
メッセージが何のことかわからないのはワロス

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

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

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

877:デフォルトの名無しさん
21/02/23 10:33:09.34 B3ih21Pc.net
>>858


878:デフォルトの名無しさん
21/02/23 10:34:51.99 gTQJYaBt.net
>>859
1行目は納得
2行目の主観論には付き合ってらんね

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

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

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

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

883:デフォルトの名無しさん
21/02/23 11:54:07.11 oVEFpcof.net
このスレは特にそういうの多いよね

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

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

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

887:デフォルトの名無しさん
21/02/23 13:46:51.42 iu17pC6m.net
>>865
どういう理由で経験不足と判断したか言ってみ

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

889:デフォルトの名無しさん
21/02/23 13:53:26.39 UMWafFvJ.net
>>823
レス㌧クス大儀であった
自己解決しますた、
URLリンク(ideone.com)

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

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

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

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

894:デフォルトの名無しさん
21/02/23 14:29:34.84 +0nZ2NLW.net
smalltalkなんて誰も使わないのだから、アジソンウェスレイのオブジェクト指向プログラミング入門にそう書かれていたからという理解で良いのでは?
若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。
この本しかなかったんですよ。
良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。
全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。

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

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

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

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

899:
21/02/23 21:53:45.68 tPF8d5Rx.net
>>878
>書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
私の若い頃を思い出します。
当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした
最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥
そういうわけで、アマゾン・ウェルカム!

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

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

902:デフォルトの名無しさん
21/02/23 22:07:42.70 HLi0yp23.net
否定したように見えちゃってるんだな
いろんな人がおるな

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

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

905:デフォルトの名無しさん
21/02/23 22:28:42.45 iu17pC6m.net
>>888
>>886が言うように「否定」はしてないと思うよ
ってことね

906:デフォルトの名無しさん
21/02/23 22:44:54.86 H7IAWcv9.net
[selector message]
Objective-Cが良かったな。

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

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

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

910:デフォルトの名無しさん
21/02/24 20:59:30.49 T43vsud+.net
C++/CXと混同すた、orz

911:デフォルトの名無しさん
21/02/25 00:40:25.02 hxonNlh3.net
C++/CLIだよ(小声

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

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

914:デフォルトの名無しさん
21/02/25 15:12:23.79 bxBNuN1v.net
>>896
スタックは呼ぶ側で処理するからズレないよ
でないと可変長引数とか実現できないし
>>897
そんなもんは処理系やオプション次第

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

916:はちみつ餃子
21/02/25 15:44:39.43 ziL/azOs.net
x64 の一般的な ABI ではもう様々な呼出し規約を使い分けないようになってる。
(cdecl と stdcall が混在していた Windows が例外的で
他は 32bit 時代からかなり統一されていたみたいだけど。)
まあそれはともかくとして、
実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。
不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。

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

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

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

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

921:デフォルトの名無しさん
21/02/25 19:52:59.02 0YuzuhSG.net
c/c++で型が厳しい?何言ってんだろ

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

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

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

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

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

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

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

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

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

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

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

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

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

935:デフォルトの名無しさん
21/03/01 09:46:40.02 Qi7MAN5S.net
>>918
それな

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

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

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

939:デフォルトの名無しさん
21/03/01 10:42:44.99 N/bll+Sf.net
>>922
いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?
ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ
仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける
皆お前みたいに暇じゃねーんだよ

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

941:はちみつ餃子
21/03/01 11:11:13.26 770X86Bb.net
すぐにとはいかない現実があるのはわかるが、サポート契約の内容を本当に把握して言ってる?
商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。
契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。

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

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

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

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

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

947:デフォルトの名無しさん
21/03/01 20:24:36.67 YhH9VVk1.net
>>923
> いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?
やめたれw

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

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

950:はちみつ餃子
21/03/01 23:56:40.27 770X86Bb.net
>>932
雑な報告でいいというわけではないが、
サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、
報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。
C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが
出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで
見たことがあって商用処理系ってすげーなーと思ってたんだが、
そういう対応のほうが例外的に良すぎるだけなんかね?

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

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

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

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

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

956:デフォルトの名無しさん
21/03/02 06:15:09.36 1/ifTUd4.net


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



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

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

960:デフォルトの名無しさん
21/03/02 22:42:51.15 NRNfCe84.net
言語としての機能はともかく、lispはマスコットがきもすぎ

961:デフォルトの名無しさん
21/03/02 22:45:21.36 NT1aj9pH.net
言語を作った人の本を読むのが一番良い

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

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

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

965:はちみつ餃子
21/03/03 14:59:21.41 ymUPAFSA.net
>>943
C++ も似たようなもんだろ
URLリンク(www.pixiv.net)

966:デフォルトの名無しさん
21/03/03 16:32:38.43 wyPUKIrf.net
うわ下品な絵

967:デフォルトの名無しさん
21/03/03 19:08:40.13 7D0nPsrG.net
>>948
これは・・意外と嫌いではない・・w

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

969:デフォルトの名無しさん
21/03/03 22:54:00.65 on2XNxxF.net
オイリー禿山。

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

971:デフォルトの名無しさん
21/03/04 13:03:17.03 K63vSywh.net
カムロは半グレ

972:デフォルトの名無しさん
21/03/04 13:36:37.45 Ep7EXP13.net
c++は仕事で書いてない人ほど好きな言語

973:デフォルトの名無しさん
21/03/04 14:22:00.04 qn7RQ+4J.net
と、仕事で書いてないやつが言う

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

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

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

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

978:デフォルトの名無しさん
21/03/04 20:33:50.17 Xyn3qjeu.net
constexpr制限きつすぎ

979:デフォルトの名無しさん
21/03/04 20:47:45.23 FQXwH3J2.net
C++11の頃ならともかく今そんなにきついか?

980:デフォルトの名無しさん
21/03/05 05:58:33.51 BcBZQBoi.net
C++20、情報過多でしんどい

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

982:デフォルトの名無しさん
21/03/06 13:33:27.36 bGzUu7RI.net
apply

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

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

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

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

987:デフォルトの名無しさん
21/03/10 14:10:23.61 mzPrKkeu.net
プロパティがないからな

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

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

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

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

992:デフォルトの名無しさん
21/03/10 15:55:29.61 SA6nop04.net
オブジェクト指向に侵されてるとプロパティが欲しくなるだろう。
しかし、本物のC++は知っている。
それは間違いだと。

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

994:デフォルトの名無しさん
21/03/10 19:39:09.45 pDjVp4Qi.net
>>968
フックを残すかどうかだな
abortとterminateみたいに

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

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

997:デフォルトの名無しさん
21/03/11 01:07:59.93 6JW0gImZ.net
そうだね流石Oracleだね

998:デフォルトの名無しさん
21/03/12 00:57:21.49 9IOLdfat.net
URLリンク(ideone.com)
だれか、剰余の符号関係を教えてくれ。

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

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

1001:デフォルトの名無しさん
21/03/12 08:30:25.58 GKbHXc3G.net
プロパティーは継承できたりインターフェースとして定めたりできるのが強み
だがそれしか強みが無i
しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる
というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん

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

1003:デフォルトの名無しさん
21/03/12 14:00:09.40 9IOLdfat.net
未定義っぽいですね。ありがとう。

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

1005:
21/03/12 20:35:32.66 IXuMqCK3.net
>>985
剰余の定義は、その定義だけではないですね
「最小正剰余」のほかには「絶対的最小剰余」もあります
URLリンク(ja.wikisource.org)
自分で適当な剰余を定義したっていいのですよ

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

1007:デフォルトの名無しさん
21/03/17 23:25:02.49 H7rJK4fS.net
URLリンク(open-std.org)

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

1009:デフォルトの名無しさん
21/03/22 09:41:25.38 mzxuOn07.net
OSによるのでは

1010:デフォルトの名無しさん
21/03/22 23:28:52.74 iFQHROzx.net
PICマイコン用のバイナリが吐かれる

1011:デフォルトの名無しさん
21/03/24 07:52:17.23 PNXF+EC1.net
struct a{};
struct b:private a{};
b c;
(a*)&c; //ok
この下痢糞仕様は何?
こう決まった理由が知りたい

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

1013:デフォルトの名無しさん
21/03/24 09:11:00.00 PNXF+EC1.net
reinterpret_castとちゃうで

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

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

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

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

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

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch