C++相談室 part147

レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/12/18(水) 17:56:53.03ID:uFDqtnkl
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

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

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

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

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

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

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

↑え?だってお前、普通ダイナミックリンクするだろ?
"ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
2020/01/28(火) 16:39:59.59ID:jIEBko3c
>>841

私が思いつくのは
・ using は名前を導入するという一巻した意味規則がわかりやすいから
・ using はテンプレートに出来るから
・ typedef だと複雑な型定義をするときに肝心の新しい名前が中の方にあって見づらい
844デフォルトの名無しさん
垢版 |
2020/01/28(火) 16:44:17.01ID:AXFiEKC0
typo。PwelじゃなくてPerl。Perlはめっきり影が薄くなった。
PerlはGit for Windowsにバンドルされているので世の中の大部分のプログラマーがすぐに使える環境にあるのだが、
Git本体はPerl依存を減らす方向に進んでいるらしい。
2020/01/28(火) 16:44:19.67ID:jIEBko3c
>>842
Cプリプロセッサを Java やら Python やらにつこうてもええんやで。

そういえば cpp を使うことを (習慣的に) 想定してる言語って C/C++ を除けばHaskell (GHC) くらい?
汎用プリプロセッサとして使うなら M4 あたりの方が賢いしなぁ……。
2020/01/28(火) 17:01:24.18ID:wcDzWZFN
>>841
たとえばこういう場合
#define STR char*
STR a, b; //これ、どうなる?

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

おまえさんの好みに合うのはどっちだ?
そこに答えがある
2020/01/28(火) 17:02:35.33ID:wcDzWZFN
>>841
あ、すまんtypedefか

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

体裁が揃えやすいのはどっちだと思う?
848デフォルトの名無しさん
垢版 |
2020/01/28(火) 17:12:58.09ID:ijxMtirO
typedef も using もエイリアスという点では
char * と STR の区別が出来ないから後で困る
2020/01/28(火) 17:15:55.87ID:wcDzWZFN
関数ポインタの別名を作るときなんぞ

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

という違いが出る
2020/01/28(火) 17:25:49.44ID:CkOmcsmE
usingを使うと03脳が発狂する
2020/01/28(火) 17:28:55.68ID:jIEBko3c
でもまあヘッダファイルを C と C++ の両方で (マクロで少し切り分けて) 使いたいってことはあるから、
そういうときは typedef にしといた方が共用できる部分が多くて楽ってことはある。
852デフォルトの名無しさん
垢版 |
2020/01/28(火) 17:34:48.43ID:ijxMtirO
>>849
そこだけだと構文糖衣以上のメリットはないよね
2020/01/28(火) 17:46:32.93ID:aDOyN6/W
どっちでもええやん
2020/01/28(火) 17:55:35.77ID:jIEBko3c
>>849
ポインタまわりはテンプレートの記法で書けば統一的でわかりやすい気がするが、
たぶん他の名前とかぶらないようにするためか長めの名前なのがちょっとなぁ……。

using funcp = std::add_pointer_t<int(void)>;
2020/01/28(火) 18:11:09.93ID:IabgCQwH
こういうのもある。
https://qiita.com/Linda_pp/items/44a67c64c14cba00eef1
2020/01/28(火) 18:21:36.61ID:jS595giQ
>>842
PL/1はいいぞ
制御構文としてif程度しか使えないしょぼいC/C++マクロと違ってプリプロセッサでDOループやGOTOとかも使えるしサブルーチンの定義すらできるぞw
https://en.m.wikipedia.org/wiki/PL/I_preprocessor
2020/01/28(火) 19:30:49.93ID:jjtOLQOh
そういえば最近Boost.Preprocessorを使った楽しい黒魔術の話題を聞かない気がする
あれってまだ開発継続してるの?
2020/01/28(火) 20:01:44.11ID:KHL1SP2c
>>849
typedefの方が簡単じゃん
コピペして*付けて()付けるだけ
2020/01/28(火) 20:11:17.93ID:lz3/6EQt
マジでか・・・
2020/01/28(火) 20:52:12.39ID:wcDzWZFN
>>852
おまえさ、usingはテンプレートにできること、まさか知らないの?
2020/01/28(火) 22:15:34.91ID:aDOyN6/W
小学生かよw
2020/01/28(火) 23:16:15.60ID:kww99AmH
CPPってもうメンテされていないようで怖い
#define FOO 123 // comment
とはとうてい恐ろしくてどうしても書けず、
#define FOO 123 /* comment */
と書いてしまうま
2020/01/29(水) 11:25:21.25ID:HJZ6WUGV
N4713
5.2 Phases of translation
3
Each comment is replaced by one space character. New-line characters are retained.
864デフォルトの名無しさん
垢版 |
2020/01/29(水) 13:26:03.72ID:zE4LbE2k
>>860
そこだけって書いてあるのに脳内で読み飛ばずのは
国語の成績悪かったやつの特徴
2020/01/29(水) 13:40:36.68ID:HJZ6WUGV
>>864
おい852本人、「構文糖衣以上のメリットはない」という自分の言葉から逃げるのに
そういう言い訳は見苦しいぞ

