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


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

C++相談室 part147



1 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:56:53.03 ID:uFDqtnkl.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part146
https://mevius.5ch.net/test/read.cgi/tech/1573094136/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

↑え?だってお前、普通ダイナミックリンクするだろ?
"ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**

720 名前:56 ID:gDStPvND.net mailto: >>697
それなりにプログラマ経験あるんだと思ってたけどmallocの中身知らないとはね
別にメモリ確保のsyscall直接使ってもいいんだぞ
むしろnewをリプレースしたい場合ってページ単位で処理したいときとかでしょ

ちなみにこれはデバッグで使うのも有用だぞ
unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易
まぁそんなの自前でやる前にValgrindでも使えって話だけど
[]
[ここ壊れてます]

721 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/25(土) 23:24:58 ID:NV/40SqZ.net]
>>697
アプリケーションの層ではアロケータを書く機会はまずないから
やったことないのは別にいいけど、
さすがに new の本質はメモリの割り当てだってのはわかってて欲しいわ。

722 名前: mailto:sage [2020/01/25(土) 23:28:27.92 ID:0oKBD7Vk.net]
>>700
>それなりにプログラマ経験あるんだと思ってたけどmallocの中身知らないとはね
専ら win32api でやっているので、::HeapAlloc(::GetProcessHeap(), ...) とか ::HeapFree(::GetProcessHeap(), ...) だとは考えていましたし、数年前はそう置き換えていたこともありました。

>unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易
これは初耳です。よろしければ、もう少しキーワードだけでいいので羅列していただけませんか

723 名前: mailto:sage [2020/01/25(土) 23:33:20.09 ID:0oKBD7Vk.net]
>>701
それはおそらく大丈夫だと思います

724 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:36:38.54 ID:nqs2x9Ls.net]
関数で切り出すのは入出力がはっきりするというメリットはあるが
ループの内と外の依存性が高い場合に内を無理矢理関数分けすると
シグネチャに入力引数と出力引数(参照渡し)がぞろぞろ並ぶことになって
それはそれでお勧めしない
(関数の意味も不明確になりがちやし…

725 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:52:12 ID:gDStPvND.net]
>>702
そうだよwindowsならそのあたりだよ
あとVirtualAllocね

> >unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易
> これは初耳です。よろしければ、もう少しキーワードだけでいいので羅列していただけませんか

new/deleteのたびにページ単位で確保・解放するんだよ
それこそVirtualAllocで
だから重いよ
そうするとdangling pointerでヒープ壊される問題があった場合、
壊しにいったら即セグフォルで止まるからデバッガつなげれば犯人特定できる

726 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 00:43:59.41 ID:F5s0MU2W.net]
>>686
そんな職場は大変だぞ
構造体だからって、triviallycopyableを満たさないクラスをわざわざvoidポインタに格納して、memcpyしたり
クラスをわざわざmallocしてコンストラクタ、デストラクタ飛ばしたり
const属性をキャストでわざわざ消して値変えられたり

727 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 01:31:21 ID:6ZE6/BGT.net]
ベターCなどとほざく連中がいかに馬鹿で愚かで有害かがよくわかる

728 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 01:32:21 ID:zFvDGbzt.net]
まあそんなやつは C もまともに使えてなかったりするんだけどな。



729 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 01:44:39.85 ID:hLglXOws.net]
中途半端にc++を持ち込んで現場を荒らすやつもいるからね
>>706 の状況はそういうところで見たことある
別にc++が書けるのがえらいわけじゃない
質の良いプロダクトをきっちり仕上げられる奴がえらい
まわりがc++わからないメンバーならcで書くか、
c++が必要というなら十分にチームでトレーニング行ってからだ

730 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 01:48:04.74 ID:zFvDGbzt.net]
C から段階的に学んでいける (業務を止めずに) って D&E には書いてあるけど、
今の C++ じゃもう無理だと思うわ。

731 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 01:48:23.93 ID:zFvDGbzt.net]
C++ は C++ としてそこそこの訓練はいるよな。

732 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 02:05:13.00 ID:Y1EGWiT/.net]
はちみつ餃子がでてくる

733 名前:と、どうもこんな時間に腹が減ってきていかん []
[ここ壊れてます]

734 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 02:10:39.45 ID:zFvDGbzt.net]
食えばいいじゃん。

735 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 05:01:35 ID:3a27Zr8u.net]
>>674
gotoの使い方を知らないと大変だね

736 名前:デフォルトの名無しさん [2020/01/26(日) 07:41:47 ID:Yuet6lAk.net]
>>683
禿4を少しは見習っていただきたい。

737 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:01:19.30 ID:aNHbuwn9.net]
>>706
それは問題。
でも、STLべったりのC++は Cとの書き方の乖離が激しすぎて、もはやCの冠を被ってほしくない。

738 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:06:55.53 ID:BKKks8j/.net]
>>714
関数切り出しできないと大変だね。(特に周りの人たちが。)



739 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:47:19 ID:VrR0aqw1.net]
>>716
CはCらしく、C++はC++らしく使えばよろしい
CをPascalっぽく使うやつとかすげー迷惑なのと同じ

740 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:53:32 ID:1VU+FMua.net]
>>716
えっ?

   C#

741 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:56:24 ID:ZSyO84gV.net]
テンプレートメタプログラミングはC++らしいとも思うけど全然別の言語になっている気がしないでもない

742 名前:◆QZaw55cn4c mailto:sage [2020/01/26(日) 11:09:29 ID:rQ+CcOdx.net]
>>705
情報ありがとうございます
::VirtualAlloc() 系は書いてあることが難しい上に、ばっちゃの遺言「::HeapAlloc() を使え」もあって敬遠していましたが、ここで教えてもらったのもなにかの縁だからデバッグ用に試行してみようと思います

win32api の criticalsection と signal でやっていた(何かがまずくてstarvationに悩まされていました)のも
C++11 になって pthread が大幅に規格に取り込まれた以上、
C++11 の上からの mutex・cond 派に切り替えようか、とか、C++11 になってスタイル変更を考え中です

743 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:32:39 ID:loc7kxiY.net]
>>701
マウント失敗乙

744 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:33:18 ID:3yHBwxN6.net]
>>717
ループを抜ける為に関数を分けるようなアホと一緒に組むと大変だ

745 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:41:25 ID:VrR0aqw1.net]
確かに大変だね
if breakしてる複合文を関数にするときにreturnとか言い出すやつは
longjmpだろうがって

746 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:03:53.99 ID:aNHbuwn9.net]
>>720
実際、別言語だと思う。
C++はtemplateや演算子のオーバーライドを使えば、ほぼ別言語をみなせるようなものを上に載せられる設計になっているので。
STLを使いまくるプログラミングの書き方だと、もはやCとは何の関連性もなくなってしまっている。

747 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:09:22.76 ID:BKKks8j/.net]
>>723
ループ抜け出すぐらいでそんな苦労するようなコードになってるなら
関数で抜け出すのが当然だろカスが。
いくら脳みそ足らなくてもgoto擁護のために無理筋言ってるってことにそろそろ気づけ。

748 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:12:08.41 ID:bvl7bZIP.net]
どんな苦労?



749 名前:デフォルトの名無しさん [2020/01/26(日) 12:13:10.43 ID:Yuet6lAk.net]
ネストするなら別のプログラムに切り分けましょう。
シェルから呼び出せばいいのです。

750 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:18:30.55 ID:Scuijf7t.net]
>>725
もともとCってマクロで何でもやりたい放題の言語だぞ
www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html

751 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:39:03.45 ID:aRFw4TjA.net]
>>727
「gotoダメ!絶対!教」の戒律を破ることじゃないかな。きっと身を裂かれるほどの苦しみな

752 名前:んだろうw []
[ここ壊れてます]

753 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:50:28.18 ID:PjjUDKm0.net]
いったん収まったと思ったら
また goto の話開始してて草
アスペ特融の拘りと言われても仕方がないな

754 名前:デフォルトの名無しさん [2020/01/26(日) 13:01:54.18 ID:Yuet6lAk.net]
goto以外の話題を提供できないお前が悪い。

755 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 14:36:31.44 ID:VrR0aqw1.net]
gotoの話で叩きのめされたやつが話題を変えたいのはわかったよ(ニヤニヤ

756 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:07:41 ID:aNHbuwn9.net]
>>729
たしかにCもマクロを使えば結構何でも出来る。
だが、マクロを多用すると分かりにくくなるとも言われていたし、使い方によっては、ソースコードが全く別言語のようになってしまうことも知られていた。
それと同様の現象がSTLにおいては起きる事態になってしまっている。

