次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
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++相談室 part137
■ このスレッドは過去ログ倉庫に格納されています
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
686デフォルトの名無しさん
2018/08/10(金) 12:20:52.35ID:LvXbuhRM687デフォルトの名無しさん
2018/08/10(金) 12:21:22.72ID:nFJe7QfE688デフォルトの名無しさん
2018/08/10(金) 13:06:07.39ID:I9yy5anA >>686
HANDLEならINVALID_HANDLE_VALUEがデフォでしょ
HANDLEならINVALID_HANDLE_VALUEがデフォでしょ
689デフォルトの名無しさん
2018/08/10(金) 14:25:58.73ID:NKvoiPPS >>685
std:char_traits<char>::length(const char*)
std::char_traits<wchar_t>::length(const wchar_t*)
こういう関数の選択は引数によらない
wchar_t x[2];
std::char_traits<char>::length(x); //error
std:char_traits<char>::length(const char*)
std::char_traits<wchar_t>::length(const wchar_t*)
こういう関数の選択は引数によらない
wchar_t x[2];
std::char_traits<char>::length(x); //error
690デフォルトの名無しさん
2018/08/10(金) 14:45:17.93ID:LvXbuhRM >>688
だからそんなことを期待しちゃダメってこと
だからそんなことを期待しちゃダメってこと
691デフォルトの名無しさん
2018/08/10(金) 15:10:51.55ID:ayqbPQA0 >>689
wchar_tを使うとわかっていてテンプレート引数にcharを入れるのはおかしくない?
wchar_tを使うとわかっていてテンプレート引数にcharを入れるのはおかしくない?
692デフォルトの名無しさん
2018/08/10(金) 18:49:42.52ID:hMB1uQwa693デフォルトの名無しさん
2018/08/10(金) 18:53:21.62ID:NKvoiPPS >>691
std::char_traits::length(x); //error
std::char_traits::length(x); //error
694デフォルトの名無しさん
2018/08/10(金) 19:18:52.44ID:7XXHmUWL おまいらコミュ障かよ
695デフォルトの名無しさん
2018/08/10(金) 19:19:41.62ID:JXFPQdyt std::char_traits<wchar_t>::length(x);//0
697デフォルトの名無しさん
2018/08/10(金) 21:04:31.61ID:U4E1U51M このメンツで開発とか地獄だろうな。。
698デフォルトの名無しさん
2018/08/11(土) 08:11:36.74ID:dFDFw6X4 ガイジしかおらんやんけ…
699デフォルトの名無しさん
2018/08/11(土) 11:00:44.96ID:X6Hz/xY3 char_traitsの件、どうも話通じてないなあ
700デフォルトの名無しさん
2018/08/11(土) 11:25:54.74ID:4zfRZVUI 多重定義, オーバーロード - Wikipedia
https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9
質問者が解決の糸口を見つけられればそれでいい。
>>684 のような間違った用語定義を主張して、何の生産性にも貢献しない ID:NKvoiPPS みたいな人は迷惑。
https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9
質問者が解決の糸口を見つけられればそれでいい。
>>684 のような間違った用語定義を主張して、何の生産性にも貢献しない ID:NKvoiPPS みたいな人は迷惑。
701デフォルトの名無しさん
2018/08/11(土) 12:18:16.68ID:X6Hz/xY3 >>700
Wikiより規格票な
N3337 13 Overloading [over]
When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded.
JIS X3014:2003 13. 多重定義
同じ名前を指定した異なる宣言が同一有効範囲内に複数ある場合,その名前は,多重定義されているという。
言わんでも解るだろうから、説教臭いことはあえて黙っておく
Wikiより規格票な
N3337 13 Overloading [over]
When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded.
JIS X3014:2003 13. 多重定義
同じ名前を指定した異なる宣言が同一有効範囲内に複数ある場合,その名前は,多重定義されているという。
言わんでも解るだろうから、説教臭いことはあえて黙っておく
702はちみつ餃子 ◆8X2XSCHEME
2018/08/11(土) 13:37:39.73ID:zO3XAoAm たしかに >>670 のいう「オーバーロード」は用語の使い方が誤っているが、
それはそうとしてオーバーロードっていう言葉の中にバーローという言葉が入ってるから、
オーバーロードの話題が出るたびに俺の中のコナン君がバーローとささやくので、
お前らにも同じ呪いをかけてやろう。
それはそうとしてオーバーロードっていう言葉の中にバーローという言葉が入ってるから、
オーバーロードの話題が出るたびに俺の中のコナン君がバーローとささやくので、
お前らにも同じ呪いをかけてやろう。
703デフォルトの名無しさん
2018/08/11(土) 13:41:08.56ID:xFvEQmr2 真実はいつも多重定義されない!
704デフォルトの名無しさん
2018/08/11(土) 13:43:33.49ID:xFvEQmr2 std::char_traits<char>::length()と
std::char_traits<wchar_t>::length()は
互いに同じ名前(a single name)なんやろうか…
std::char_traits<wchar_t>::length()は
互いに同じ名前(a single name)なんやろうか…
705デフォルトの名無しさん
2018/08/11(土) 15:53:50.27ID:xFvEQmr2 >>663
>どうしてこう融通が利かないのか。設計のせいか・・・Orz
ユーザーコードにクラスの中で定義された型(Base::TypeやNext::Type)を見せるのはやめて、
NextやBaseのオブジェクトのふるまいとしてだけ見せたら宜しいかと
ふるまいだけを見せる抽象化はまず純論理的にはポリモーフィズムで逝ける
次の段階として、呼び出しの度にvtblの間接参照が一発入る遅さを嫌い、高速化したいという要求が生じるかもしれないが
そのときは知らん(テンプレートによるダックタイピングでさらに戦うこともできるが同一翻訳短以内でのcloseが前提でありかつクラスの継承の恩恵にはなかなかあずかれない
>どうしてこう融通が利かないのか。設計のせいか・・・Orz
ユーザーコードにクラスの中で定義された型(Base::TypeやNext::Type)を見せるのはやめて、
NextやBaseのオブジェクトのふるまいとしてだけ見せたら宜しいかと
ふるまいだけを見せる抽象化はまず純論理的にはポリモーフィズムで逝ける
次の段階として、呼び出しの度にvtblの間接参照が一発入る遅さを嫌い、高速化したいという要求が生じるかもしれないが
そのときは知らん(テンプレートによるダックタイピングでさらに戦うこともできるが同一翻訳短以内でのcloseが前提でありかつクラスの継承の恩恵にはなかなかあずかれない
706デフォルトの名無しさん
2018/08/11(土) 15:58:27.82ID:xFvEQmr2 なおふるまいだけを見せる抽象化ができないオブジェクト指向言語とか無いから他言語への移植性とかを気にするのは狂気の杞憂
ていうか非オブジェクト指向言語であっても関数ポインタと構造体が使えれば似たようなことはいつでもできる
ていうか非オブジェクト指向言語であっても関数ポインタと構造体が使えれば似たようなことはいつでもできる
707デフォルトの名無しさん
2018/08/11(土) 18:59:43.05ID:X6Hz/xY3 非オブジェクト指向言語とオブジェクト指向言語で
最終的に作れるものと作れないものは
その違いによる差は全くないんだが
最終的に作れるものと作れないものは
その違いによる差は全くないんだが
708デフォルトの名無しさん
2018/08/11(土) 22:22:49.51ID:xFvEQmr2709デフォルトの名無しさん
2018/08/11(土) 22:42:05.15ID:4zfRZVUI 技術系の板でID使い分けする惨めさよ
710707
2018/08/12(日) 07:44:03.92ID:2Xoj+DoI 俺の偽物がいるな
711デフォルトの名無しさん
2018/08/12(日) 20:13:35.92ID:KnTIebYQ レイトレーシングをやってみたいんですけど、何もない状態から画像を生成するのと、画像処理(opencv)でやろうと思ってます。
前者と後者とも資料は見つけたのですが、どうやって勉強するのがおすすめですか?
opencvで例えばアイドルの画像をCGっぽく、またはアニメっぽくはできたりするのでしょうか?
前者と後者とも資料は見つけたのですが、どうやって勉強するのがおすすめですか?
opencvで例えばアイドルの画像をCGっぽく、またはアニメっぽくはできたりするのでしょうか?
712デフォルトの名無しさん
2018/08/12(日) 22:21:45.58ID:MDfKI+a6713デフォルトの名無しさん
2018/08/12(日) 23:17:59.82ID:RJjtK8Ko714デフォルトの名無しさん
2018/08/13(月) 00:27:19.20ID:p4qIMBze Late racing.
715デフォルトの名無しさん
2018/08/13(月) 00:28:37.24ID:p4qIMBze 視線の追跡したほうが効率よさそうな気がする。
目に入らない光は無いも同然だし。
目に入らない光は無いも同然だし。
716デフォルトの名無しさん
2018/08/13(月) 00:31:27.67ID:sn7iPKpv 一番シンプルなレイトレの実装は視線追跡だからな
717デフォルトの名無しさん
2018/08/13(月) 00:33:31.73ID:sn7iPKpv718デフォルトの名無しさん
2018/08/13(月) 00:36:44.24ID:XxWurSAu トイレの覗きかと一瞬勘違いしましたw
719デフォルトの名無しさん
2018/08/13(月) 00:43:21.17ID:MxL7CAkg ちゃんとミラーボールの映像から抽出しないと
720デフォルトの名無しさん
2018/08/13(月) 01:42:46.41ID:+YkMTMKz 遠い昔だが、いい基礎解説本があったんだがタイトルが思い出せない
98用のCのソースコードも附録でついてた
98なんかもってなかったから、Xlibで動かした記憶がある
その書籍はサーフェイスモデルもレイトレーシングも基礎から丁寧に書いてある良書だった
サーフェイスモデルについては、ものすごい力を入れて書かれてた良い本だった
ワイヤーフレームから陰面消去、さらに双三次スプラインでの補間、そしてレンダリング、バンプマッピング
さらに3次アフィン変換つかってモーションキーで動くとこまで解説してる
基礎で必要な内容は、ほぼすべて網羅されてて、バカでもチョンでも分かるように書かれてた
で、レイトレーシングはサーフェイスモデルより超簡単だからな
このスレのアホが難しいといってるだけで
むしろレイトレーシングはバカでもチョンでも分かる
98用のCのソースコードも附録でついてた
98なんかもってなかったから、Xlibで動かした記憶がある
その書籍はサーフェイスモデルもレイトレーシングも基礎から丁寧に書いてある良書だった
サーフェイスモデルについては、ものすごい力を入れて書かれてた良い本だった
ワイヤーフレームから陰面消去、さらに双三次スプラインでの補間、そしてレンダリング、バンプマッピング
さらに3次アフィン変換つかってモーションキーで動くとこまで解説してる
基礎で必要な内容は、ほぼすべて網羅されてて、バカでもチョンでも分かるように書かれてた
で、レイトレーシングはサーフェイスモデルより超簡単だからな
このスレのアホが難しいといってるだけで
むしろレイトレーシングはバカでもチョンでも分かる
721デフォルトの名無しさん
2018/08/13(月) 01:48:30.63ID:GxmByJ3O せっかく良い質問なのに、
あまり汚い言葉で、アホとかバカとかチョンとか言わなない方がいいよ…
あまり汚い言葉で、アホとかバカとかチョンとか言わなない方がいいよ…
722デフォルトの名無しさん
2018/08/13(月) 02:07:33.90ID:Zz4bK/+7 レイトレならこれもおすすめ
https://qiita.com/mebiusbox2/items/89e2db3b24e4c39502fe
https://qiita.com/mebiusbox2/items/89e2db3b24e4c39502fe
723デフォルトの名無しさん
2018/08/13(月) 02:52:34.70ID:J+SKK2b0 Oh!Xにソース付きで事細かく書いてあってだな
724デフォルトの名無しさん
2018/08/13(月) 03:13:41.34ID:bfksj/4u725デフォルトの名無しさん
2018/08/13(月) 03:39:58.88ID:p4qIMBze レイトレーシングに限らないけど、アルゴリズムの勉強にはLinuxが良いですよ。
726デフォルトの名無しさん
2018/08/13(月) 04:00:12.36ID:3+Hm6Wut 紹介されてる本全部古い...
linuxだと何がいいの?
linuxだと何がいいの?
727デフォルトの名無しさん
2018/08/13(月) 04:14:38.66ID:p4qIMBze Kernelソースが勉強になります。
728デフォルトの名無しさん
2018/08/13(月) 04:15:34.47ID:J+SKK2b0 openclとグラボの勉強したら?
レイトレーシングの大量の計算するのがグラボでしょ
レイトレーシングの大量の計算するのがグラボでしょ
729デフォルトの名無しさん
2018/08/13(月) 06:59:52.73ID:k7xD/gvg >>724
アスキーの『応用グラフィックス』か。入門・実習・応用の3冊シリーズだね。
各巻のつながりは緩いから順番に読まなくてもほぼ大丈夫だけど。
確かに良い本だった気がするけど、なにぶん読んだのが昔なんで
いくらも理解できなかったわ。今ならもう少しマシだと思いたい。
大学近くの古本屋でなら見つかるかも。
アスキーの『応用グラフィックス』か。入門・実習・応用の3冊シリーズだね。
各巻のつながりは緩いから順番に読まなくてもほぼ大丈夫だけど。
確かに良い本だった気がするけど、なにぶん読んだのが昔なんで
いくらも理解できなかったわ。今ならもう少しマシだと思いたい。
大学近くの古本屋でなら見つかるかも。
730デフォルトの名無しさん
2018/08/13(月) 07:05:01.34ID:JKsq+WjD畏(おそ)れ多くも森喜朗元帥閣下の有り難いお言葉:
「オレはIT(いっと)のことはよく知らんがぁ
時計をたった2時間早めるだけだろぉ?
オレなら1分あれば済ませるぞぉ!
サマータイムの何がそんなに難しいんだぁ?」
システム開発現場の勇ましい言葉:
「畏れ多くも森元帥閣下のご下命を賜った以上
現場SEは有り難いお言葉に勇気百倍
デスマーチとバンザイ突撃を敢行いたします!」
「マラソン選手さまが涼しい時間に走るためなら
現場SEの千人や二千人死んでも本望です!
私たちSEの生命など、虫けらと同じです!」
「畏れ多くも森元帥閣下の有り難いご下命にしたがって
最前線システム開発現場で殉職出来るとしたら
現場SEとしてこれに勝る喜びはありません!」
日本という国では
体育会系が一番偉い(森元帥閣下、田中理事長)
文科系がその次で(財務省、教授会)
理科系は最底辺の奴隷とされています(現場SE)
731デフォルトの名無しさん
2018/08/13(月) 07:26:44.37ID:WtSMvp2C レイトレーシングがサーフェイスモデルより簡単とか
半透明物体内部の散乱表現に踏み込んだらそんな寝言は言えないんじゃ…
半透明物体内部の散乱表現に踏み込んだらそんな寝言は言えないんじゃ…
732デフォルトの名無しさん
2018/08/13(月) 10:07:11.78ID:uSgRX9ke みんな例外と戻り値ってどう使い分けてる?
例えば以下みたいな、ファイルからとある要素を抜き出して返す関数とかで
std::string extractHogeFromFile(const std::string& file_path)
俺だったら以下みたいにしてるけど、いまいちしっくり来てないとも思ってる
ファイルが見つからない→例外
要素が見つからない→例外
要素が見つかるけど空→空
みんな例外クラスとかはstd::exception継承して自作してるのかな?
バックトレースやコード行数とれないのが使いにくくて、javaっぽい例外クラスを自作してる
例えば以下みたいな、ファイルからとある要素を抜き出して返す関数とかで
std::string extractHogeFromFile(const std::string& file_path)
俺だったら以下みたいにしてるけど、いまいちしっくり来てないとも思ってる
ファイルが見つからない→例外
要素が見つからない→例外
要素が見つかるけど空→空
みんな例外クラスとかはstd::exception継承して自作してるのかな?
バックトレースやコード行数とれないのが使いにくくて、javaっぽい例外クラスを自作してる
733デフォルトの名無しさん
2018/08/13(月) 10:16:27.95ID:Z0vFISs/ 例外は発生時の動作が遅い
734デフォルトの名無しさん
2018/08/13(月) 10:17:50.65ID:gsTSbRo/ exceptionを直に継承ということは滅多にないな
system_errorがあるからerror_categoryの派生クラスを作れば大抵足りる
__FILE__ や __LINE__ のようなデバッグ情報を入れたくてマクロを作ることはあるけどね
空という概念ならoptionalはいかが?
template <typename ELEMENT>
std::optional<ELEMENT> extractHogeFromFile(std::path) noexcept(false);
system_errorがあるからerror_categoryの派生クラスを作れば大抵足りる
__FILE__ や __LINE__ のようなデバッグ情報を入れたくてマクロを作ることはあるけどね
空という概念ならoptionalはいかが?
template <typename ELEMENT>
std::optional<ELEMENT> extractHogeFromFile(std::path) noexcept(false);
735デフォルトの名無しさん
2018/08/13(月) 10:36:14.97ID:uSgRX9ke >>733
発生時は確かに遅いね
ただ、あくまでも例外的なものだけに利用をとどめておけば、そんなに発生するものでもないし、その場合は戻り値をifで見るより命令数が少なくなるから、結果的に高速になるって俺は考えてる
>>734
exception直に継承も少し疑問もってるんだけど、std::exceptionのcatchで全部取りやすいからこうしてるんだよね
...でcatchは乱暴な気がするし
ただ、調べて見た感じsystem_errorも使いやすそうね。最近開発で使えるようになったC++11だからこんなのあるの気づいてなかったわ
std::optionalとかあったんだね、ちょっと調べてみるわありがとう
発生時は確かに遅いね
ただ、あくまでも例外的なものだけに利用をとどめておけば、そんなに発生するものでもないし、その場合は戻り値をifで見るより命令数が少なくなるから、結果的に高速になるって俺は考えてる
>>734
exception直に継承も少し疑問もってるんだけど、std::exceptionのcatchで全部取りやすいからこうしてるんだよね
...でcatchは乱暴な気がするし
ただ、調べて見た感じsystem_errorも使いやすそうね。最近開発で使えるようになったC++11だからこんなのあるの気づいてなかったわ
std::optionalとかあったんだね、ちょっと調べてみるわありがとう
736デフォルトの名無しさん
2018/08/13(月) 11:20:33.79ID:NtbFT1j9737デフォルトの名無しさん
2018/08/13(月) 11:32:34.68ID:D1VtDJH7 ファイル開くのはそれ自体がすっごい遅い操作だから例外のコストなんか無視できるのと
開き損なうとそれ以降の処理が致命的な失敗になりやすい
そういう操作のエラー通知が例外に向いてる
開き損なうとそれ以降の処理が致命的な失敗になりやすい
そういう操作のエラー通知が例外に向いてる
738デフォルトの名無しさん
2018/08/13(月) 11:47:23.91ID:2dORgvS5 >>733
例外発生時の速度が問題になるなら例外の使い方を見直した方がいい
例外発生時の速度が問題になるなら例外の使い方を見直した方がいい
739デフォルトの名無しさん
2018/08/13(月) 12:31:28.26ID:Z0vFISs/740デフォルトの名無しさん
2018/08/13(月) 12:35:13.84ID:Z0vFISs/ 例外は仕組みを入れるだけで、
例外が発生しなくてもオーバーヘッドが発生する環境がほとんどなので
組み込みだとわざと無効にすることも多い
x86の64bitはオーバーヘッドが無い代わりに
例外発生時は極端に遅い
一度測定してみるとその遅さがよく分かる
そういうことがわかっていれば
どこに使うべきかがおのずとわかる
例外が発生しなくてもオーバーヘッドが発生する環境がほとんどなので
組み込みだとわざと無効にすることも多い
x86の64bitはオーバーヘッドが無い代わりに
例外発生時は極端に遅い
一度測定してみるとその遅さがよく分かる
そういうことがわかっていれば
どこに使うべきかがおのずとわかる
741デフォルトの名無しさん
2018/08/13(月) 12:41:46.34ID:WtSMvp2C 低水準ライブラリに属するべき関数が例外みたいな高級なしくみに依存するのは美しくないキモス
システム設計とかアプリの基本設計レベルで例外の種類とcatch箇所とcatch時の処理を定義して使うなら良い
が、呼び出し側でif文を書きたくないからという理由でイミフな例外定義を行うと、結局第三者に正しく使ってもらえない
キモス
システム設計とかアプリの基本設計レベルで例外の種類とcatch箇所とcatch時の処理を定義して使うなら良い
が、呼び出し側でif文を書きたくないからという理由でイミフな例外定義を行うと、結局第三者に正しく使ってもらえない
キモス
742デフォルトの名無しさん
2018/08/13(月) 12:48:07.11ID:WtSMvp2C 例外のオーバーヘッドについてはこれな↓↓↓
ttp://zakkas783-blog-blog.tumblr.com/post/3870295160/c-の例外ハンドリングとパフォーマンス
>>740の通り例外処理の裏側の実装には2つの潮流があるんじゃ
ttp://zakkas783-blog-blog.tumblr.com/post/3870295160/c-の例外ハンドリングとパフォーマンス
>>740の通り例外処理の裏側の実装には2つの潮流があるんじゃ
743デフォルトの名無しさん
2018/08/13(月) 13:03:58.12ID:u8inRKlo 制御をすっ飛ばす必然性があるほどの例外的状況に限るのが吉だろうな。
返値で返せないものを返すのに使うなら検査例外のような保証が欲しいところ。
返値で返せないものを返すのに使うなら検査例外のような保証が欲しいところ。
744デフォルトの名無しさん
2018/08/13(月) 13:22:39.94ID:BGH31mSy 別スレッドでの関数呼び出し階層が深すぎて安全にスレッド終了させる方法が分からない時に便利でしょ、例外。
745デフォルトの名無しさん
2018/08/13(月) 13:37:06.53ID:hqkLiaZ4 このパーセンテージどうやって表示してるのですか?
http://aokomoriuta.hateblo.jp/entry/2016/05/05/145810
http://aokomoriuta.hateblo.jp/entry/2016/05/05/145810
746デフォルトの名無しさん
2018/08/13(月) 13:37:33.57ID:hqkLiaZ4 すいませんこれです
https://i.imgur.com/p53FZao.jpg
https://i.imgur.com/p53FZao.jpg
747デフォルトの名無しさん
2018/08/13(月) 14:16:12.02ID:uSgRX9ke 前測ったときはアセンブリ言語にしてみると、戻り値ifチェックだと2命令だったのが例外使うと20命令くらいだったなぁ
748デフォルトの名無しさん
2018/08/13(月) 14:27:34.65ID:uSgRX9ke749デフォルトの名無しさん
2018/08/13(月) 14:39:38.06ID:gsTSbRo/ >>739
困ったことにbasic_iosはexceptionsで頼みもしてないのにEOFで例外を投げる
困ったことにbasic_iosはexceptionsで頼みもしてないのにEOFで例外を投げる
750デフォルトの名無しさん
2018/08/13(月) 14:48:44.15ID:p4qIMBze HTTPで400番台500番台は例外投げればいいのかな。
751デフォルトの名無しさん
2018/08/13(月) 14:51:05.76ID:p4qIMBze 例外を投げるクラスはピッチャーって名前でいいんか?
受け取るクラスはキャッチャー?
受け取るクラスはキャッチャー?
752デフォルトの名無しさん
2018/08/13(月) 15:18:30.60ID:m/ibS17x 甘めの例外を打ちかえすのはバッター
753デフォルトの名無しさん
2018/08/13(月) 15:38:43.20ID:Twrhv79p C++17では多値が返せるようになりました。
できるならレガシーを切って次へ行きたいものです。
またはstd::optionalなんてものもありますな。
std::tuple<bool,Item> Fun(){return {true,Item()};}
auto [F,I] = Fun();
できるならレガシーを切って次へ行きたいものです。
またはstd::optionalなんてものもありますな。
std::tuple<bool,Item> Fun(){return {true,Item()};}
auto [F,I] = Fun();
754デフォルトの名無しさん
2018/08/13(月) 15:41:48.16ID:Twrhv79p あ、多値自体は返せたけど受け取って初期化できるようになったか。
ちなみにすでに実体化している変数は、std::tie(...);で受け取れます。
ちなみにすでに実体化している変数は、std::tie(...);で受け取れます。
755デフォルトの名無しさん
2018/08/13(月) 16:14:15.10ID:gsTSbRo/ >>754
prvalueでもforward_as_tupleならおk
prvalueでもforward_as_tupleならおk
756デフォルトの名無しさん
2018/08/13(月) 16:15:13.67ID:gsTSbRo/ auto func()
{
return forward_as_tuple(123, "456");
}
{
return forward_as_tuple(123, "456");
}
757デフォルトの名無しさん
2018/08/13(月) 19:17:45.97ID:Twrhv79p お、なるほど。良いこと聴いた!
758デフォルトの名無しさん
2018/08/13(月) 20:21:18.19ID:m/ibS17x ただ元からタプルがある言語と比べたら劇的に汚い仕上がりだよね
759デフォルトの名無しさん
2018/08/13(月) 21:43:01.79ID:3hlPfGdJ760デフォルトの名無しさん
2018/08/14(火) 02:06:11.13ID:41LFYoyc >>758
何と比べてる?
何と比べてる?
761デフォルトの名無しさん
2018/08/14(火) 02:50:24.34ID:oCVPQ4uM そんなに汚いかねえタプル
762デフォルトの名無しさん
2018/08/14(火) 03:32:08.59ID:+lmSJTba 演算子オーバーロードっぽいものを珍重するのはやめた方がいいと思うけどね。
763デフォルトの名無しさん
2018/08/14(火) 08:20:26.94ID:8F/Sy9ZI autoでしか受けられないのがイマイチかなあ
メインの戻り値は期待する型を明示したいことがある
エラーの方が何のenumかは知ったこっちゃないからautoにしたかったりするからややこしい
メインの戻り値は期待する型を明示したいことがある
エラーの方が何のenumかは知ったこっちゃないからautoにしたかったりするからややこしい
764デフォルトの名無しさん
2018/08/14(火) 09:31:57.53ID:oMbBbcEB 無名の共用体と似たようなもので
構造体のメンバをバラで貰えるってだけやん
構造体のメンバをバラで貰えるってだけやん
765デフォルトの名無しさん
2018/08/14(火) 09:44:39.80ID:fJuFDfsp 型推論のautoを見て嘔吐
766デフォルトの名無しさん
2018/08/14(火) 12:12:14.83ID:9UC8tUq9 C++のメタプログラミングって実際にはどうすればあんな複雑に書けるの?
自分は出来ても階乗を求めると型の判別くらいしか出来ない
自分は出来ても階乗を求めると型の判別くらいしか出来ない
767デフォルトの名無しさん
2018/08/14(火) 12:16:05.35ID:aWfB90DT まずは脳内バッファを増やす訓練からだな
768デフォルトの名無しさん
2018/08/14(火) 12:26:17.71ID:8F/Sy9ZI 関数型言語を勉強するといいよ
769デフォルトの名無しさん
2018/08/14(火) 12:41:59.55ID:9UC8tUq9770デフォルトの名無しさん
2018/08/14(火) 13:29:44.46ID:z3VJK4Uc >>766
メタプログラムは今ほとんどconstexprに置き換えれない?
メタプログラムは今ほとんどconstexprに置き換えれない?
771デフォルトの名無しさん
2018/08/14(火) 14:16:24.99ID:9UC8tUq9 >>770
確かに置き換えられるんだけど、それじゃあ普通のプログラミングと変わらなくて面白みが無いと思って‥
確かに置き換えられるんだけど、それじゃあ普通のプログラミングと変わらなくて面白みが無いと思って‥
772デフォルトの名無しさん
2018/08/14(火) 14:39:49.94ID:vEMT9LA3 >>770
型でメタプログラミングするとき困らんか?
型でメタプログラミングするとき困らんか?
773デフォルトの名無しさん
2018/08/14(火) 14:41:24.25ID:UlU0qat0 >>772
もちろんtemplateも使う
もちろんtemplateも使う
774デフォルトの名無しさん
2018/08/14(火) 16:24:16.29ID:oKGdiTQg >>760
特に何とは言わないけど
return (123, "456");
とか
return 123, "456";
みたいに現行のc++ではできないタプル表現のほうがすっきりして見える (個人の感想です)
特に何とは言わないけど
return (123, "456");
とか
return 123, "456";
みたいに現行のc++ではできないタプル表現のほうがすっきりして見える (個人の感想です)
775デフォルトの名無しさん
2018/08/14(火) 16:31:09.91ID:fJuFDfsp 123には副作用が無いから最適化でreturn "456";になるんじゃ…
777デフォルトの名無しさん
2018/08/14(火) 17:01:49.73ID:zHCh+0V6 vector<object*>* list;
Fuga fuga;
Hoge* hoge;
for(int i = 0; i < 5; ++i)
{
fuga.fugaMethod(hoge->hogeMethod(list->at[i]));
fuga.fugaMethod(hoge->hogeMethod((*list)[i])); // エラー
}
リストの要素に対して全部処理をするっていうよくあるプログラムなんです。
なんですが、上の書き方だと通るのに対して、下の書き方だと「式にはクラス型が必要です。」と出ます。
vectorの要素指定はat(i)を使うか括弧で指定するかの2通り、違いは範囲チェックを行うかどうかだけという認識だったのですが……
何がまずいんでしょうか?
Fuga fuga;
Hoge* hoge;
for(int i = 0; i < 5; ++i)
{
fuga.fugaMethod(hoge->hogeMethod(list->at[i]));
fuga.fugaMethod(hoge->hogeMethod((*list)[i])); // エラー
}
リストの要素に対して全部処理をするっていうよくあるプログラムなんです。
なんですが、上の書き方だと通るのに対して、下の書き方だと「式にはクラス型が必要です。」と出ます。
vectorの要素指定はat(i)を使うか括弧で指定するかの2通り、違いは範囲チェックを行うかどうかだけという認識だったのですが……
何がまずいんでしょうか?
778デフォルトの名無しさん
2018/08/14(火) 17:10:49.55ID:oMbBbcEB list->at[i]はまずいだろ
typoか? それとも本当にそう書いているのか?
typoか? それとも本当にそう書いているのか?
779デフォルトの名無しさん
2018/08/14(火) 17:27:33.05ID:8F/Sy9ZI typoじゃないとしたら、上は通ってるんだから
hogeMethodの引数がobjectかobject&なんだろうな
hogeMethodの引数がobjectかobject&なんだろうな
780デフォルトの名無しさん
2018/08/14(火) 17:31:42.31ID:zHCh+0V6 えーっとtypoじゃないです。
何がまずいんでしょうか。ポインタだしアロー演算子で問題ないのでは。
それとhogeMethodの引数はobject*ですね。抜けてましたすいません。
何がまずいんでしょうか。ポインタだしアロー演算子で問題ないのでは。
それとhogeMethodの引数はobject*ですね。抜けてましたすいません。
781デフォルトの名無しさん
2018/08/14(火) 17:49:25.24ID:K29Njy0m listの前の*が邪魔?
>>777
vector<string *>::iterator list;
なら理解できるのですが、
vector<string *> *list;
というのが、よくわからないのです
プログラム例では list にすでに値が入っているようですが、実際には
list をどのように初期化しているのでしょうか?
vector<string *>::iterator list;
なら理解できるのですが、
vector<string *> *list;
というのが、よくわからないのです
プログラム例では list にすでに値が入っているようですが、実際には
list をどのように初期化しているのでしょうか?
783782 ◆QZaw55cn4c
2018/08/14(火) 18:19:15.36ID:5K5qKv3G >>777
(*list)[i]
(*list).at(i)
list->at(i)
は等価であることを確認しましたが
list->at[i]
というのは逆にダメっぽいです
https://ideone.com/ripLji
list->at[i]
がどういう文脈なのか?
コンパイラがなになのか情報をください
(*list)[i]
(*list).at(i)
list->at(i)
は等価であることを確認しましたが
list->at[i]
というのは逆にダメっぽいです
https://ideone.com/ripLji
list->at[i]
がどういう文脈なのか?
コンパイラがなになのか情報をください
784デフォルトの名無しさん
2018/08/14(火) 18:27:08.03ID:oMbBbcEB >>780
何がまずいって
listはvector<object*>へのポインタ
list->atはvector<object*>::atでメンバ関数
ここまではいいが
at[i]は関数に添え字だろ
こうやってんのと同じだぜ
void func();
func[1];
何がまずいって
listはvector<object*>へのポインタ
list->atはvector<object*>::atでメンバ関数
ここまではいいが
at[i]は関数に添え字だろ
こうやってんのと同じだぜ
void func();
func[1];
785デフォルトの名無しさん
2018/08/14(火) 18:32:33.03ID:9UC8tUq9 なんでメンバ関数を配列にしたいのかかが気になる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★3 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」★2 [冬月記者★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- 空自機レーダー照射、音声データ公開 中国 ★5 [蚤の市★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダー照射を批判、同事案で中国を批判するのは初めて ★2 [お断り★]
- 防衛省「了解は言っていない」 [966095474]
- 防衛省「日本は正当な対応をした。危険行為をしたのは中国。中国は再発防止を徹底せよ」 [834922174]
- 中国、日本人tiktokの収益剥奪開始wmwmwmwmwmwm [834922174]
- 【悲報】高市「円安進むから無駄な予備費積むな?逆に円高リスクに備えるためにも予備費必要なの!😡」😨 [359965264]
- 【画像】「無料男フェラ」にハマるノンケ男性が増加「金かからない」「女より気持ちいい」 [732289945]
- 元空自「日本側は火気管制レーダーともロックオンとも言っていない。中国の探索用レーダーの主張と矛盾しない」高市 [931948549]