今さら吐いた唾を飲むなよ
866デフォルトの名無しさん
垢版 |
2020/01/29(水) 14:13:02.30ID:pjwqAxyM
なぜ喧嘩腰なのか。
2020/01/29(水) 14:13:39.93ID:Yrzd5mtl
喧嘩腰がC++民のデフォだから
868865
垢版 |
2020/01/29(水) 14:36:19.23ID:WeNDQDRz
俺は争いは好まないが、
平和的な話し方をしないやつには
場合にもよるが嫌悪感を露にすることもある
869デフォルトの名無しさん
垢版 |
2020/01/29(水) 16:47:35.32ID:pjwqAxyM
戦士の血がそうさせると言いたいのか。
2020/01/29(水) 16:57:27.48ID:HJZ6WUGV
平和を愛するという点で共感が得られず
こちらが下手に出ることのベネフィットがない相手には容赦は無用ということだ
871デフォルトの名無しさん
垢版 |
2020/01/29(水) 17:24:59.34ID:pjwqAxyM
戦士と戦士が巡り合ってしまうと、バトル・フィールドが形成されるシステムってことか。
2020/01/29(水) 17:32:22.00ID:YYjUIAq1
>>870=ID:VrR0aqw1
マウント取りたいだけの初心者だから相手しない方がいい
2020/01/29(水) 17:39:26.08ID:iDUguYS7
>>867
多くのC++民が喧嘩腰なのでなく、一部の喧嘩好きの戦闘民族のレスが目立ってるだけじゃね。このスレから相手に勝つことだけが目的の無意味なレスの応酬を取り除いたら、1/10も残らないと思うぞ。
2020/01/29(水) 17:54:15.31ID:YYjUIAq1
いや最近のC++に対するちょっと否定的な意見が出ただけで
過剰反応する住民のせいでもあると思うぞ
で、そういう奴に限って間違いを素直に認めたりなどしないからな(代理戦争で議論するやつ特有のパターン
2020/01/29(水) 17:55:39.09ID:HJZ6WUGV
>>872
正直に言えよ、「gotoの何が悪いのか詰問されると困るから」相手しないと
マウント取られそうでヤバいんだろw
2020/01/29(水) 17:59:00.62ID:YYjUIAq1
俺ID:loc7kxiYだからgotoの話はしてないよ
で、前にも聞いたけど反論まだ?
2020/01/29(水) 18:07:15.67ID:HJZ6WUGV
ああ、そのIDのときはSTLの話だったな
そこでマクロの話も出てきていたが
隠すべきものと隠してはならないものの区別がつかない点で
gotoの何が悪いのかわかってないやつとプロファイリングが一致するんだよ

俺の正直な気持ちを教えといてやる
マウント取りたいんじゃなく、頭からアホにしてんだよ
こんなやつをマウントできたからって偉くも何ともねえ
2020/01/29(水) 18:08:48.21ID:YYjUIAq1
いやSTLじゃなくてテンプレートを持て囃しすぎって話だったんだが
まぁいいや
879デフォルトの名無しさん
垢版 |
2020/01/29(水) 18:20:58.67ID:pjwqAxyM
おまえが犯人か。
2020/01/29(水) 18:31:24.45ID:UhF+CSx9
なんかおかしなのがいるよね

圧倒的にこっちが勝っている状態で意味不明な反論?してきて意味不明だから返せないと逃げたとか言う奴
2020/01/29(水) 18:33:57.19ID:8i6C3PjP
5chなんてそんなところ
何を期待してるんだか
2020/01/29(水) 18:50:11.91ID:HJZ6WUGV
明日早いから失礼するとは言ったが
それを謎変換せにゃならん切羽詰まったやつがいるのかw
883デフォルトの名無しさん
垢版 |
2020/01/29(水) 19:02:21.51ID:pjwqAxyM
gotoは初期化を飛び越えることが出来ないと聞きました。
2020/01/29(水) 19:09:37.44ID:cVCtJzaf
usingってテンプレート使えたっけ
885デフォルトの名無しさん
垢版 |
2020/01/29(水) 19:11:38.78ID:pjwqAxyM
使えます。
886デフォルトの名無しさん
垢版 |
2020/01/29(水) 19:12:44.99ID:pjwqAxyM
初期化を飛び越えることができるバーストモードgotoないでしょうか。
2020/01/29(水) 21:34:59.03ID:QR9K5cuD
longjump
2020/01/29(水) 22:05:22.85ID:HJZ6WUGV
465のlongj【u】mp野郎まだいたのかwww
2020/01/29(水) 22:22:07.51ID:G0q9jZbg
バカほど多くの機能を使いたがるってのがプログラマーが解決しなければならん問題だな。
890デフォルトの名無しさん
垢版 |
2020/01/29(水) 22:27:38.33ID:pjwqAxyM
なんだと!
あやまりたまえ!
2020/01/29(水) 22:29:42.55ID:/kkeNUel
使いどころが悪いって指摘ならまだしも、ある機能を使い所で使うなとか言うのは結局俺が分からんからってだけだよね
2020/01/29(水) 22:32:41.05ID:G0q9jZbg
使いどころが本当に正しいか頭使って考えてりゃね。
バカは流行りだから、なんかカッケーから以上に何も考えてないから
レガシー化するわけだ。
んでまた新しいものに飛びついていく。
2020/01/29(水) 22:33:49.38ID:vJ6+7lg9
仕事ならそのコードがメンテできる人が他にどれだけいるかで考える
2020/01/29(水) 22:49:46.87ID:HJZ6WUGV
メンテできるやつが「オレ」以外の全員でもか? アホwバカwww
895デフォルトの名無しさん
垢版 |
2020/01/29(水) 22:56:36.84ID:pjwqAxyM
うむ、お前以外の全員でもだ。
2020/01/29(水) 22:57:52.50ID:vJ6+7lg9
もうそろそろ寝る時間じゃないの?
897デフォルトの名無しさん
垢版 |
2020/01/29(水) 22:59:28.19ID:pjwqAxyM
かなり眠いです。
2020/01/29(水) 23:16:21.00ID:gRkDTmNL
C++03しか知らないんだけど
C++17まで修めるにはつるピカ先生の御本を読めばいいですか?
2020/01/30(木) 00:33:56.60ID:x7BjuJ+g
cppreferenceで十分
2020/01/30(木) 00:49:18.87ID:v/8wm2Cj
どれかひとつじゃなきゃいかんてことはないんだ
2020/01/30(木) 00:52:54.89ID:D1C6nROc
つるぴか先生の本は聖典だ
お守りのようなものなので読まなくても買って横においときなさい
902デフォルトの名無しさん
垢版 |
2020/01/30(木) 16:01:21.46ID:sB8XzCcn
cppreferenceは循環参照みたいになってて使い辛い
2020/01/30(木) 16:02:36.57ID:v/8wm2Cj
実際にお互いに連携するからそう綺麗に木構造にはならんのやで。
2020/01/30(木) 16:09:47.86ID:6JJixhdc
1つの情報源しか見てないとサイトから脳へバグが伝染るぞ
905デフォルトの名無しさん
垢版 |
2020/01/30(木) 16:11:35.43ID:sB8XzCcn
cppreferenceは調べるためのサイトじゃなくて
忘れてたことを思い出すためのサイトって意味なら
まあまあ同意
2020/01/30(木) 17:00:38.03ID:6JJixhdc
ネットじゃなく、ローカルに俺メモを作るのは基本だね
2020/01/30(木) 17:05:52.06ID:CwICoFVZ
作らなくてもcppreferenceをcloneすればいいじゃないか
2020/01/30(木) 17:15:03.76ID:6JJixhdc
脳内の理解を、きちんと清書してみると
自分の言ってることがおかしいのに気付くことがよくあるんだよ
909デフォルトの名無しさん
垢版 |
2020/01/30(木) 17:26:38.98ID:Z7o7STkD
認知症の可能性が。
2020/01/30(木) 17:51:33.22ID:6JJixhdc
最近の俺はそう言われても仕方ないアホなことをよくやらかすが
まだ若く元気だった頃から、俺メモでセルフチェックはやってるよ
911デフォルトの名無しさん
垢版 |
2020/01/30(木) 18:12:36.69ID:Z7o7STkD
みんなのメモを集めれば・・・
2020/01/30(木) 18:36:17.39ID:6JJixhdc
女子社員のメモを集めたら最強マニュアルができたなんてエピソード昔聞いたことある
2020/01/30(木) 18:38:54.14ID:v/8wm2Cj
cpprefjp にコミットしてくれ。
2020/01/30(木) 19:00:51.60ID:AVLJabA/
ビャーネ・ストラウストラップ の第四版は、C++11までですよね?
2020/01/30(木) 19:06:12.13ID:6JJixhdc
そら当たり前でんがな
承知の上で読む分には何も問題ないけどな
2020/01/30(木) 19:27:51.04ID:AVLJabA/
質問者は、C++17まで収めたいと思っているようですが。
2020/01/30(木) 19:31:35.00ID:v/8wm2Cj
C++11 までわかってればあとは cpprefjp で差分を見れば充分でしょ。
2020/01/30(木) 19:32:19.73ID:x7BjuJ+g
03→11の乖離は大きいが14、17はそれほどでもない
20、23でまた大きく変わるが
2020/01/30(木) 19:36:37.08ID:6JJixhdc
>>918
御意
2020/01/30(木) 19:51:01.92ID:6JJixhdc
しかしメジャー2連くるかねえ
段階的変更という大人の配慮を忘れたら
C++終わると思うが
2020/01/30(木) 19:54:30.05ID:R974cSCc
もう変える必要なんかないだろうに
922デフォルトの名無しさん
垢版 |
2020/01/30(木) 19:54:36.77ID:Z7o7STkD
まだ終わってなかったんだ。
2020/01/30(木) 19:57:26.16ID:v/8wm2Cj
コンセプトとモジュールの導入は C++er の悲願だと思っていたがそうでもないの?
クソみたいなマクロを殺すのがだいぶん上手くいったから次はクソみたいな SFINAE を殺そうという動きだと理解してる。
924デフォルトの名無しさん
垢版 |
2020/01/30(木) 20:01:14.28ID:Z7o7STkD
コンセプトは欲しいです。
2020/01/30(木) 20:25:47.17ID:/5vTOygk
> ポインタライクなオブジェクトからアドレスを取得する std::to_address() 関数 (P0653R2)

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

ついにポインタのことをアドレスって言っても良くなったんだな
俺の学生時代にはポインタの事をアドレスと言って良く怒られたものだ
懐かしい思い出
2020/01/30(木) 20:36:13.05ID:rpXeID84
変数は実は二つの値から出来ている

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

この二つだ

変数の二重性がC言語の理解を無駄に難しくしてる
アドレスの値が入ってるのは機械語から言えば当然だが
変数なる計算機科学の概念がそこに中途半端にドッキングすると複雑になる
ポインタで躓くヤツが多いのは機械語と高水準言語、その中間に位置するC言語の変数がもつ二重性のせいだ
927デフォルトの名無しさん
垢版 |
2020/01/30(木) 21:07:45.27ID:Z7o7STkD
ところでコンセプトって何ですか?
2020/01/30(木) 21:12:58.09ID:jdq+FHbl
ID:Z7o7STkD
このスレはこういう精神病みたいなやつ多くない?
2020/01/30(木) 21:22:32.86ID:cFc5UMZy
>>923
イキった初心者に影響受けすぎ
2020/01/30(木) 21:34:14.92ID:r1oioh07
ハゲの悲願だろ
931898
垢版 |
2020/01/30(木) 21:40:54.77ID:XvvyOq64
皆さん情報ありがとう
ひとまず先生のWeb版「C++入門」をやってみることにしました
932デフォルトの名無しさん
垢版 |
2020/01/30(木) 21:41:00.44ID:Z7o7STkD
なんだと!
2020/01/30(木) 22:11:01.65ID:6JJixhdc
operatorの暗黒面を知れという実習問題
ここでみんなでやってみないか?
2020/01/30(木) 22:19:13.93ID:FR6/17T7
単純なキーワード検索できないことぐらいでしょ。暗黒面。
2020/01/30(木) 22:24:37.20ID:R974cSCc
operatorは自明な場合しか使わない
構造体代入のように見えて変数の逐次代入してあって、
後で追加された変数が処理されていなかったりして気づかないとかこわい
2020/01/30(木) 22:26:34.32ID:/1tMjbDQ
暗黙変換と絡んだ地獄を知らんのか
2020/01/30(木) 22:36:05.95ID:Q1Ec3Ov8
>>933
gotoおじさんに答えさせようぜ
2020/01/30(木) 22:42:34.01ID:o/4wL0K/
演算子の多重定義とテンプレートの組み合わせはチョー便利
gotoと同じで手放せない便利さ…!
2020/01/30(木) 23:30:29.18ID:HitChVTH
>>925
ポインタとアドレスは別物でしょ
2020/01/31(金) 00:09:44.31ID:3dxm9JOP
同じといや同じだし違うといやぁちがう
普通の脳味噌のやつには適当に「こまけぇことはいいから同じようなもんだ」と
いっとけば通じるが、このスレにウヨウヨいるような偏執狂タイプの連中に
うかつに「同じ」なんていうとポインタをアドレスと同じように整数を足すと
そのぶんアドレス値が進むと思いこむやつがでてくるからうかつに言えないだけ
2020/01/31(金) 00:10:58.09ID:v4E0eL1J
>std::to_address()
   ^^^^^^^
>それが表すのと同じ「アドレス」を「生ポインタ」で返す関数

となってるので公式で
ポインタ=アドレス
2020/01/31(金) 00:14:07.32ID:70BTs5bI
>>941
アドレスの値を生ポインタの型として返す、ということだから、
この文脈では明確に別の意味だろ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況