[表示 : 全て 最新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ほどしか増えない

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

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

684 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:01:45 ID:HjVTkheD.net]
>>664
#include <string>
using namespace std::literals::string_literals;

685 名前:デフォルトの名無しさん [2020/01/25(土) 14:25:20.83 ID:cxLY0DeL.net]
とまあこのように、江添先生の本は、すべて理解してる人にしか理解できません。

686 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:32:55.37 ID:HbHTz3pb.net]
幼稚園児が大学の図書館へ行っても読める本ないのと同じだな
無理しないで「ぐりとぐら」くらいから始めとけ

687 名前:デフォルトの名無しさん [2020/01/25(土) 14:53:05.04 ID:cxLY0DeL.net]
はい、江添釣れたー。

688 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:56:16.54 ID:HbHTz3pb.net]
残念、俺は江添じゃない
興味のツボは奴と似てるとこあるけどね

689 名前:デフォルトの名無しさん [2020/01/25(土) 15:45:58 ID:136JVXqR.net]
>>666
そんなこと書いてなかった

690 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 15:52:56.31 ID:NV/40SqZ.net]
普通の文字列リテラルが char 型の配列であるというのは (初心者には) 分かり難いので、
いっそ一貫して std::string 型で扱うというのは悪くない方針だと思う。

だけどユーザー定義リテラルという枠組みもそれはそれでだいぶんアレな仕様なんで、どちらにしてもクソだよな。

691 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:06:56 ID:bbXnDJeu.net]
こんばんは、後藤です。
ところで ""s だけでは片手落ちな気がする
ちゃんと u""s みたいに文字コード指定しなかったら
string_literalsを使う意味ないような気がするんだけど
わしだけか

692 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:09:53 ID:lY+ErK7r.net]
>>656
関数で切り出してreturnしろカスが。



693 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:11:03 ID:gDStPvND.net]
uがなかった時代でもなんとかなってたんだから意味なくはないだろ

694 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:30:12.05 ID:HjVTkheD.net]
江添本は初心者向けと謳っていながらこのくらいわからん奴は帰れみたいな意思を感じる

695 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:50:56.75 ID:lY+ErK7r.net]
初心者に内容を理解してほしいんじゃなくて俺すげーってことだけ理解しろってスタンスだからな。
むしろ理解されると大したことやってないのがバレると思ってるくらいだろ。

696 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:53:23.32 ID:XvrYCXmQ.net]
C++はしたことがないが数学博士号のやつと高校卒業を一緒くたにするのが問題だろう
それぞれの学力で開始すべき章を設定するべきだ
できないとしたら著者の無能なので落胆することはない

697 名前:デフォルトの名無しさん [2020/01/25(土) 16:58:57.12 ID:cxLY0DeL.net]
初心者がC++に入り込まないよう防御壁として江添先生が存在するのではないか。

698 名前:デフォルトの名無しさん [2020/01/25(土) 17:03:37.43 ID:cxLY0DeL.net]
C++の道を行きたいなら、俺を倒

699 名前:してから行け。
ってことでは。
[]
[ここ壊れてます]

700 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 17:15:21.67 ID:lY+ErK7r.net]
張り合ったら明らかにプログラム書けなくなるだろ。。誤誘導すぎるわ。

701 名前:デフォルトの名無しさん [2020/01/25(土) 17:27:59.47 ID:cxLY0DeL.net]
C++の前に立ちはだかる屈強な門番。
俺を倒せるものでなければ入門を認めぬ。

702 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 18:19:41.41 ID:NV/40SqZ.net]
グダグダな C++ をグダグダじゃなく説明するのは無理だろ。
どの本を見たって少なからずグダグダか物足りないかどっちか。



703 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:23:50.63 ID:qDxhJtbw.net]
まぁ、実際の現場だと、c++なんてちょっと便利なC言語としてしか使われてないよ
未だにcharポインタやmalloc乱立してるし参照型すら使われてない。
クラスなんて関数まとめるnamespace代わりだし

704 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 18:25:32.23 ID:NV/40SqZ.net]
ひと昔前にstaticおじさんの話がバズったことあるけど、
たぶん現実にはけっこういるんだろうな。

705 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:26:39.08 ID:mY899MyV.net]
>>684
そんな現場もあるんだなw

706 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:32:00.68 ID:4TCxFoUN.net]
ちゅうか、C++ 使うなら charポインタは必須だ。
使いたくないなら 別の言語を使ったほうがいい。

707 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:43:08.64 ID:HjVTkheD.net]
Cのライブラリを使わない限り文字情報はすべてstringで済む
モダンC++の仕様はそういう範囲内での使用も許容している

708 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:45:55.89 ID:mY899MyV.net]
c++ではchar*は文字列とは関係ない場面でよく使う

709 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:51:29.47 ID:t8q8NVJB.net]
>>684
>クラスなんて関数まとめるnamespace代わりだし
さすがにそれはダメだと思うが・・
そういう現場確かにあるが

>>688
とか言いながらstringは途中からnull終端を保証したりして、
結局Cの資産を無視できなかったという

710 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:53:42.93 ID:mY899MyV.net]
もともとc_strはnull終端されてた
それに合法的にnull文字を含むことが出来る時点でnull終端ではない

711 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 20:51:03 ID:r+ZvoXtB.net]
>>684
いくらなんでもレベル低すぎるぞ

712 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 20:55:09 ID:0oKBD7Vk.net]
>>684
私のことですね…
new をグローバルオーバーロードしたら、その中では malloc() するしかないですからね…



713 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:03:28 ID:gDStPvND.net]
>>693
> >>684
> 私のことですね…
> new をグローバルオーバーロードしたら、その中では malloc() するしかないですからね…

するしかない?
mallocはどうやって実装されてると思う?

714 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:16:51 ID:HbHTz3pb.net]
>>693
おまえさ、何のために new をグローバルオーバーロードしてるの?
malloc でいいんなら、そんな必要ねえだろ

おまえアホか

715 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:25:16 ID:gDStPvND.net]
まぁデバッグの手法としてなくはない
ただその手のものは既存のものが腐るほどあるからそれ使った方がいい

716 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 22:50:36 ID:0oKBD7Vk.net]
>>694
>するしかない?
ええ、するしかないと思いますよ

>>695
>何のために new をグローバルオーバーロードしてるの?
無論 delete と対になっているかどうかをチェックするためですよ、こういうのは自分では出来ていると思っていても時々お漏らししてしまいますからね
まあ、C++11 以降は手抜きして make_shared することを覚えてしまってずいぶんと時間が経ちましたが、それでも生ポを使うときは new/delete をオーバーロードしますね
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 line.143〜150

717 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 22:53:24 ID:0oKBD7Vk.net]
>>696
昔の borland c++ にはまさしくそのための、なんていうんだったんでしたっけ、そういうコンパイルスイッチがあって便利に使っていましたが、
今評価版を入手すると、それは clang ベースに変更されて、その機能がなくなってしまったんですよね…

718 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 23:01:38 ID:0oKBD7Vk.net]
>>698
思い出した、bcc32 CodeGuard でしたっけ

719 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:17: ]
[ここ壊れてます]

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
質問に答えてないな
字面の読み替えは評判悪く
意味の読み替えが広く受け入れられているのは
ダブスタか?






[ 続きを読む ] / [ 携帯版 ]

前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