757 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:09:16 ID:jQnb27FW.net]
もっとマクロをリッチにしてほしい

758 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:19:16 ID:VrR0aqw1.net]
>>734
なってねえよ
おまえさんにはSTLがIOCCCに見えるのか

慣れの問題と言いたいがおまえさんは極端すぎ
一種の病気だ



759 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:21:00 ID:aNHbuwn9.net]
>>736
STLの作者は、自分では分かり易くしようとしているようでいて実際には逆に分かりにくくしてしまっている。

760 名前:デフォルトの名無しさん [2020/01/26(日) 17:22:57 ID:Yuet6lAk.net]
STLは神がかってるけどな。
あの時代によく設計できたな。

761 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:23:15 ID:aRFw4TjA.net]
>>735
自分で好きなようにプリプロセッサを実装すればいいんじゃね?

762 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:25:09 ID:aRFw4TjA.net]
>>737
その分かりにくいの主語は、世間一般ではなくお前個人なんだろ。

763 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:33:33.23 ID:jQnb27FW.net]
>>739
互換性

764 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:42:50.97 ID:VrR0aqw1.net]
>>738
だよな

Cではmemsetやqsortにvoid*というリスキーなことをせざるを得なかったのを
関数テンプレートで型情報をきちんと面倒見るようにできたし
リニアサーチがない等のCライブラリの不備も解消した

そこに気付かないやつはプログラマとしての資質を問われる

765 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:50:07.66 ID:loc7kxiY.net]
>>738, >>742
あのな、STLは設計構想から含めると十年から数十年かかってんだよ
それだけよく考え抜かれたものが優れてないわけがない
これ何回も書いたんだけどな

「最新仕様追ってる俺スゲー」したいだけの奴の希望的観測はもうこりごりだわ

766 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:53:28.80 ID:loc7kxiY.net]
最新仕様とか書いたらSTLが最新?とか言われそうなんで先に言っとくけど
マクロ(プリプロセス時メタプログラミング)を貶してテンプレートは持て囃すのはダブスタってことなんで誤解なきよう

767 名前:デフォルトの名無しさん [2020/01/26(日) 17:53:53.15 ID:Yuet6lAk.net]
ただ俺としては右辺値参照の発見にノーベル賞を授与するべきだと思うんだよな。
これ人類史上でも大きな発見じゃないかと思うんだよな。

768 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:58:05.42 ID:hLglXOws.net]
おれは真逆の感想
仕様が汚すぎる



769 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:58:55 ID:hLglXOws.net]
右辺値参照というよりmove全般のことね

770 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:01:03 ID:VrR0aqw1.net]
>>743
742だが、おまえさんは俺が何がわかっていないと言いたいんだ?
どっかの馬の骨が何回書いたかなんて興味ねえが
当たり前のことをドヤられる意味がわからんぞ

771 名前:デフォルトの名無しさん [2020/01/26(日) 18:05:34 ID:Yuet6lAk.net]
STLにノーベル文学賞なんてオサレだと思わないか。

772 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:05:38 ID:VrR0aqw1.net]
>>746
同感

そもそも左辺値参照にconstをつけたら右辺値を指せるなんて
珍妙なルールが招いた禍根を何とかする苦肉の策が右辺値参照だかんな

今ふり返って見るとconstなしの左辺値参照でもテンポラリを束縛できて
それを禁止したい場合のキーワードがあればよかったんだと思う

773 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 18:23:11 ID:zFvDGbzt.net]
>>745
互換性を失わない形で性能

774 名前:にも寄与するのはすごい思い付きだと私も思った。
スマートポインタが充実する方向で良くなると思っていたので、
まさか参照を区別する形でコピーを避けるとは思いもよらなかった。

だけどなぁ……。 結局は後付けなんだよね。
互換性を捨てられないという制約の中ではこれ以上ない発明ではあっても、色々と不満はあるよ。
ムーブ自体は言語のコアに組み込まれた機能ではないから
ムーブ後の抜け殻をうっかりいじってもコンパイラは黙って通しちゃうし。

ムーブできるようにしようとすると実質としてはポインタの入れ替えになるから、
各クラス向けにカスタマイズしたスマートポインタを書いてるみたいなもんだ。
本来ならそんなのコンパイラの最適化で頑張ってなんとかすべきことだろ。
言語処理系の敗北の証にすら見える。

いや、良いとは思ってるんだよ。
間違いなく rvalue 参照は素晴らしい発明で、 C++ をより良くした。
でもまあいいことばかりでもないよねっていうちょっとした愚痴。
[]
[ここ壊れてます]

775 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:23:51 ID:XnsWA8uh.net]
STL使って混乱する状況てどんな時だ?

776 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:26:11 ID:jQnb27FW.net]
構造体/クラスを戻り値にするっていう発想が無かった時代からのつぎはぎ拡張だから

777 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:51:03 ID:PjjUDKm0.net]
そもそも構造体を=でコピー出来るのが始まりだからな
配列は=でコピーできないのにな
その辺一貫性なかった>C言語

778 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 19:06:02 ID:zFvDGbzt.net]
>>754
配列は (その先頭要素を指す) ポインタに型変換されるルールを入れてしまったので
それと辻褄の合う形には出来なかったんだと思う。



779 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:07:43.07 ID:PjjUDKm0.net]
もしCが
構造体を参照するとポインタ相当になります
引数で渡すときも&つけなくても勝手にポインタになります
コピーするときはmemcpyしてください
って仕様だったらC++はどうなってたんだろうな
色々まずいことになるのは確か

780 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:09:16.84 ID:PjjUDKm0.net]
↑ただ、モダンな言語はむしろそういう仕様なんだよな
その代わりGCがあるが

しかし、それはそれで不便なのであった

781 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:23:48 ID:VrR0aqw1.net]
>>744
おまえさんは
#define STR char* //と、
typedef char* STR; //の違いが
わかってなさそうに見えてしまうが
違うよな?

コンパイラでないものによる字面の読み替えと
コンパイラによる意味の読み替えを
区別するのはダブスタか?

782 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:38:43 ID:loc7kxiY.net]
>>758
そういうのじゃなくて、>>734に対して>>736書いたよな?
慣れ、ってのはわからんでもないがSTLの成功にはっちゃけて何でもテンプレートでどうにかする
今の風潮は俺もどうかと思うので。
もちろんマクロでメタプログラミングするよりは遥かに楽だけど、方向性としては同じようなもんだろ

783 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:41:08 ID:loc7kxiY.net]
というかVCだとプリプロセスだけ済ませたソース見れるから、
時にテンプレートよりデバッグ楽かもしれない

784 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:59:37 ID:VrR0aqw1.net]
>>759
質問に答えてないな
字面の読み替えは評判悪く
意味の読み替えが広く受け入れられているのは
ダブスタか?

785 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 20:00:29 ID:zFvDGbzt.net]
マクロを殺すためにどんだけ苦労してきたと思ってんだよ。

786 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:01:26 ID:hLglXOws.net]
またマクロの話かよ
ほんとロートルばっかだなここ

787 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:04:02 ID:VrR0aqw1.net]
>>762
ほんこれ

788 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:07:19 ID:loc7kxiY.net]
>>761
それをダブスタとは思わないし言ってもないんだが

>>762
だったら尚のこと歴史に学べよ



789 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:10:54 ID:VrR0aqw1.net]
>>765
744で言っているが?

790 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:15:22 ID:loc7kxiY.net]
>>766
アンカーぐらいちゃんと付けろよボケ

>そこに気付かないやつはプログラマとしての資質を問われる
これは>>734に対する発言だよな?
俺じゃなくてお前が相手の発言を矮小化してバカにしてると気付け

791 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:21:38 ID:VrR0aqw1.net]
>>767
734と俺の問題は
おまえさんと俺の問題とは別だ
話を逸らすな

744の発言をおまえさんは貫くのか撤回するのか
立場を明らかにせよ

792 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:22:20 ID:loc7kxiY.net]
どんだけ都合のいい脳味噌してんだこいつ

793 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:33:02 ID:VrR0aqw1.net]
どんな脳味噌と見て貰っても結構だ

744のダブスタ発言をおまえさんは貫くのか撤回するのか
立場を明らかにせよ

