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/27(月) 10:29:36.60ID:nw3WJhJD
>>783
[](int b) { return b;}; だけなら明らかにラムダ式の関数ポインタだけど
それをオーバーロードか何かの+で虚無と足し算してんの?

*[](int b) { return b;};
これは掛け算でもするの?
2020/01/27(月) 10:44:46.19ID:EVyt1Wcb
関数ポインタではない
スマートオブジェクトへのポインタだ
ただの関数ポインタならファンクタとして機能しない
2020/01/27(月) 10:54:24.33ID:j8/I9hQ5
>>811
単項演算子の+だろ
2020/01/27(月) 11:22:15.92ID:PH8qw3WE
>>811
はちさんが答え書いてるよ
>>793
2020/01/27(月) 15:33:55.69ID:LGsyX1lU
ラムダはデリゲートじゃねー。一個しか保持できんわな。
と遅レス。
2020/01/27(月) 15:47:35.27ID:uUAjQCPR
ステートレスラムダって用語が出てこないんだね
stateless lambda
2020/01/27(月) 15:57:13.10ID:uUAjQCPR
>>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とは違う
2020/01/27(月) 16:03:26.06ID:uUAjQCPR
lvalue transformationだ、これは失礼
2020/01/27(月) 16:10:02.82ID:e3ktUGSY
>>817
おっ。 そうなんや。
2020/01/27(月) 16:16:57.88ID:uUAjQCPR
g++だと、これ通るw
auto closure = []{ return 0; };
using funcp = int(*)();
test(closure.operator funcp());
2020/01/27(月) 16:29:40.06ID:Xjs2F3Iq
[]の後()不要だっけ?
2020/01/27(月) 16:30:47.83ID:an2yFfMH
引数がないなら省略可能
2020/01/27(月) 17:56:21.86ID:e3ktUGSY
>>814
ワイはどちらかというとはちみつより餃子の方にアイデンティティがあるので…・…
2020/01/27(月) 18:43:12.12ID:Be1ain3H
>>822
勉強になりました。
2020/01/27(月) 19:32:41.69ID:EVyt1Wcb
>>812
×スマートオブジェクトへのポインタだ
○スマートオブジェクトだ
2020/01/28(火) 09:26:07.54ID:ClFSc0Tc
しょうもないシンタックスシュガーの話が好きな奴多いね。
2020/01/28(火) 10:18:33.58ID:iJMYk+LH
gotoおじさんまた登場だよ
2020/01/28(火) 10:25:01.77ID:ciqR13vi
>>827
踊るポンポコリンの「インチキおじさん登場」を思い出した。あんまり間違ってないだろう。
2020/01/28(火) 10:44:40.68ID:wcDzWZFN
ボコられるの好きなんか? 変態めw
2020/01/28(火) 10:49:48.26ID:ivYV6JvB
物事は適切に伝えろ
それが出来ないなら口を開けるなカスども
2020/01/28(火) 10:52:11.84ID:ivYV6JvB
ラムダが関数ポインタとかほざいてるカスが居てびっくりしたわ
2020/01/28(火) 11:05:50.35ID:AXFiEKC0
>>831
インライン展開されるから?
2020/01/28(火) 11:12:08.47ID:tLdUC4IA
>>831
>>783 のこと?
834デフォルトの名無しさん
垢版 |
2020/01/28(火) 11:23:05.28ID:ijxMtirO
個人的にはテンプレートなのに糞のSTLよりも
マクロωのQtの方がうまくやれてる実用的だと思う
835デフォルトの名無しさん
垢版 |
2020/01/28(火) 11:24:46.27ID:ijxMtirO
>>758
typedefに夢観すぎ
2020/01/28(火) 11:30:08.83ID:jIEBko3c
まあ個人的な感想は個人的な感想だからなぁ。
俺は Qt に対してなんやこのクソはとしか思わんが、
広く使われている現実がある以上は実用性は高いんだろう。 たぶん。
2020/01/28(火) 11:38:43.71ID:9AkNqXrr
Qtのmocは何か嫌だ
2020/01/28(火) 11:45:43.67ID:wcDzWZFN
>>835
ああ、usingを使うべきだったな
typedefなんてダセーもんもういらねえって
頭ではわかってるんだが長年の癖でぽろっと出ちまう
839デフォルトの名無しさん
垢版 |
2020/01/28(火) 12:03:55.62ID:AXFiEKC0
マクロを名前空間に閉じ込められるようになれば、マクロの害悪の何割かは減らせるはず。
2020/01/28(火) 15:45:53.30ID:wcDzWZFN
ということは名前空間をプリプロセッサが処理せにゃあかんな
translation phaseを根本的にぶっ壊さないと無理だと思うが
2020/01/28(火) 16:34:43.00ID:ogCuVxV7
typedefが駄目で、usingが好まれる理由を教えてください。
842デフォルトの名無しさん
垢版 |
2020/01/28(火) 16:38:19.30ID:AXFiEKC0
否定的な視点から散々な言われ方をされがちなC/C++のマクロだけど、
Java/C#/Python/Pwel/Rubyに似たテキスト変換がないことに物足りなさを感じることが多いのも事実。
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
最近の俺はそう言われても仕方ないアホなことをよくやらかすが
まだ若く元気だった頃から、俺メモでセルフチェックはやってるよ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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