次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/
C++相談室 part141
https://mevius.5ch.net/test/read.cgi/tech/1550772463/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part142
■ このスレッドは過去ログ倉庫に格納されています
2019/04/01(月) 22:17:05.84ID:wmfpIKt/
284デフォルトの名無しさん
2019/04/14(日) 20:25:38.94ID:xbTIwD1q >>283
関数内では const& であることを根拠に最適化に使えないのは合ってる。
でもだからといって const& で受け取ったものを書き換えてもよいとは言えない。
void f1(int const&);
int f2()
{
int const x = 1;
f1(x);
return x;
}
x は int const なので、 f2() の return x は f1() が const_cast して x を
書き換える可能性を無視して return 1 に最適化できる、という話。
BarWithBigData const x; が >>275 のコピーコンストラクタに渡された後も
const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; を無視して書き換え前の
m_pBigData が使われる可能性がある。
関数内では const& であることを根拠に最適化に使えないのは合ってる。
でもだからといって const& で受け取ったものを書き換えてもよいとは言えない。
void f1(int const&);
int f2()
{
int const x = 1;
f1(x);
return x;
}
x は int const なので、 f2() の return x は f1() が const_cast して x を
書き換える可能性を無視して return 1 に最適化できる、という話。
BarWithBigData const x; が >>275 のコピーコンストラクタに渡された後も
const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; を無視して書き換え前の
m_pBigData が使われる可能性がある。
285デフォルトの名無しさん
2019/04/14(日) 20:33:37.36ID:mEGAHR/Y 規格が云々言わなくても、9割のプログラマの意図に反してるで終わる話
頼むからそんなコードは頭の中にしまっといてほしい
頼むからそんなコードは頭の中にしまっといてほしい
286デフォルトの名無しさん
2019/04/14(日) 20:37:26.81ID:6Gooiv09 つまりはそれ自体は問題ないが、constとして生成したオブジェクトを渡した瞬間にダメになると言うことか
で、渡すこと自体は制限できないから
プログラム中に罠を仕掛ける事が出来るわけだ。
で、渡すこと自体は制限できないから
プログラム中に罠を仕掛ける事が出来るわけだ。
287デフォルトの名無しさん
2019/04/14(日) 20:39:28.07ID:6Gooiv09 てか、mutable付けとけば問題なくなるな。
288デフォルトの名無しさん
2019/04/14(日) 20:40:25.78ID:6Gooiv09 const_castも要らないし良いことずくめじゃないかw
289デフォルトの名無しさん
2019/04/14(日) 20:45:26.81ID:xCvd3oj/ >>285
わかりたそうする。>>275のケースは素直にムーブコンストラクタを使えば良い。または↓でもだいたいおk
BarWithBigData::BarWithBigData(BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
だいたいというのはムーブコンストラクタ有りの規格のC++コンパイラで↑の非constなコピコンだけ書く警告が出ることがあるからイヤン、
>>286
>つまりはそれ自体は問題ないが
いや問題がある可能性が潰せていない。
void f1(int const&);
int f2()
{
int x = 1;
f1(x);
return x;
}
(xがconst無し)の場合であってもf1(x)がxを書き換えない前提の最適化がf2()にかかったりすると、
f1(x)内で変更したxの値がreturnされるxの値に反映されない可能性がある(f1(x)の呼び出し前後でxがレジスタに乗ったままであるとか、
わかりたそうする。>>275のケースは素直にムーブコンストラクタを使えば良い。または↓でもだいたいおk
BarWithBigData::BarWithBigData(BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
だいたいというのはムーブコンストラクタ有りの規格のC++コンパイラで↑の非constなコピコンだけ書く警告が出ることがあるからイヤン、
>>286
>つまりはそれ自体は問題ないが
いや問題がある可能性が潰せていない。
void f1(int const&);
int f2()
{
int x = 1;
f1(x);
return x;
}
(xがconst無し)の場合であってもf1(x)がxを書き換えない前提の最適化がf2()にかかったりすると、
f1(x)内で変更したxの値がreturnされるxの値に反映されない可能性がある(f1(x)の呼び出し前後でxがレジスタに乗ったままであるとか、
290デフォルトの名無しさん
2019/04/14(日) 21:11:05.08ID:xbTIwD1q >>289
その x の型は const じゃないから return x は最適化できないよ。
その x の型は const じゃないから return x は最適化できないよ。
291デフォルトの名無しさん
2019/04/14(日) 21:48:29.79ID:uvZ0DMTi >>281
わからないです。それはメリット?
わからないです。それはメリット?
292デフォルトの名無しさん
2019/04/15(月) 01:36:50.54ID:20PlYkfs ラムダに11個の引数を参照で渡すのと、キャプチャするの、どっちが速いかな?
293デフォルトの名無しさん
2019/04/15(月) 02:40:05.27ID:e1RUhzz1 測ればいいだろ
295デフォルトの名無しさん
2019/04/15(月) 02:59:24.82ID:XbOtvNIU 参照渡しな時点でその場で呼び出すのだろ。
最適化かければ結局同じようなアセンブリになるよ。
最適化かければ結局同じようなアセンブリになるよ。
296デフォルトの名無しさん
2019/04/15(月) 09:13:13.35ID:+swIGlrx それはわからんだろ
ブロック待ちするかもしれないわけで
ブロック待ちするかもしれないわけで
297デフォルトの名無しさん
2019/04/15(月) 19:29:41.18ID:8vw8m6ly 引数で渡すとスタックに積まれる可能性があるけど、キャプチャするとそうならないのでは。
298デフォルトの名無しさん
2019/04/15(月) 19:36:28.26ID:XbOtvNIU いや、形式上は無名クラスにキャプチャを変数としてぶちこんだもののインスタンス作ってメンバ関数のoperator()呼ぶのだから、スタックは使うだろ。
299デフォルトの名無しさん
2019/04/15(月) 20:08:47.93ID:Auf6nZgf C言語じゃダメなんですか!
300デフォルトの名無しさん
2019/04/15(月) 20:20:07.70ID:NSErsM12 いいよ
301デフォルトの名無しさん
2019/04/15(月) 20:25:01.30ID:IXPbMXJW 無駄に複雑にしとるな。
302デフォルトの名無しさん
2019/04/16(火) 01:01:07.13ID:ZVmLHBMP >>298
じゃあ、引数で渡すとスタックに積まれない可能性があるので、速い場合もあるのでは?
じゃあ、引数で渡すとスタックに積まれない可能性があるので、速い場合もあるのでは?
303デフォルトの名無しさん
2019/04/16(火) 02:15:09.28ID:WfxisTJA 海外だと、Javaに負けて、Rustに圧倒的実力で追いやられるC++
304デフォルトの名無しさん
2019/04/16(火) 02:27:07.22ID:WfxisTJA305デフォルトの名無しさん
2019/04/16(火) 15:01:04.19ID:RMLQoksE 本当に、コンパイル時に何かしたいならRustだけどね
306デフォルトの名無しさん
2019/04/16(火) 18:28:44.44ID:ZVmLHBMP >>304
Java圧倒的な強さだな。
Java圧倒的な強さだな。
307デフォルトの名無しさん
2019/04/16(火) 18:30:10.89ID:ZVmLHBMP 全部足すと500%位になりそうだから、複数の言語を使う人が多いんだろね。
308デフォルトの名無しさん
2019/04/16(火) 21:18:54.40ID:dFuxCqAG 江添が転職できずに困っとるw
まあこいつがクソなだけでc++の問題ってわけじゃないんだがイメージは悪いわな。
まあこいつがクソなだけでc++の問題ってわけじゃないんだがイメージは悪いわな。
309デフォルトの名無しさん
2019/04/16(火) 21:36:49.03ID:jMhdT2ep こうしてみるとホッシーの全タクシー移動ってのは理に適ってるな
バカな公害に捕まる心配が減る
バカな公害に捕まる心配が減る
310デフォルトの名無しさん
2019/04/16(火) 23:25:27.27ID:LsPOsuul なんか私怨でもあるんかいな
311デフォルトの名無しさん
2019/04/16(火) 23:41:35.10ID:InK+cNH/ 喫煙者が目に入った途端癇癪起こして殴り掛りかかる狂犬なんだっけ?
312デフォルトの名無しさん
2019/04/17(水) 00:03:12.24ID:vVzTJh6n 知らね
よく人を招いているようだし揉めたことがある人も少なくはないんじゃいか
よく人を招いているようだし揉めたことがある人も少なくはないんじゃいか
313はちみつ餃子 ◆8X2XSCHEME
2019/04/17(水) 01:12:11.58ID:UWuCQ9XR >>310-311
当事者の様々な主張の食い違いがあるので、結論としては「わからない」。
少なくとも彼自信の主張としては掴みかかってきたのを払いのけた結果として眼鏡が割れたということになっている。
(江添が殴りかかったわけではなく、むしろ防衛した側、と江添は主張している。)
江添が煙草について過激な意見を持っているのは確かだが、
シェアハウス内で禁煙場所であると合意がなされている場所で煙草を吸った客人がいたというところは当事者全体が認めているようだ。
当事者の様々な主張の食い違いがあるので、結論としては「わからない」。
少なくとも彼自信の主張としては掴みかかってきたのを払いのけた結果として眼鏡が割れたということになっている。
(江添が殴りかかったわけではなく、むしろ防衛した側、と江添は主張している。)
江添が煙草について過激な意見を持っているのは確かだが、
シェアハウス内で禁煙場所であると合意がなされている場所で煙草を吸った客人がいたというところは当事者全体が認めているようだ。
314デフォルトの名無しさん
2019/04/17(水) 08:21:52.75ID:DaACwh1w 恨みというかまともにコード書かない奴がクソ意見で現場荒らすって事自体がクソだと思うわけで、
まあその反動で現場で働くことができないって事になればザマァって思う。
まあその反動で現場で働くことができないって事になればザマァって思う。
315デフォルトの名無しさん
2019/04/17(水) 09:46:31.27ID:vVzTJh6n 現場を荒らしてる?
316デフォルトの名無しさん
2019/04/17(水) 09:53:30.15ID:vVzTJh6n どのプロジェクトにも参加してないと認識してたけど乗り込んでケチつけてたりするのかな
まあ俺ドワンゴとは縁が無いからどこで何してようが関係ないけど
まあ俺ドワンゴとは縁が無いからどこで何してようが関係ないけど
317デフォルトの名無しさん
2019/04/17(水) 17:08:02.09ID:I32j715f C++がPython抜いて3位 - 4月TIOBE言語ランキング 2019/04/17 10:55 後藤大地
https://news.mynavi.jp/article/20190417-810363/
TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。
4月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20190417-810363/images/001.jpg
2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。
長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。
https://news.mynavi.jp/article/20190417-810363/
TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。
4月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20190417-810363/images/001.jpg
2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。
長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。
318デフォルトの名無しさん
2019/04/17(水) 17:11:50.34ID:hoIwj+sG >>317
何回だからみんな何回もググってるんだよ
何回だからみんな何回もググってるんだよ
319デフォルトの名無しさん
2019/04/17(水) 18:34:58.84ID:LllPIzo0 俺が検索しまくったからだろうな。
320デフォルトの名無しさん
2019/04/17(水) 19:59:29.56ID:fJF68+PR 今もしインターネットが完全にシャットダウンされると
プログラム書けなくなるプログラマけっこう数いるだろうな
プログラム書けなくなるプログラマけっこう数いるだろうな
322デフォルトの名無しさん
2019/04/17(水) 20:35:09.94ID:P5fp2rRi どうやってダウンロードしたの?
巡集じゃできなかった…
巡集じゃできなかった…
323デフォルトの名無しさん
2019/04/17(水) 20:39:18.77ID:WWgiT6Ow githubじゃない?
324デフォルトの名無しさん
2019/04/17(水) 21:27:54.32ID:P5fp2rRi そうなんだ、ありがとう
325デフォルトの名無しさん
2019/04/19(金) 02:16:29.43ID:/DYxLH/O どういたしまして。
326デフォルトの名無しさん
2019/04/19(金) 08:26:54.03ID:gmGy9oTC 江添は職質裁判でも、不当判決が出たので控訴するみたい
警官は、複数人で口裏合わせするから、民間人は勝てない
漏れもやられたけど、酒酔い運転でも、漏れが機械に息を吹き掛けても、ランプが点かない。
そこで、警官がクルッと後ろを向くと、ランプが点く
そっと見たら、酔っ払い警官が、自分で息を吹きかけて、ランプを点ける
こういう裁判で争っている人もいるけど、
警官は複数人で口裏合わせするから、絶対に勝てない!
警官は皆、このやり方で出世しとる
警官は、複数人で口裏合わせするから、民間人は勝てない
漏れもやられたけど、酒酔い運転でも、漏れが機械に息を吹き掛けても、ランプが点かない。
そこで、警官がクルッと後ろを向くと、ランプが点く
そっと見たら、酔っ払い警官が、自分で息を吹きかけて、ランプを点ける
こういう裁判で争っている人もいるけど、
警官は複数人で口裏合わせするから、絶対に勝てない!
警官は皆、このやり方で出世しとる
327デフォルトの名無しさん
2019/04/19(金) 08:33:03.47ID:PWe5dNBv ありゃ普通に対応してりゃ済む話だと思うがね。
やってることは完全に当たり屋だろ。
やってることは完全に当たり屋だろ。
328デフォルトの名無しさん
2019/04/19(金) 09:27:15.01ID:biH+fvR8 >>326
Rubyバカの人か。相変わらず思い込みが激しく、言っていることが滅茶苦茶だな。
Rubyバカの人か。相変わらず思い込みが激しく、言っていることが滅茶苦茶だな。
329デフォルトの名無しさん
2019/04/19(金) 12:05:02.85ID:rPSCrubJ どんだけ江添好きなの?w
330デフォルトの名無しさん
2019/04/19(金) 13:28:48.91ID:W5tFDDw/ 日本でC++真剣にやってるのって彼だけだし
331はちみつ餃子 ◆8X2XSCHEME
2019/04/19(金) 13:41:25.74ID:mypEidUJ だけ、というのは言い過ぎだと思うが、
日本語で最新の C++ の事情を本にしているのは江添くらいしかいないからなぁ。
江添本人は自分のことを実務家ではなく教育者だと考えているようだし、
(肩書は何なんだろ? エヴァンジェリストのようにも見えるが……)
今のポストは妥当なとこだろ。
そのままやってくれればありがたいもんだ。
日本語で最新の C++ の事情を本にしているのは江添くらいしかいないからなぁ。
江添本人は自分のことを実務家ではなく教育者だと考えているようだし、
(肩書は何なんだろ? エヴァンジェリストのようにも見えるが……)
今のポストは妥当なとこだろ。
そのままやってくれればありがたいもんだ。
332デフォルトの名無しさん
2019/04/19(金) 13:41:50.58ID:i8rhoxHy つまり他の日本人は竹刀とか木刀ってことか。
333デフォルトの名無しさん
2019/04/19(金) 13:50:35.12ID:rPSCrubJ 江添個人の裁判は完全にスレチなんだよなあ
仮に違法な取り締まりだと判断されても警察のやり方が改まるわけもないだろうし
仮に違法な取り締まりだと判断されても警察のやり方が改まるわけもないだろうし
334デフォルトの名無しさん
2019/04/19(金) 14:15:26.68ID:JVA9qfGz 江添すなわちC++なのだから
江添の話題は全てC++の話題だょ
江添の話題は全てC++の話題だょ
335デフォルトの名無しさん
2019/04/19(金) 15:08:33.32ID:j263LUSd 宗教の話はよそでやってくれないか
336デフォルトの名無しさん
2019/04/19(金) 15:16:01.57ID:JwgM4FAg もう少しc++の話をしてくれと思う事もある
337デフォルトの名無しさん
2019/04/19(金) 18:50:10.05ID:/DYxLH/O はちみつさんも真剣にやってると思います。
338デフォルトの名無しさん
2019/04/19(金) 19:16:13.92ID:yj9Iz3m1 こんな事言うと勘違いされそうだが、はちみつ餃子はちゃんとしてると思うよ
C++に関しておかしなことは言っていない
ていうか、はちみつ餃子ってものすごい不味そうなんだがそんなの本当にあるのだろうか・・?
C++に関しておかしなことは言っていない
ていうか、はちみつ餃子ってものすごい不味そうなんだがそんなの本当にあるのだろうか・・?
339デフォルトの名無しさん
2019/04/19(金) 19:17:39.46ID:j263LUSd 肉料理にはちみつを入れること自体はわりと普通
量の問題
量の問題
340デフォルトの名無しさん
2019/04/19(金) 19:28:19.17ID:PWe5dNBv いや明らかに開発してねーだろって感覚じゃねーか。
まあここならそれでもいいんだろうけれど。
まあここならそれでもいいんだろうけれど。
341はちみつ餃子 ◆8X2XSCHEME
2019/04/19(金) 19:51:37.44ID:mypEidUJ >>338
ググればわかるけどはちみつ餃子はそこそこありふれた料理だよ。
その昔、 higepon が自分でもどうして higepon などと名乗ったかわからない
と述べていたので、そのくらい意味不明感じにしようと思って適当に
思いついた語をコテハンにした。
Scheme スレが本来の住処なので当初は SCHEME餃子 と名乗っていたけど、
他のスレにも顔を出すようになったのでなんとなくはちみつ餃子になった。
およそ意味不明な組合せにしたつもりだったんだけど、
実際にある料理だとは後になってから知った。
ググればわかるけどはちみつ餃子はそこそこありふれた料理だよ。
その昔、 higepon が自分でもどうして higepon などと名乗ったかわからない
と述べていたので、そのくらい意味不明感じにしようと思って適当に
思いついた語をコテハンにした。
Scheme スレが本来の住処なので当初は SCHEME餃子 と名乗っていたけど、
他のスレにも顔を出すようになったのでなんとなくはちみつ餃子になった。
およそ意味不明な組合せにしたつもりだったんだけど、
実際にある料理だとは後になってから知った。
342デフォルトの名無しさん
2019/04/19(金) 21:11:54.81ID:fEN/Hp+M initializer_listを引数に取るオブジェクトを引数に取る関数で
下記のケースでUniversal Initializationが効かないのですが
何かいい手はないでしょうか
using KVPCollectionType = std::map<std::string, std::string>;
void f(const KVPCollectionType&& kvps = {});
f(); // OK
f({}); // OK
f(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
f({{"key1", "value1"},{"key2","value2"}}); // NG これをやりたい!!
下記のケースでUniversal Initializationが効かないのですが
何かいい手はないでしょうか
using KVPCollectionType = std::map<std::string, std::string>;
void f(const KVPCollectionType&& kvps = {});
f(); // OK
f({}); // OK
f(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
f({{"key1", "value1"},{"key2","value2"}}); // NG これをやりたい!!
343デフォルトの名無しさん
2019/04/19(金) 21:13:17.21ID:UQpKfTQY エピ…いや何でもない
344デフォルトの名無しさん
2019/04/19(金) 21:17:05.52ID:fEN/Hp+M すみません、訂正です
× void f(const KVPCollectionType&& kvps = {});
○ void f(const KVPCollectionType& kvps = {});
× void f(const KVPCollectionType&& kvps = {});
○ void f(const KVPCollectionType& kvps = {});
345デフォルトの名無しさん
2019/04/19(金) 21:22:53.30ID:/DYxLH/O アークエンジェルに搭載されてるstd::variant<>。
346デフォルトの名無しさん
2019/04/19(金) 22:49:42.25ID:DWxUZ3pl wandboxで試したらclangでもgccでもc++11 -pedanticで通ったけど?
347デフォルトの名無しさん
2019/04/20(土) 00:01:37.25ID:a7z6m7l4 ごめんなさい、ごめんなさい。本当にごめんなさい。
勝手に脳内で要約したのが間違えまくってました
正確には以下の通りです。
#include <map>
#include <memory>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
int main()
{
auto ok = std::make_shared<c>(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
auto ng = std::make_shared<c>({{"key1", "value1"},{"key2","value2"}}); // NG!!!
}
勝手に脳内で要約したのが間違えまくってました
正確には以下の通りです。
#include <map>
#include <memory>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
int main()
{
auto ok = std::make_shared<c>(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
auto ng = std::make_shared<c>({{"key1", "value1"},{"key2","value2"}}); // NG!!!
}
348デフォルトの名無しさん
2019/04/20(土) 10:47:21.77ID:5oa1AZjP 全てのバグを絶滅せよ。
「今日は死に日和」好評発売中。
「今日は死に日和」好評発売中。
349デフォルトの名無しさん
2019/04/20(土) 11:08:43.59ID:3kBWifqd C++11や14を使ってる人、コンパイラは何ですか。
350デフォルトの名無しさん
2019/04/20(土) 11:25:30.96ID:m+a2EYsq ゲームエンジン作ってる人いますか
351デフォルトの名無しさん
2019/04/20(土) 11:30:38.02ID:5oa1AZjP clとgcc。
352デフォルトの名無しさん
2019/04/20(土) 13:20:15.93ID:lwVpLCzw c+11以降はバージョン違うと全く別のコンパイラ
353デフォルトの名無しさん
2019/04/20(土) 13:23:19.12ID:8Vh3F1FF Twitchでプログラミングしてるやつの中でゲームエンジンも居たような
354はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:30:02.11ID:7hm/FBJ7 >>347
テンプレートの推論ルールとして「関数テンプレートのパラメータとして波カッコの初期化子リストを渡して型推論させることはできない。」
ということになっている。 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
make_shared の実際の型は template <class T, class... Args> shared_ptr<T> make_shared(Args&&... args); なので、
このとき Args が推論できない以上はどうにもならん。
型を固定した専用の関数をはさんでこんな感じにするくらいのことしか思いつかないな。
#include <map>
#include <memory>
#include <initializer_list>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
c(const std::initializer_list<typename KVPCollectionType::value_type>){}
};
std::shared_ptr<c> make_c_shared(std::initializer_list<typename KVPCollectionType::value_type> a) {
return std::make_shared<c>(std::move(a));
}
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
テンプレートの推論ルールとして「関数テンプレートのパラメータとして波カッコの初期化子リストを渡して型推論させることはできない。」
ということになっている。 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
make_shared の実際の型は template <class T, class... Args> shared_ptr<T> make_shared(Args&&... args); なので、
このとき Args が推論できない以上はどうにもならん。
型を固定した専用の関数をはさんでこんな感じにするくらいのことしか思いつかないな。
#include <map>
#include <memory>
#include <initializer_list>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
c(const std::initializer_list<typename KVPCollectionType::value_type>){}
};
std::shared_ptr<c> make_c_shared(std::initializer_list<typename KVPCollectionType::value_type> a) {
return std::make_shared<c>(std::move(a));
}
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
355はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:32:51.70ID:7hm/FBJ7356はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:35:42.76ID:7hm/FBJ7 >>347
ちゃんと考えたら >>354 はいらんことしとるな……
これで充分か
#include <map>
#include <memory>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
ちゃんと考えたら >>354 はいらんことしとるな……
これで充分か
#include <map>
#include <memory>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
357デフォルトの名無しさん
2019/04/21(日) 08:19:35.76ID:jJhiZdMc358デフォルトの名無しさん
2019/04/22(月) 23:55:58.01ID:uyfay/gq メンバアクセスにthis->つける?
359デフォルトの名無しさん
2019/04/23(火) 00:01:58.24ID:cW1os5L0 エディタの補完機能使いたいときにたまにそうやって補完して最後に消す。
が、たまに忘れる。
が、たまに忘れる。
360デフォルトの名無しさん
2019/04/23(火) 00:02:35.52ID:BSgCsXpz IDEの都合で付ける事が良くある
付けないと補完候補多すぎて
付けないと補完候補多すぎて
361デフォルトの名無しさん
2019/04/23(火) 00:09:08.10ID:JKfCESEZ ああなるほど
補完候補を絞るのには便利ですね
補完候補を絞るのには便利ですね
362デフォルトの名無しさん
2019/04/23(火) 18:16:01.64ID:Wx+D+gzo メンバであるという保証ができるので付ける
363デフォルトの名無しさん
2019/04/23(火) 19:39:28.32ID:cE0Yu4R7 メンバ名は頭にm_付けろみたいなクソルールよりずっといいと思うので付けるべき
364デフォルトの名無しさん
2019/04/23(火) 19:42:38.83ID:JKfCESEZ 仮引数と別の名前つけるのだるいからm_は別に良いと思う
365デフォルトの名無しさん
2019/04/23(火) 20:02:01.86ID:8XemHsTC メンバ変数に専用の色付けたらいいじゃん
366デフォルトの名無しさん
2019/04/23(火) 20:13:43.06ID:sktjqElV 引数そのままメンバに入れるなら引数に_つけてvar(_var)って初期化してるわ
>>366
それって var(var) でも問題ないんですよ…
それって var(var) でも問題ないんですよ…
368さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/23(火) 21:18:06.78ID:DAl4rXky バーバー
369デフォルトの名無しさん
2019/04/23(火) 21:32:08.36ID:BSgCsXpz >>367
綴り間違えたら悲惨なことになった
綴り間違えたら悲惨なことになった
370デフォルトの名無しさん
2019/04/23(火) 21:34:08.78ID:3k1+3l7a ハンガリアン記法は、入力補完のないエディタ上での可読性を高めるのに役立ってるでしょ。今でも。
371デフォルトの名無しさん
2019/04/23(火) 21:35:06.30ID:8XemHsTC ゴミ使ってる奴のことなんか知らん
372デフォルトの名無しさん
2019/04/23(火) 21:36:10.37ID:BSgCsXpz あれ可読性落ちるだろ
373デフォルトの名無しさん
2019/04/23(火) 21:39:11.30ID:lLaZpSEH 定期的にunsignedとsigned混在させてハマるアホをみるとハンガリアン必要だと思うわ
374デフォルトの名無しさん
2019/04/23(火) 21:40:37.34ID:lAbUfbw7 C#で入力補完のないエディタがどうとかさすがにナンセンスでは
だってvisual studio使うじゃん
だってvisual studio使うじゃん
375デフォルトの名無しさん
2019/04/23(火) 21:41:16.53ID:ZkNEZW45 どっちでもいいわ。
大抵の場合そんなとこに気を使わんといかんコードになってることのが問題。
大抵の場合そんなとこに気を使わんといかんコードになってることのが問題。
376デフォルトの名無しさん
2019/04/23(火) 21:45:47.89ID:lLaZpSEH >>375
こういうやつがそのうちハマって丸1日つぶしたりするんだよなw
こういうやつがそのうちハマって丸1日つぶしたりするんだよなw
377デフォルトの名無しさん
2019/04/23(火) 21:51:11.17ID:8XemHsTC >>373
関係なくて草
関係なくて草
378デフォルトの名無しさん
2019/04/23(火) 21:55:03.06ID:lLaZpSEH 関係あることわかってなくて草
379デフォルトの名無しさん
2019/04/23(火) 21:55:54.04ID:8XemHsTC 黙ってろゴミw
380デフォルトの名無しさん
2019/04/23(火) 21:59:25.62ID:ZkNEZW45 >>376
だから人を嵌めるようなコード書くなつってんだよばか。
だから人を嵌めるようなコード書くなつってんだよばか。
381デフォルトの名無しさん
2019/04/23(火) 22:06:36.15ID:lLaZpSEH382デフォルトの名無しさん
2019/04/23(火) 22:53:19.60ID:ZkNEZW45 いつの間にかハンガリアンが言語仕様になってた。。
383デフォルトの名無しさん
2019/04/23(火) 23:10:13.77ID:lLaZpSEH ハンガリアンも防御的なプログラミングと考えたら悪くないよ
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【速報】高市首相 青森震度6強地震で負傷者30人 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【高市悲報】しかし、香港の火災とか青森の地震で不謹慎な事を言う奴が日中にいたら、そいつこそが世界の「癌」だよな [784715804]
- 気象庁・高市内閣「この後311級の地震の可能性があります。北海道〜関東の人は1週間は地震が来てもすぐ逃げられる格好をしてください」 [597533159]
- 寒さしのげる場所があって食べ物も豊富にあるなら熊は冬眠しないの?
- 冨岡ゆうんやが ニックネーム考えてや
- 常盤貴子の全盛期ってどれくらい凄かったの?
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