794 名前:デフォルトの名無しさん [2020/01/26(日) 20:36:39 ID:Yuet6lAk.net]
マクロとテンプレートが同じとかワロ。

795 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:37:56.09 ID:6ZE6/BGT.net]
Cと違うことを理由にC++を否定する奴たまにいるけど何なん?
なんでCを使わないんだ?

796 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:40:10.44 ID:loc7kxiY.net]
お前の都合のいい解釈(プリプロセス時ではなく型の文脈の問題までマクロでどうにかしていたのをtypedefやテンプレートに置き換える)を
そもそもダブスタとは言ってないんで貫くと取ってもらっていいが
それより>>759-760に対する回答はまだなの?

797 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:43:00.84 ID:loc7kxiY.net]
>>771
メタプログラミングとして見るとやってることは一緒なんだが
言語としての出来不出来は別として(個人的には>>735に同意

798 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:46:23.65 ID:yXTxN+fl.net]
C言語にこそ、UnifideCallSyntax必要だと思うのだけど、入らないかねー。
関数オーバーロードと一緒に入ったらクラスなんかいらねっ。



799 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:47:29.34 ID:hLglXOws.net]
c++の専門家の皆さんに質問ですが

using F = int(int)

のように 戻りの型(引数の型) の形式で関数型を書けるようになったのってどのc++からなの?
あとこれを書ける場所ってusingとtemplate以外にある?

800 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:50:40.79 ID:VrR0aqw1.net]
>>773
> プリプロセス時ではなく型の文脈の問題までマクロでどうにかしていた

プリプロセス以外でマクロでどうにかするって意味がわからない
よって「ダブスタとは言ってない」の意味も俺には(おそらく、ここの誰にも)通じてない

744のダブスタ発言をおまえさんは貫くのか撤回するのか
立場を明らかにせよ

801 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:58:53.64 ID:loc7kxiY.net]
相手に嫌な思いをさせたいだけの議論は辞めろ気持ち悪い
プリプロセス時の問題に遭遇したことが無いのならお前の方が資質に欠けるし経験も足りてない
>>734の言うことも俺の言う事もそら理解出来んだろう
話にならんよ

802 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:03:26.54 ID:BKKks8j/.net]
c++11以降において「マクロをリッチにする」ってことの代替が
テンプレート、constexpr をリッチにするって方向だろう。
正しい方向だとは思わんが、方向性なり答えはうちだしてはいる。

803 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:11:06.46 ID:loc7kxiY.net]
それはそれとしてプリプロセス時プログラミングもやりやすくして欲しいってだけのことだよ
(現実的に叶うとは思ってないが)

804 名前:デフォルトの名無しさん [2020/01/26(日) 21:11:40.73 ID:Yuet6lAk.net]
ワロリン。

805 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:18:05.50 ID:6ZE6/BGT.net]
Qtみたいに独自のプリプロセッサ作ればいいのでは

806 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:19:49.89 ID:hLglXOws.net]
c++の専門家の皆さま教えて下さい

auto a = +[](int b) { return b;};

このaの型は何ですか?
困っているので秒速でお願いします

807 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:36:53.40 ID:VrR0aqw1.net]
>>778
間違いを認めることができない未熟者には
嫌な思いからも学ぶべき教訓があるんだよ

やめてくれえ、気持ち悪いいい、それで?
命令口調では許してやらんぞ

808 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:37:51.54 ID:VrR0aqw1.net]
私事ですまんが
明日早いんでそろそろ失礼する



809 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:39:54.66 ID:loc7kxiY.net]
ワロタ

810 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:46:54.67 ID:VrR0aqw1.net]
よかったなw

811 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:54:18.57 ID:loc7kxiY.net]
まともな反論できんのならはよ寝ろ

812 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/01/26(日) 21:59:37 ID:TOQ25Lx5.net]
>>783 int型。

---
君たちひまそうだね。暇だったら、こっちのソースでも見てくれないか?
https://github.com/katahiromz/ImagePocke/blob/master/ImagePocke.cpp

C++/Win32で書いてるんだけど

813 名前:B
ここからドロップした画像ファイルを表示可能にする予定。
画像読み込みにGDI+を使う予定。
[]
[ここ壊れてます]

814 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:27:38 ID:hLglXOws.net]
静かになったなw

>>789
関数ポインタ
ttps://wandbox.org/permlink/zLH8pFOt3tLJhujk

815 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:46:48.37 ID:Pq6RurGB.net]
ラムダに+をつけると関数ポインタになるなんてcppreferenceにもないけど常識なの?

816 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:55:11.25 ID:hLglXOws.net]
そうなんだよね
この仕様がどこで決められてるものかがよくわからない
ぐぐったら
ttps://stackoverflow.com/questions/18889028/a-positive-lambda-what-sorcery-is-this
というのが見つかってなんか built-in overload らしいんだけど
結局のところ関数オブジェクトに対する仕様がどこに書かれているのかよくわからない
でもわりとよく使ってる

817 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 23:01:50.07 ID:zFvDGbzt.net]
>>791
・ キャプチャしている変数がないクロージャは関数ポインタに変換可能であり、関数ポインタが必要なところでは暗黙に型変換される
・ クロージャに単項 + を適用することはできない (ので関数ポインタに型変換してから解釈される)

という合わせ技によって関数ポインタになる。
(キャプチャしてる変数があるときは変換できないよ)

818 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:05:52.70 ID:Pq6RurGB.net]
関数オブジェクトには関数ポインタへの暗黙の変換が存在して
operator+(T*)がそれ自身を返すからということね



819 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:09:35.82 ID:hLglXOws.net]
まじで?
たまたまできるってことなのか
なんか今後使うのためらうわw

820 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 23:11:17.20 ID:zFvDGbzt.net]
>>795
専用の、クロージャをポインタに変換する機能というわけではないという意味ではたまたまだけど、
ちゃんと保証された動作なのでためらわなくていいと思うなぁ。

821 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:14:39.96 ID:hLglXOws.net]
>>796
もし今後関数オブジェクトに他の暗黙変換が追加されたらって考えると気が引ける
まぁ使うんだけどさ

822 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:17:47 ID:uhXUQTHO.net]
普通に型宣言すればいいだけだよねこれ。

823 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:18:13 ID:8wq+eSeZ.net]
>>776
実験してないので間違ってるかもしれないが、
(型名)ptr で関数ポインタへキャストする場合、
( int(*)(int) )ptr
と書いても良いが、
( int(int) )ptr
と書いても良かったかも知れない。というのは、
typedef int (*FUNC)(int);
と書いても良いし、
typedef int FUNC(int);
と書いてもよかったり、関数型のポインタ pFunc に対して、
(*pFunc)(123);
と書いても良いし、
pFunc(123);
と書いても良い、とか。

824 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:19:00 ID:jlvCAhZE.net]
>>776
C89 から関数型の表記としては解釈されるかと。
コンパイルが通る文脈は C++ まで無かったかもしれんけど。
C++ でも今のところ using とテンプレート引数以外では使えなさそう。

825 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:25:21 ID:8wq+eSeZ.net]
>>799
一部、コンパイラが故意にエラーにする可能性は有るが、
int(*ptr)(int);
は、関数へのポインタ型の変数ptrの宣言。
int(*)(int)
は「関数へのポインタ型」そのもの。
int func(int);
は、関数のプロトタイプ宣言だが、内部処理的には関数型の変数 func を定義しているような
解釈がされた後、関数型の場合の特別な処理として変数ではなくプロトタイプ宣言に特別
処理がされる。そして、
int(int)
は「関数型」そのもの、という解釈になる。
よく見るとこれらに対抗関係が有ることが分かる。
なお、最後のint(int)はコンパイラの内部処理的には関数型そのものだという解釈になるが、
コンパイラがその場合に特別にエラーを出す処理系と出さない処理系があるかもしれない。

826 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:26:31 ID:8wq+eSeZ.net]
>>801
対抗関係 ---> 対応関係

827 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:34:47 ID:8wq+eSeZ.net]
>>801
何が言いたかったというと、戻り値(引数型) を解釈する新しい仕様が追加された
というより、数学の数式のようにみたときに一貫した規則に従っていることが
わかるということ。言葉で言えば、
 「定義文に置いて、名前を除去すると型名になる」
という規則。
int func(int);
という定義文に置いて、名前であるのは func。だから、funcを除去した、
int(int)
は、funcの型名になる。名前funcの型は、「関数型」だから、これは関数型
という型名そのものとなる。
int a;
の場合、名前であるのは a で、aの型は、int型。だから、この定義文から
名前を除去した int は、int型ということになる。
int (*pFunc)(int);
の場合も、pFuncという変数の定義文であるが、この定義文における名前とは
pFuncであるので、pFuncを除去したところの
int (*)(int);
は、pFuncの型であるところの、「関数へのポインタ型」となる。

つまり、同じ法則にしたがっている。

828 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 00:36:25 ID:e3ktUGSY.net]
関数型が暗黙に関数ポインタ型に型変換されるルールで引っ掛かってるってことかな?
関数型そのものは C++ が出現した最初から存在すると思うよ。 C にもあるもの。

こういう特殊な変換ルールを強制するために std::decay がある。



829 名前:800 mailto:sage [2020/01/27(月) 01:15:58.29 ID:jlvCAhZE.net]
>>776
typeid で使ってもコンパイル通った。

830 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 02:13:11 ID:DIOsR0tc.net]
RustってどれくらいC++に取って代わるんろうか
互換性以外でC++使う意味ない、みたいな時代はくる?

831 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 02:15:18 ID:an2yFfMH.net]
Rustの話はRustスレでやれ
布教すんな

832 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 06:56:19 ID:EVyt1Wcb.net]
>>783
スマートオブジェ

833 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:23:59 ID:7jNlWdbx.net]
C++のライブラリはC++からしか使えないから最高なんです
何故ならヘッダという古臭い仕組みを採用しているからww
なおCOMは

834 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:33:48.52 ID:PH8qw3WE.net]
>>798
そりゃauto使いたいからじゃない
その理屈ならそもそもlambda使わずに普通の関数書けばいいってなる

835 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:29:36 ID:nw3WJhJD.net]
>>783
[](int b) { return b;}; だけなら明らかにラムダ式の関数ポインタだけど
それをオーバーロードか何かの+で虚無と足し算してんの?

*[](int b) { return b;};
これは掛け算でもするの?

836 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:44:46 ID:EVyt1Wcb.net]
関数ポインタではない
スマートオブジェクトへのポインタだ
ただの関数ポインタならファンクタとして機能しない

837 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:54:24 ID:j8/I9hQ5.net]
>>811
単項演算子の+だろ

838 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 11:22:15 ID:PH8qw3WE.net]
>>811
はちさんが答え書いてるよ
>>793



839 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:33:55 ID:LGsyX1lU.net]
ラムダはデリゲートじゃねー。一個しか保持できんわな。
と遅レス。

840 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:47:35 ID:uUAjQCPR.net]
ステートレスラムダって用語が出てこないんだね
stateless lambda

841 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:57:13 ID:uUAjQCPR.net]
>>804
template <typename F>
void test(F&&) { cout << 1; }
void test(int(*)()) { cout << 2; }

int func() { return 0; }

int main()
{
test(func); //2
test([]{ return 0; }); //1
}

ステートレスラムダを関数ポインタに渡すのはconversionで
関数を関数ポインタに渡すときのlvalue translationとは違う

842 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:03:26 ID:uUAjQCPR.net]
lvalue transformationだ、これは失礼

843 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 16:10:02 ID:e3ktUGSY.net]
>>817
おっ。 そうなんや。

844 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:16:57.88 ID:uUAjQCPR.net]
g++だと、これ通るw
auto closure = []{ return 0; };
using funcp = int(*)();
test(closure.operator funcp());

845 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:29:40 ID:Xjs2F3Iq.net]
[]の後()不要だっけ?

846 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:30:47 ID:an2yFfMH.net]
引数がないなら省略可能

847 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 17:56:21 ID:e3ktUGSY.net]
>>814
ワイはどちらかというとはちみつより餃子の方にアイデンティティがあるので…・…

848 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 18:43:12 ID:Be1ain3H.net]
>>822
勉強になりました。



849 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 19:32:41 ID:EVyt1Wcb.net]
>>81

850 名前:2
×スマートオブジェクトへのポインタだ
○スマートオブジェクトだ
[]
[ここ壊れてます]

851 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 09:26:07 ID:ClFSc0Tc.net]
しょうもないシンタックスシュガーの話が好きな奴多いね。

852 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:18:33.58 ID:iJMYk+LH.net]
gotoおじさんまた登場だよ

853 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:25:01.77 ID:ciqR13vi.net]
>>827
踊るポンポコリンの「インチキおじさん登場」を思い出した。あんまり間違ってないだろう。

854 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:44:40 ID:wcDzWZFN.net]
ボコられるの好きなんか? 変態めw

855 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:49:48 ID:ivYV6JvB.net]
物事は適切に伝えろ
それが出来ないなら口を開けるなカスども

856 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:52:11 ID:ivYV6JvB.net]
ラムダが関数ポインタとかほざいてるカスが居てびっくりしたわ

857 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:05:50.35 ID:AXFiEKC0.net]
>>831
インライン展開されるから?

858 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:12:08.47 ID:tLdUC4IA.net]
>>831
>>783 のこと?



859 名前:デフォルトの名無しさん [2020/01/28(火) 11:23:05 ID:ijxMtirO.net]
個人的にはテンプレートなのに糞のSTLよりも
マクロωのQtの方がうまくやれてる実用的だと思う

860 名前:デフォルトの名無しさん [2020/01/28(火) 11:24:46 ID:ijxMtirO.net]
>>758
typedefに夢観すぎ

861 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 11:30:08 ID:jIEBko3c.net]
まあ個人的な感想は個人的な感想だからなぁ。
俺は Qt に対してなんやこのクソはとしか思わんが、
広く使われている現実がある以上は実用性は高いんだろう。 たぶん。

862 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:38:43 ID:9AkNqXrr.net]
Qtのmocは何か嫌だ

863 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:45:43 ID:wcDzWZFN.net]
>>835
ああ、usingを使うべきだったな
typedefなんてダセーもんもういらねえって
頭ではわかってるんだが長年の癖でぽろっと出ちまう

864 名前:デフォルトの名無しさん [2020/01/28(火) 12:03:55 ID:AXFiEKC0.net]
マクロを名前空間に閉じ込められるようになれば、マクロの害悪の何割かは減らせるはず。

865 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 15:45:53 ID:wcDzWZFN.net]
ということは名前空間をプリプロセッサが処理せにゃあかんな
translation phaseを根本的にぶっ壊さないと無理だと思うが

866 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 16:34:43 ID:ogCuVxV7.net]
typedefが駄目で、usingが好まれる理由を教えてください。

867 名前:デフォルトの名無しさん [2020/01/28(火) 16:38:19 ID:AXFiEKC0.net]
否定的な視点から散々な言われ方をされがちなC/C++のマクロだけど、
Java/C#/Python/Pwel/Rubyに似たテキスト変換がないことに物足りなさを感じることが多いのも事実。

868 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 16:39:59 ID:jIEBko3c.net]
>>841

私が思いつくのは
・ using は名前を導入するという一巻した意味規則がわかりやすいから
・ using はテンプレートに出来るから
・ typedef だと複雑な型定義をするときに肝心の新しい名前が中の方にあって見づらい



869 名前:デフォルトの名無しさん [2020/01/28(火) 16:44:17 ID:AXFiEKC0.net]
typo。PwelじゃなくてPerl。Perlはめっきり影が薄くなった。
PerlはGit for Windowsにバンドルされているので世の中の大部分のプログラマーがすぐに使える環境にあるのだが、
Git本体はPerl依存を減らす方向に進んでいるらしい。

870 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 16:44:19 ID:jIEBko3c.net]
>>842
Cプリプロセッサを Java やら Python やらにつこうてもええんやで。

そういえば cpp を使うことを (習慣的に) 想定してる言語って C/C++ を除けばHaskell (GHC) くらい?
汎用プリプロセッサとして使うなら M4 あたりの方が賢いしなぁ……。

871 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:01:24 ID:wcDzWZFN.net]
>>841
たとえばこういう場合
#define STR char*
STR a, b; //これ、どうなる?

もしこうなっていたら
using STR = char*;
STR a, b; //これはどうだ?

おまえさんの好みに合うのはどっちだ?
そこに答えがある

872 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:02:35 ID:wcDzWZFN.net]
>>841
あ、すまんtypedefか

typedef 内容ごちゃごちゃ 名前;
using 名前 = 内容ごちゃごちゃ;

体裁が揃えやすいのはどっちだと思う?

873 名前:デフォルトの名無しさん [2020/01/28(火) 17:12:58 ID:ijxMtirO.net]
typedef も using もエイリアスという点では
char * と STR の区別が出来ないから後で困る

874 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:15:55 ID:wcDzWZFN.net]
関数ポインタの別名を作るときなんぞ

typedef int (*funcp)(); //内容ごちゃ名前ごちゃ
using funcp = int(*)(); //名前 = 内容ごちゃごちゃ

という違いが出る

875 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:25:49 ID:CkOmcsmE.net]
usingを使うと03脳が発狂する

876 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 17:28:55 ID:jIEBko3c.net]
でもまあヘッダファイルを C と C++ の両方で (マクロで少し切り分けて) 使いたいってことはあるから、
そういうときは typedef にしといた方が共用できる部分が多くて楽ってことはある。

877 名前:デフォルトの名無しさん [2020/01/28(火) 17:34:48 ID:ijxMtirO.net]
>>849
そこだけだと構文糖衣以上のメリットはないよね

878 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:46:32 ID:aDOyN6/W.net]
どっちでもええやん



879 名前:はちみつ餃子 mailto:sage [2020/01/28(火) 17:55:35.77 ID:jIEBko3c.net]
>>849
ポインタまわりはテンプレートの記法で書けば統一的でわかりやすい気がするが、
たぶん他の名前とかぶらないようにするためか長めの名前なのがちょっとなぁ……。

using funcp = std::add_pointer_t<int(void)>;

880 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 18:11:09 ID:IabgCQwH.net]
こういうのもある。
https://qiita.com/Linda_pp/items/44a67c64c14cba00eef1

881 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 18:21:36 ID:jS595giQ.net]
>>842
PL/1はいいぞ
制御構文としてif程度しか使えないしょぼいC/C++マクロと違ってプリプロセッサでDOループやGOTOとかも使えるしサブルーチンの定義すらできるぞw
https://en.m.wikipedia.org/wiki/PL/I_preprocessor

882 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 19:30:49 ID:jjtOLQOh.net]
そういえば最近Boost.Preprocessorを使った楽しい黒魔術の話題を聞かない気がする
あれってまだ開発継続してるの?

883 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:01:44 ID:KHL1SP2c.net]
>>849
typedefの方が簡単じゃん
コピペして*付けて()付けるだけ

884 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:11:17 ID:lz3/6EQt.net]
マジでか・・・

885 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:52:12 ID:wcDzWZFN.net]
>>852
おまえさ、usingはテンプレートにできること、まさか知らないの?

886 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 22:15:34.91 ID:aDOyN6/W.net]
小学生かよw

887 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 23:16:15.60 ID:kww99AmH.net]
CPPってもうメンテされていないようで怖い
#define FOO 123 // comment
とはとうてい恐ろしくてどうしても書けず、
#define FOO 123 /* comment */
と書いてしまうま

888 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 11:25:21 ID:HJZ6WUGV.net]
N4713
5.2 Phases of translation
3
Each comment is replaced by one space character. New-line characters are retained.



889 名前:デフォルトの名無しさん [2020/01/29(水) 13:26:03.72 ID:zE4LbE2k.net]
>>860
そこだけって書いてあるのに脳内で読み飛ばずのは
国語の成績悪かったやつの特徴

890 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 13:40:36.68 ID:HJZ6WUGV.net]
>>864
おい852本人、「構文糖衣以上のメリットはない」という自分の言葉から逃げるのに
そういう言い訳は見苦しいぞ

今さら吐いた唾を飲むなよ

891 名前:デフォルトの名無しさん [2020/01/29(水) 14:13:02 ID:pjwqAxyM.net]
なぜ喧嘩腰なのか。

892 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 14:13:39 ID:Yrzd5mtl.net]
喧嘩腰がC++民のデフォだから

893 名前:865 mailto:sage [2020/01/29(水) 14:36:19 ID:WeNDQDRz.net]
俺は争いは好まないが、
平和的な話し方をしないやつには
場合にもよるが嫌悪感を露にすることもある

894 名前:デフォルトの名無しさん [2020/01/29(水) 16:47:35 ID:pjwqAxyM.net]
戦士の血がそうさせると言いたいのか。

895 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 16:57:27 ID:HJZ6WUGV.net]
平和を愛するという点で共感が得られず
こちらが下手に出ることのベネフィットがない相手には容赦は無用ということだ

896 名前:デフォルトの名無しさん [2020/01/29(水) 17:24:59 ID:pjwqAxyM.net]
戦士と戦士が巡り合ってしまうと、バトル・フィールドが形成されるシステムってことか。

897 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:32:22 ID:YYjUIAq1.net]
>>870=ID:VrR0aqw1
マウント取りたいだけの初心者だから相手しない方がいい

898 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:39:26 ID:iDUguYS7.net]
>>867
多くのC++民が喧嘩腰なのでなく、一部の喧嘩好きの戦闘民族のレスが目立ってるだけじゃね。このスレから相手に勝つことだけが目的の無意味なレスの応酬を取り除いたら、1/10も残らないと思うぞ。



899 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:54:15 ID:YYjUIAq1.net]
いや最近のC++に対するちょっと否定的な意見が出ただけで
過剰反応する住民のせいでもあると思うぞ
で、そういう奴に限って間違いを素直に認めたりなどしないからな(代理戦争で議論するやつ特有のパターン

900 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:55:39 ID:HJZ6WUGV.net]
>>872
正直に言えよ、「gotoの何が悪いのか詰問されると困るから」相手しないと
マウント取られそうでヤバいんだろw

901 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:59:00 ID:YYjUIAq1.net]
俺ID:loc7kxiYだからgotoの話はしてないよ
で、前にも聞いたけど反論まだ?

902 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:07:15 ID:HJZ6WUGV.net]
ああ、そのIDのときはSTLの話だったな
そこでマクロの話も出てきていたが
隠すべきものと隠してはならないものの区別がつかない点で
gotoの何が悪いのかわかってないやつとプロファイリングが一致するんだよ

俺の正直な気持ちを教えといてやる
マウント取りたいんじゃなく、頭からアホにしてんだよ
こんなやつをマウントできたからって偉くも何ともねえ

903 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:08:48 ID:YYjUIAq1.net]
いやSTLじゃなくてテンプレートを持て囃しすぎって話だったんだが
まぁいいや

904 名前:デフォルトの名無しさん [2020/01/29(水) 18:20:58.67 ID:pjwqAxyM.net]
おまえが犯人か。

905 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:31:24.45 ID:UhF+CSx9.net]
なんかおかしなのがいるよね

圧倒的にこっちが勝っている状態で意味不明な反論?してきて意味不明だから返せないと逃げたとか言う奴

906 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:33:57.19 ID:8i6C3PjP.net]
5chなんてそんなところ
何を期待してるんだか

907 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:50:11.91 ID:HJZ6WUGV.net]
明日早いから失礼するとは言ったが
それを謎変換せにゃならん切羽詰まったやつがいるのかw

908 名前:デフォルトの名無しさん [2020/01/29(水) 19:02:21.51 ID:pjwqAxyM.net]
gotoは初期化を飛び越えることが出来ないと聞きました。



909 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 19:09:37.44 ID:cVCtJzaf.net]
usingってテンプレート使えたっけ

910 名前:デフォルトの名無しさん [2020/01/29(水) 19:11:38.78 ID:pjwqAxyM.net]
使えます。

911 名前:デフォルトの名無しさん [2020/01/29(水) 19:12:44.99 ID:pjwqAxyM.net]
初期化を飛び越えることができるバーストモードgotoないでしょうか。

912 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 21:34:59.03 ID:QR9K5cuD.net]
longjump

913 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:05:22.85 ID:HJZ6WUGV.net]
465のlongj【u】mp野郎まだいたのかwww

914 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:22:07.51 ID:G0q9jZbg.net]
バカほど多くの機能を使いたがるってのがプログラマーが解決しなければならん問題だな。

915 名前:デフォルトの名無しさん [2020/01/29(水) 22:27:38 ID:pjwqAxyM.net]
なんだと!
あやまりたまえ!

916 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:29:42 ID:/kkeNUel.net]
使いどころが悪いって指摘ならまだしも、ある機能を使い所で使うなとか言うのは結局俺が分からんからってだけだよね

917 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:32:41 ID:G0q9jZbg.net]
使いどころが本当に正しいか頭使って考えてりゃね。
バカは流行りだから、なんかカッケーから以上に何も考えてないから
レガシー化するわけだ。
んでまた新しいものに飛びついていく。

918 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:33:49 ID:vJ6+7lg9.net]
仕事ならそのコードがメンテできる人が他にどれだけいるかで考える



919 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:49:46 ID:HJZ6WUGV.net]
メンテできるやつが「オレ」以外の全員でもか? アホwバカwww

920 名前:デフォルトの名無しさん [2020/01/29(水) 22:56:36 ID:pjwqAxyM.net]
うむ、お前以外の全員でもだ。

921 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:57:52 ID:vJ6+7lg9.net]
もうそろそろ寝る時間じゃないの?

922 名前:デフォルトの名無しさん [2020/01/29(水) 22:59:28 ID:pjwqAxyM.net]
かなり眠いです。

923 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 23:16:21 ID:gRkDTmNL.net]
C++03しか知らないんだけど
C++17まで修めるにはつるピカ先生の御本を読めばいいですか?

924 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 00:33:56 ID:x7BjuJ+g.net]
cppreferenceで十分

925 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 00:49:18 ID:v/8wm2Cj.net]
どれかひとつじゃなきゃいかんてことはないんだ

926 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 00:52:54 ID:D1C6nROc.net]
つるぴか先生の本は聖典だ
お守りのようなものなので読まなくても買って横においときなさい

927 名前:デフォルトの名無しさん [2020/01/30(Thu) 16:01:21 ID:sB8XzCcn.net]
cppreferenceは循環参照みたいになってて使い辛い

928 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 16:02:36 ID:v/8wm2Cj.net]
実際にお互いに連携するからそう綺麗に木構造にはならんのやで。



929 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 16:09:47 ID:6JJixhdc.net]
1つの情報源しか見てないとサイトから脳へバグが伝染るぞ

930 名前:デフォルトの名無しさん [2020/01/30(Thu) 16:11:35 ID:sB8XzCcn.net]
cppreferenceは調べるためのサイトじゃなくて
忘れてたことを思い出すためのサイトって意味なら
まあまあ同意

931 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:00:38 ID:6JJixhdc.net]
ネットじゃなく、ローカルに俺メモを作るのは基本だね

932 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 17:05:52.06 ID:CwICoFVZ.net]
作らなくてもcppreferenceをcloneすればいいじゃないか

933 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:15:03 ID:6JJixhdc.net]
脳内の理解を、きちんと清書してみると
自分の言ってることがおかしいのに気付くことがよくあるんだよ

934 名前:デフォルトの名無しさん [2020/01/30(Thu) 17:26:38 ID:Z7o7STkD.net]
認知症の可能性が。

935 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:51:33 ID:6JJixhdc.net]
最近の俺はそう言われても仕方ないアホなことをよくやらかすが
まだ若く元気だった頃から、俺メモでセルフチェックはやってるよ

936 名前:デフォルトの名無しさん [2020/01/30(木) 18:12:36.69 ID:Z7o7STkD.net]
みんなのメモを集めれば・・・

937 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 18:36:17 ID:6JJixhdc.net]
女子社員のメモを集めたら最強マニュアルができたなんてエピソード昔聞いたことある

938 名前:はちみつ餃子 mailto:sage [2020/01/30(木) 18:38:54.14 ID:v/8wm2Cj.net]
cpprefjp にコミットしてくれ。



939 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:00:51.60 ID:AVLJabA/.net]
ビャーネ・ストラウストラップ の第四版は、C++11までですよね?

940 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:06:12.13 ID:6JJixhdc.net]
そら当たり前でんがな
承知の上で読む分には何も問題ないけどな

941 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:27:51.04 ID:AVLJabA/.net]
質問者は、C++17まで収めたいと思っているようですが。

942 名前:はちみつ餃子 mailto:sage [2020/01/30(木) 19:31:35.00 ID:v/8wm2Cj.net]
C++11 までわかってればあとは cpprefjp で差分を見れば充分でしょ。

943 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:32:19.73 ID:x7BjuJ+g.net]
03→11の乖離は大きいが14、17はそれほどでもない
20、23でまた大きく変わるが

944 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:36:37.08 ID:6JJixhdc.net]
>>918
御意

945 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 19:51:01 ID:6JJixhdc.net]
しかしメジャー2連くるかねえ
段階的変更という大人の配慮を忘れたら
C++終わると思うが

946 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 19:54:30 ID:R974cSCc.net]
もう変える必要なんかないだろうに

947 名前:デフォルトの名無しさん [2020/01/30(Thu) 19:54:36 ID:Z7o7STkD.net]
まだ終わってなかったんだ。

948 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 19:57:26 ID:v/8wm2Cj.net]
コンセプトとモジュールの導入は C++er の悲願だと思っていたがそうでもないの?
クソみたいなマクロを殺すのがだいぶん上手くいったから次はクソみたいな SFINAE を殺そうという動きだと理解してる。



949 名前:デフォルトの名無しさん [2020/01/30(Thu) 20:01:14 ID:Z7o7STkD.net]
コンセプトは欲しいです。

950 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:25:47.17 ID:/5vTOygk.net]
> ポインタライクなオブジェクトからアドレスを取得する std::to_address() 関数 (P0653R2)

> ポインタライクなオブジェクトを引数にとり、それが表すのと同じアドレスを生ポインタで返す関数
> std::to_address(p) が追加されます。オブジェクトがポインタ型の場合はその値を返し、それ以外の場合、
> std::pointer_traits<Ptr>::to_address(p) の特殊化が定義されていて使えればその戻り値を、
> そうでない場合は std::to_address(p.operator->()) の戻り値を返します。

ついにポインタのことをアドレスって言っても良くなったんだな
俺の学生時代にはポインタの事をアドレスと言って良く怒られたものだ
懐かしい思い出

951 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:36:13.05 ID:rpXeID84.net]
変数は実は二つの値から出来ている

一つは変数の中に入っている値
もう一つは変数のアドレスの値

この二つだ

変数の二重性がC言語の理解を無駄に難しくしてる
アドレスの値が入ってるのは機械語から言えば当然だが
変数なる計算機科学の概念がそこに中途半端にドッキングすると複雑になる
ポインタで躓くヤツが多いのは機械語と高水準言語、その中間に位置するC言語の変数がもつ二重性のせいだ

952 名前:デフォルトの名無しさん [2020/01/30(Thu) 21:07:45 ID:Z7o7STkD.net]
ところでコンセプトって何ですか?

953 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:12:58 ID:jdq+FHbl.net]
ID:Z7o7STkD
このスレはこういう精神病みたいなやつ多くない?

954 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:22:32 ID:cFc5UMZy.net]
>>923
イキった初心者に影響受けすぎ

955 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:34:14 ID:r1oioh07.net]
ハゲの悲願だろ

956 名前:898 mailto:sage [2020/01/30(Thu) 21:40:54 ID:XvvyOq64.net]
皆さん情報ありがとう
ひとまず先生のWeb版「C++入門」をやってみることにしました

957 名前:デフォルトの名無しさん [2020/01/30(Thu) 21:41:00 ID:Z7o7STkD.net]
なんだと!

958 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:11:01 ID:6JJixhdc.net]
operatorの暗黒面を知れという実習問題
ここでみんなでやってみないか?



959 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:19:13 ID:FR6/17T7.net]
単純なキーワード検索できないことぐらいでしょ。暗黒面。

960 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:24:37 ID:R974cSCc.net]
operatorは自明な場合しか使わない
構造体代入のように見えて変数の逐次代入してあって、
後で追加された変数が処理されていなかったりして気づかないとかこわい

961 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:26:34 ID:/1tMjbDQ.net]
暗黙変換と絡んだ地獄を知らんのか

962 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:36:05 ID:Q1Ec3Ov8.net]
>>933
gotoおじさんに答えさせようぜ

963 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:42:34 ID:o/4wL0K/.net]
演算子の多重定義とテンプレートの組み合わせはチョー便利
gotoと同じで手放せない便利さ…!

964 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 23:30:29 ID:HitChVTH.net]
>>925
ポインタとアドレスは別物でしょ

965 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:09:44 ID:3dxm9JOP.net]
同じといや同じだし違うといやぁちがう
普通の脳味噌のやつには適当に「こまけぇことはいいから同じようなもんだ」と
いっとけば通じるが、このスレにウヨウヨいるような偏執狂タイプの連中に
うかつに「同じ」なんていうとポインタをアドレスと同じように整数を足すと
そのぶんアドレス値が進むと思いこむやつがでてくるからうかつに言えないだけ

966 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:10:58 ID:v4E0eL1J.net]
>std::to_address()
   ^^^^^^^
>それが表すのと同じ「アドレス」を「生ポインタ」で返す関数

となってるので公式で
ポインタ=アドレス

967 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:14:07 ID:70BTs5bI.net]
>>941
アドレスの値を生ポインタの型として返す、ということだから、
この文脈では明確に別の意味だろ

968 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:15:57 ID:v4E0eL1J.net]
いや、to_address() という名前の関数が生ポインタを返すから
ポインタ=アドレスで問題ない
そうじゃないんなら、to_pointer() っていう関数名にするだろ、普通
そこが to_address() となってる



969 名前:デフォルトの名無しさん [2020/01/31(金) 00:21:59.86 ID:88e+X9K2.net]
オプションだし。
アドレスを返せないファンシーポインタもあるということでは。

970 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:23:11.07 ID:v4E0eL1J.net]
俺は古いタイプの人間だから俺の感覚で言うと
to_address() って言えば、生のアドレス値が整数型で帰ってくるという低レベルなイメージ
それが生ポインタが帰ってくるというなら to_pointer() としたいところ
ところが生ポインタが帰ってくるのに to_address() となってるわけだから
ああなるほど、時代は変わったなぁ、と
その辺 C++ の人たちはうるさいと思っていたんだがねぇ
もう公式で ポインタ = アドレス なのね

971 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:24:13.53 ID:MjAWY572.net]
pointer指すもの
address指す先
じゃね

972 名前:デフォルトの名無しさん [2020/01/31(金) 00:25:21.16 ID:88e+X9K2.net]
addressofで返ってくるのもポインタだし。

973 名前:デフォルトの名無しさん [2020/01/31(金) 00:27:00.86 ID:88e+X9K2.net]
ファンシーポインタからポインタをとるときに使うもののような気がする。
それが不可能なこともあるからオプションなのでは。

974 名前:デフォルトの名無しさん [2020/01/31(金) 00:35:50.96 ID:88e+X9K2.net]
ポインタ→ポインタあるいはファンシーポインタ・・・pointer_to。
ポインタあるいはファンシーポインタ→ポインタ・・・to_address。
ってことで、ポインタの意味は変わっていないんじゃないのかな。

975 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:42:12.84 ID:v4E0eL1J.net]
簡単に考えれば、生ポインタとスマートポインタetcを区別するために
生ポインタの事をアドレスと言ってるわけだよ
スマートポインタetc -> ポインタ
生ポインタ -> アドレス
っていう格上か格下げか知らんが、一つずらした呼び名になってるんだ

俺みたいな古い人間には受け入れがたいものもあるが
「生ポインタなんか使わねーよスマポこそがポインタであり生ポなんかアドレスとでも呼べばよい」
という今の時代に合わせた考え方なんだろう
スマポetc(ポインタ)から生ポ(アドレス)に変換するから to_address()

ちょうど Java のオブジェクトを指す変数は C++ 的には参照だが
Java の人たちはオブジェクトと言うし、そう考えてる、ってのに似てる

976 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:44:40.52 ID:MjAWY572.net]
javaの変数はポインタだろ
代入したら指す先が変わるし
null持てるし
まあ演算できない劣化版だが

977 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:46:15.67 ID:S0Mdice7.net]
常識なんかどんどん変るからな、とくにC/C++みたいな歴史が長い世界は
ピュアCの時代にはそもそもポインタといえばたしかにその値がアドレス(位置情報)
として機能する値と一致していたがファンシーポインタがある現代では
"ポインタ"の実体とそれが保持したい情報(アドレス情報)は一致すると思わない事が常識になる
"ポインタ"は情報としては何かの位置を差す値を保持はしているがそのオブジェクト
自体は保持しているアドレス情報とはまったく無関係のメモリ空間にある何かである
現代の感覚でいうともし std::to_pointer というネーミングにすると
"は?ポインタをポインタに変換するってどういう意味だよ????"とむしろ混乱の元になるってわけだ

978 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:46:56.64 ID:v4E0eL1J.net]
なんか長々書いたが
今の時代、スマポこそがポインタであって、もはや生ポインタはアドレスなんだよ!
人間も父が爺になって子が父に繰り上がっていくものだから
時代と共に名実ともに出世していくのは普通の事なのかもしれない



979 名前:デフォルトの名無しさん [2020/01/31(金) 00:47:48.87 ID:88e+X9K2.net]
ちょっと江添呼んできて。
電車代出すから。

980 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:51:32 ID:v4E0eL1J.net]
ただどうしても言いたいのは
生ポインタは address じゃなくても
別に raw_pointer とか native_pointer で良くね?
address って言ったら、ただの数値のイメージがあるわ

981 名前:デフォルトの名無しさん [2020/01/31(金) 00:54:08 ID:88e+X9K2.net]
アドレスに無料で型情報をつけるアイデアをひらめいたときは、俺って天才かも?って思ったんだろな。

982 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:54:15 ID:S0Mdice7.net]
>>951
我々の感覚からすると実際その通りなんだが、Java脳の人々にとってはそうではない
彼等はスタックという感覚も非常にうすい
なぜならオブジェクトはスタックにはとれず、常に new (ヒープ)しかないから
我々はクラスのインスタンスがスタックにあるのかヒープにあるのかは無意識に常に
判断する事に慣れているが、これをjava脳の人に説明するのはしばしば困難なときがある

983 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/31(金) 00:54:31 ID:T8rV4kLc.net]
>>929
宣言をヘッダファイルに分割する方式は C++ の意味不明さの根源のひとつじゃない?
それで宣言と定義を分ける運用がキッチリできるのならそれはそれでよかったけど、
テンプレートとインラインの活用でヘッダファイルに書く分量がだいぶん多くなってヘッダファイルってなんだっけって気持ちになる。
このあたりの仕組みは再編すべきでしょ。 モジュールは要るって。

コンセプトもなぁ、型に制約を付けるって普通にやりたいことじゃん?
ちょっとした制約を付けるためにまわりくどいメタプログラミングなんてやりたくないよ。
現代的な静的型付け言語ならあって然るべき機能が順当に入るってだけのこと……
と思ってたら延び延びになっちゃったから待たされてる感じが強い。

984 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:55:51 ID:MjAWY572.net]
javaはヌルポ出すくせにポインタじゃないのか
ポはなんの略なんだろう

985 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:06:28 ID:/0JfR++J.net]
>>941
公式は "A value of a pointer type ... represents the address of the first byte ..."
「ポインタ型の値はアドレスを表す」となってる。
https://timsong-cpp.github.io/cppwp/n4659/basic.compound#3
アドレスに加えて他の情報を持つ可能性は否定されないので、いろんな人が言ってるように
厳密にはイコールではないね。

986 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:08:43 ID:U1PsHN2Y.net]
>>958
要らんなどと一言も言ってないぞ
言い回しがそれっぽいってだけ

だいたいモジュールはまだ20では標準ライブラリには使われないし
「コンセプトはよ来い」とか上級者ぶりたい初心者がよく言うけど、その中に「自分で実際にコンセプトを定義する奴」などほぼ居ないだろ

個人的にはこれまでSFINAEでどうにかしてたメタプログラミング用の要件チェックのコードを
全部コンセプトに直すのクソだるい(便利になるだろうけどエラーメッセージ以外で実感するのはまだまだ先)
だいたい来るのはわかってんだからもう一喜一憂するような話でもない

987 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:08:59 ID:70BTs5bI.net]
今も昔もアドレスとポインタの意味は変わってないんでないの?
「アドレス」=メモリ上のオブジェクトの位置を表す番地(具体的には整数値)
「ポインタ」=
(1)何らかのアドレスを格納したT*型の変数(オブジェクト)。生ポインタ。
(2)「アドレス」と同じ意味で用いる

昔からポインタ(2)の用法でアドレスとポインタを同一視して使われるだけで、ポインタ(1)の用法で「アドレス」とは言わんでしょ。
to_addressの件も、引数として受けとるオブジェクトに対する「アドレス」の値を返すのだからto addressと言う命名で適切だろう。ここでto pointerとしたら直感的に「ポインタ」(1)の意味で解釈されかねず、下手な命名だと思う。

988 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:50:15 ID:kN8V6wKW.net]
言葉遊びというか言葉の意味の違いでかみあってないだけじゃろ

こうした文脈でのアドレスという言葉を
アドレス=機械語コードで使うのと同じ表現で指定されてるメモリアドレス
の意味に無自覚に限定してるのか
アドレス=なんらかの形で指定されてるメモリアドレス
のゆるい意味で使っているかの話じゃ

ポインタはアドレスではない、は前者の意味のアドレスに対する話で
今回の話も含めたC/C++の規格レベルでのアドレスは一貫して後者の意味じゃて



989 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 02:10:23.02 ID:X6LytJOH.net]
>>913
管理者がアレだから��‍♀

990 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 07:12:22 ID:CZDp2h8t.net]
アドレスはオブジェクトの番地
ポインタはアドレスを格納する変数

991 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:39:51.12 ID:v4E0eL1J.net]
しかしアドレスを返すと言いながら
ポインタで返し、型情報が付いてきているわけだが

992 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:42:38.23 ID:v4E0eL1J.net]
緩い意味でのどこかを指し示す意味でのアドレスと言っているなら
スマポもアドレスになるから、to_addressの意味がさらにもう何が何だか

993 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:50:06 ID:1ZJZZZs9.net]
ポインタというよりvoid*だね
void以外のポインタは実体の型により訳が変わる点が
単なるアドレスと違うところで

994 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:02:33 ID:v4E0eL1J.net]
いやでも、to_address() の戻り値の型は
void* ではなくて、ちゃんとした型情報を持った普通のポインタ型だよ
void* にはならないよ

995 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:06:23 ID:yrj+fbAX.net]
またつまんない話で盛り上がってんのな

996 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:42:46 ID:70BTs5bI.net]
>>966
返されるのはあくまでアドレス(番地)の値だろう。型情報としてT*型を持つが、それはC/C++ではすべての式や値が型を持つから当たり前の話であって、型を持つからアドレスとは呼ばないというのはおかしな話だと思う。

997 名前:デフォルトの名無しさん [2020/01/31(金) 11:36:09.10 ID:v4E0eL1J.net]
>型を持つからアドレスとは呼ばないというのはおかしな話だと思う。

つまりは ポインタ=アドレス って事ね

998 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 11:45:36 ID:GGrzMUVS.net]
ポインタってのは変数のことでその中身はアドレスって第3版の時点ではっきり書かれてるぞ
型を持ってるのもあくまで変数の方だ



999 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:34:07 ID:AatGgooz.net]
ヌルポ

1000 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:35:25 ID:v4E0eL1J.net]
それは当たり前
そういう話ではなく
う〜ん、どういえばいいか
例えば、年齢を得る関数 int get_age() ってのがあったとして
俺は別にこれに疑問を持たんし、何とも思わない
to_address
それは int に対して age の方が高度で抽象的な概念になってるから
ところが pointer to_address() の場合はこれが逆になってて
pointer の方が address より高度で抽象的な概念になってる
だからこう、本質的に気持ち悪いというか
先の例で言えば
まぁ適切な例かは分からないが
age_t get_int()
ってなってたらキモイだろう

1001 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:37:15 ID:v4E0eL1J.net]
なんか途中で送信してしまった

それは当たり前
そういう話ではなく
う〜ん、どういえばいいか
例えば、年齢を得る関数 int get_age() ってのがあったとして
俺は別にこれに疑問を持たんし、何とも思わない
to_address() と何が違うか

それは int に対して age の方が高度で抽象的な概念になってるから
ところが pointer to_address() の場合はこれが逆になってて
pointer の方が address より高度で抽象的な概念になってる
だからこう、本質的に気持ち悪いというか
先の例で言えば、まぁ適切な例かは分からないが
age_t get_int()
ってなってたらキモイだろう

1002 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:45:36 ID:GGrzMUVS.net]
なんか勝手に幻想抱いてるけどポインタに入れるものは常にアドレスだから
何もおかしくない

1003 名前:デフォルトの名無しさん [2020/01/31(金) 12:46:08 ID:YmbKsQW3.net]
VLTのto_addressは欲しい

1004 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:46:37 ID:v4E0eL1J.net]
でさ、
age_t get_int() ってのを見たとき
「age_t の中身は int だし
 int を get してそれが age_t に入っているのだから
 解釈としては問題ない」
って感じのことを言ってるレスが結構あったけど
俺はなんか違うような気がするって言ってるわけ

1005 名前:tォルトの名無しさん mailto:sage [2020/01/31(金) 12:48:59 ID:v4E0eL1J.net]
具体的には >>977 とかね
age_t の中身は常に int だから〜的な
だとしても age_t get_int() とは書かんだろう、というのが俺の主張だから

1006 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:07:50 ID:AatGgooz.net]
アドレスとポインタってのは
ageとage_tの関係

1007 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:13:53 ID:GGrzMUVS.net]
じゃあint *p = &a;の&もアドレスを取る演算子じゃなくて
ポインタを取る演算子に名前変えてもらうようにお願いしたら?

1008 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:37:24 ID:aVH6lH01.net]
アドレスはデコーダに入力するビット列 (ハードウエアの概念)
ポインタはアドレスを扱うことを目的とするデータ型 (プログラム言語の概念)

IEEE754とdoubleのような関係だ



1009 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:44:13 ID:MQmpFGUT.net]
通常はポインタが数値であることなんてのは意識せんわな。
リングバッファなんかを取り扱うなら嫌でも意識することになるが。

1010 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:16:27.29 ID:HzrC4w9c.net]
ポインタが数値がどうか意識しないと
リングバッファも作れないようなのが
C++を使うのか

1011 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:34:36 ID:Dscz4LHl.net]
分岐無くす高速化でもしているんじゃね

1012 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:37:20 ID:CZDp2h8t.net]
>>976
その例は逆
アドレスとポインタは本質(イデア)とその表現の関係にある
(イデア <-> 表現)
年齢 <-> 整数
色 <-> RGB値
アドレス <-> ポインタ

この関係に照らせば、年齢を取得する場合は
int get_age();
だし、色を取得する場合は
RGB get_color();
だし、アドレスを取得する場合は
T* get_address();
になる

1013 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:53:37 ID:Nt0XFA2s.net]
その哲学続けるの

1014 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:10:20 ID:xOuBGXY8.net]
>>986
分岐?
それも普通は不要

アドレスを意識するのはDMAなど
ハードウェアでリングバッファを使う時くらい

1015 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:13:50 ID:MjAWY572.net]
ハードウェアとのDMAならポインタにいれるアドレス自体は気にしないだろ
特定の物理メモリを適当な仮想アドレスにマップして使うのだし

1016 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:35:40 ID:xOuBGXY8.net]
DMAが扱うのは物理アドレス

1017 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:42:13 ID:xOuBGXY8.net]
じゃないのもあったりするのか?
チープなマイコンのDMAしか直接扱ったことがなくて

1018 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:51:22 ID:aVH6lH01.net]
仮想アドレスってことはページフォールトがあるってことだろ
OSによってページインされるまで待つことになるが
そこまでペリフェラルで面倒見る必要あるか考えてみそ



1019 名前:◆QZaw55cn4c mailto:sage [2020/01/31(金) 19:51:32 ID:tTpxWp9S.net]
>>933
どれくらいブラックでしょうか?
https://mevius.5ch.net/test/read.cgi/tech/1434079972/21
https://ideone.com/9KIuSD

1020 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:53:30.58 ID:aVH6lH01.net]
未練

1021 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:54:58.34 ID:xOuBGXY8.net]
>>993
フォルトならエラーで止めときゃいいんでない?
そこまでハードで面倒見る必要は無い

1022 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:55:32.42 ID:yrj+fbAX.net]
最近はIOMMUが一般的

1023 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:02:09.40 ID:yrj+fbAX.net]
>>993
おいおいそんなわけないだろ
デバイスがさわるメモリはページアウトしない
でも物理アドレスを使わない理由は何でしょう?
あスレ違いだな

1024 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:34:35 ID:aVH6lH01.net]
>>996
ペリフェラルって何だと思う?

>>998
循環論法だな

1025 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:47.19 ID:Nt0XFA2s.net]
C++相談室 part148
https://mevius.5ch.net/test/read.cgi/tech/1580471646/

1026 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 44日 2時間 57分 54秒

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






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

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

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