C++相談室 part141

■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
次スレを立てる時は本文の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/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
252デフォルトの名無しさん
垢版 |
2019/03/08(金) 01:15:31.98ID:jsJl1WSX
テンプレートで何とかなりませんかね。
2019/03/08(金) 02:12:42.20ID:7lrcs+kH
>>252
何が?
254237
垢版 |
2019/03/08(金) 06:55:44.25ID:orP5LHkV
>>244 が提示してくれた from_chars, to_chars をgccに導入するにはどうしたらいい?
WSLのubuntuを使ってるんだけど規定でfrom_chars, to_charsの定義されたヘッダーファイルが入ってないっぽい。
2019/03/08(金) 08:26:54.11ID:ZyNdKvhR
>>254
たしか8.0でまだ整数しか実装されてない
256デフォルトの名無しさん
垢版 |
2019/03/09(土) 11:07:13.09ID:jx9iLAiD
C++テンプレートテクニック第三版っていつ出るんですかね?
2019/03/10(日) 00:54:12.40ID:3tC9wBDx
待っていても何も始まらない!
君が書くんだよ!
258デフォルトの名無しさん
垢版 |
2019/03/10(日) 17:07:48.90ID:yzd/Af8M
テンプレート引数がクラスでpush_back()メンバを持っているというようなことを検査することはできますかね?
2019/03/10(日) 17:10:17.73ID:2Qm7LFrM
std::is_classとdetection idiomで可能かと
260デフォルトの名無しさん
垢版 |
2019/03/10(日) 17:15:14.74ID:yzd/Af8M
でてくしょんいでおむってどの本見ればわかりますかね?
261デフォルトの名無しさん
垢版 |
2019/03/10(日) 17:16:33.87ID:yzd/Af8M
decltype使えばいいのかな。
2019/03/10(日) 17:18:14.94ID:2Qm7LFrM
載ってる本あるのかなあ

どうやるのかだけなら、ここのサンプルコードを真似すればいいと思う
https://cpprefjp.github.io/reference/type_traits/void_t.html
263デフォルトの名無しさん
垢版 |
2019/03/10(日) 17:21:49.62ID:yzd/Af8M
ありがとう。
ちょっと読んでみます。
264デフォルトの名無しさん
垢版 |
2019/03/10(日) 22:01:07.26ID:yzd/Af8M
std::byteの使い方がよくわからない。
暗黙の何とかを避けるのに使うんだろか。
2019/03/10(日) 22:11:27.82ID:2Qm7LFrM
単純にバイトを表現する型というのが必要となった
char8_tと同じようなもん
266デフォルトの名無しさん
垢版 |
2019/03/10(日) 22:30:00.78ID:yzd/Af8M
ソケットやファイルの入出力に使うって事かな?
2019/03/10(日) 22:49:36.48ID:8hqMg5Px
1バイトサイズの整数のつもりでcharを使ったらstreamで困ることがあったりしたしね。
268デフォルトの名無しさん
垢版 |
2019/03/10(日) 23:15:04.53ID:yzd/Af8M
enum class byte : unsigned char { };
ってなってる。
2019/03/10(日) 23:21:10.96ID:6gF9+EwK
そのベースの型は実装依存
型を取りだして使えってことなんだろうか
2019/03/10(日) 23:21:22.34ID:ketqiw2j
なんでenum classなんだ?
typedefと何が違うの?
2019/03/10(日) 23:31:19.81ID:2Qm7LFrM
暗黙の型変換ができない
2019/03/10(日) 23:54:49.98ID:vvRzWHgY
こういうの行き過ぎた型安全に思えるけどね
2019/03/10(日) 23:57:35.21ID:6gF9+EwK
でも過去にそれで何かあったんでしょ
使うかどうかは任意だしある分には困らない
2019/03/10(日) 23:57:38.91ID:ketqiw2j
なるほど
2019/03/11(月) 00:01:39.15ID:4nU22VRt
is_enum_vがtrueになるとか違和感しかない
276デフォルトの名無しさん
垢版 |
2019/03/11(月) 05:30:01.20ID:pTTv+VC9
>>265
なんで
uchar8_t
uchar16_t
uchar32_t
にしないんだろな
2019/03/11(月) 05:58:05.15ID:mFqdzmI2
既存のライブラリと衝突しまくるだろそれ
2019/03/11(月) 11:02:11.57ID:9rO3q8tQ
>>273
ひとりで全部作ってんのか?
誰か使い始めたらそれに巻き込まれるんだよ
2019/03/11(月) 13:49:05.84ID:kWR5MawD
WPFってどうなの
2019/03/11(月) 19:42:26.86ID:OenRxSRY
281デフォルトの名無しさん
垢版 |
2019/03/11(月) 22:05:24.43ID:XA5PtgcF
getoptの標準化マダーチンチン(AA略
2019/03/12(火) 07:17:28.89ID:dEFL2K0T
void foo(std::function<void()> &&f){}

int main(){
auto lamda = [](){};
foo(lamda);
}
なぜコンパイルできるの?
283デフォルトの名無しさん
垢版 |
2019/03/12(火) 07:23:08.39ID:FSVt1tPQ
>>281
オプションの渡し方がそもそも揺れてる
284デフォルトの名無しさん
垢版 |
2019/03/12(火) 07:25:00.12ID:FSVt1tPQ
>>282
int main()
{
return main();
}
なぜコンパイルできるの?
285デフォルトの名無しさん
垢版 |
2019/03/12(火) 11:46:00.90ID:6Uu2j9Xc
int main(std::function<void()> &&f){
return main([](){});
}
2019/03/12(火) 20:22:26.93ID:dEFL2K0T
すいません、低レベルのかたたちばかりでした。
聞くところ間違えました
2019/03/12(火) 20:30:56.16ID:Nd0ou12Q
なぜc++ main return省略でググらないのか
288デフォルトの名無しさん
垢版 |
2019/03/12(火) 20:43:58.42ID:X3QnQcuN
getoptを標準化してしまうとハイフンで始まる変態ファイル名が鬼門になってしまうかな。
289デフォルトの名無しさん
垢版 |
2019/03/12(火) 20:46:35.39ID:Zu3OGTTs
is_iterator、is_containerメタ関数はどうやったら作れるんでしょうね?
2019/03/12(火) 20:54:07.45ID:JuWddRAo
SFINAEでググれ、でいいんだろうか
291デフォルトの名無しさん
垢版 |
2019/03/12(火) 20:55:53.60ID:Zu3OGTTs
スフィ姉は知っているんですが。
そのあとが。
2019/03/12(火) 21:00:20.04ID:cgm/opRe
iterator_traitsに通してメンバ型が得られるか確認する?
*とか++とかの操作について確認する?
containerはbeginとendでイテレータ取れるか確認する?
293デフォルトの名無しさん
垢版 |
2019/03/12(火) 21:34:26.86ID:Zu3OGTTs
template <typename T>
using is_iterator = std::is_class<typename std::iterator_traits<T>::iterator_category>;
これは使えますかね?
2019/03/12(火) 21:58:48.29ID:l3wdXFC4
ぐぐればstack overflowがひっかかる
2019/03/12(火) 22:01:23.70ID:JuWddRAo
使えますかねって・・自分で試せるだろ
2019/03/12(火) 22:12:53.32ID:6dDI1fa3
マウントしててワロス
2019/03/12(火) 22:34:48.05ID:3laDxwEs
マウントは取りたいけど教えるのはめんどくさい
2019/03/12(火) 22:48:31.61ID:YKaKEG7g
結局はそれで何がしたいかによるんじゃね
標準のコンテナやそのイテレータで型分岐したいなら十分だけど、カスタム実装されたユーザー定義のイテレータがそのように実装されているかは分からんし
まあiterator_traitsの特殊化も追加で書くようにすれば使えるか
2019/03/12(火) 23:06:42.78ID:cgm/opRe
C++20からは一応イテレータはコンセプトがあるなあ
コンテナは知らん
2019/03/12(火) 23:12:51.59ID:YKaKEG7g
>>293
はダメな気がするな
template<typename T,typename=void>
struct is_iterator:std::false_type{};

template<typename T>
struct is_iterator<T,std::enable_if_v<std::is_class_v<typename std::iterator_traits<T>::iterator_category>>>:std::true_type{};
2019/03/12(火) 23:14:38.07ID:JuWddRAo
>>296,297
アホか、何がマウントだボケ
自分で試しもせずに2chに丸投げとか普通にダメだろ

>>298
iterator_traitsに与える型の要件(だけでいいかどうかはさておき)を満たすなら特殊化なんかいらんでしょ
リファレンス見る限り、iterator_traitsの特殊化はポインタのためだけにあると思う
302デフォルトの名無しさん
垢版 |
2019/03/12(火) 23:27:20.69ID:Zu3OGTTs
>>300
どの本もそういう書き方になってるんだけど、その理由がわからない。
>>293は呼び出し方によっていろいろ問題が起きるんだけど、その理由がわからなさすぎる。
その辺がスッキリわかる本はないですかね。
2019/03/12(火) 23:39:14.10ID:YKaKEG7g
本は知らん
SFINAEが使えるのは宣言部分
そこで置換失敗すると宣言そのものが無かったことになる
2019/03/13(水) 12:04:15.67ID:lxBl+sTZ
>>297
マウントが取りたいだけで教える知識がないだけやねんw
2019/03/13(水) 12:37:00.35ID:mh4jyrHE
そう
分からない質問には自分で試せ
これがC++使ってる奴の特徴
2019/03/13(水) 12:47:27.60ID:QLyGxm6u
>>304,>>305
そう思うなら自分が教えてやれば?
2019/03/13(水) 20:50:37.56ID:u/DrurAb
規約はあるけど「実装が規約」をやっちゃってる部分が多くて、
しかもコンパイラのバージョン依存がひどいってのがc++だからな。
規約は語れても実際にどう動作するか語れない輩も多いだろうね。
2019/03/13(水) 21:07:13.50ID:QLyGxm6u
そういう構図じゃないと思うよ
309デフォルトの名無しさん
垢版 |
2019/03/13(水) 21:25:53.81ID:Z/ka/TFK
どなたか iostreamの存在価値について熱く語ってくれないか。
2019/03/13(水) 21:34:23.99ID:VRJ3bLEu
いやだ
2019/03/13(水) 21:38:23.77ID:xQTh8hgU
>>309
https://www.google.com/search?q=%22iostream%E3%81%AE%E4%BE%A1%E5%80%A4%22
312デフォルトの名無しさん
垢版 |
2019/03/13(水) 21:55:23.80ID:780qHyAl
VS2019って4月2日に出るのかな?
2019/03/13(水) 22:19:08.88ID:DKlmxwmb
米国時間4/2にローンチイベント行ってるから日本だと3日かな
2019/03/13(水) 22:44:27.53ID:mh4jyrHE
>>306
だから分からないのにマウント取るのやめたら?
315290=301
垢版 |
2019/03/13(水) 23:05:00.60ID:QLyGxm6u
>>314
バカだろお前

ID:Zu3OGTTsはSFINAEでググれと言われてSFINAEは知ってると言ったろ
その上で>>302の書き込み見ておかしいと思わんのか?
それに>>300で答えは出てるだろうが

> だから分からないのにマウント取るのやめたら?
お前のことだよ
316デフォルトの名無しさん
垢版 |
2019/03/14(木) 18:41:51.50ID:qKfDR5xc
>>313
待ちどおしいね。
317デフォルトの名無しさん
垢版 |
2019/03/14(木) 20:57:09.31ID:HZIDFMYl
このスレの住人は、新しいVisual Studioでどんなことに期待してるの?
2019/03/14(木) 20:58:50.91ID:30TndOaO
>>317
マウントされないこと
2019/03/14(木) 21:00:03.79ID:O0o087YX
仕様通りに動いてくれりゃそれでいいわ。
2019/03/14(木) 21:20:35.00ID:nuZulfE1
C++20の早期対応
2019/03/14(木) 21:25:28.09ID:xC4JJLNw
clang対応
2019/03/14(木) 21:29:12.31ID:vJRyyCPl
C#での使い勝手向上
2019/03/14(木) 21:36:15.68ID:r+Z4K3kn
フロントエンドをVSCodeにしてくれ
2019/03/14(木) 21:45:44.62ID:rlbQlqp5
メモリ喰わずに軽くなって…
325デフォルトの名無しさん
垢版 |
2019/03/14(木) 22:54:08.60ID:qKfDR5xc
何個まで願い事聞いてくれるんだろ。
2019/03/14(木) 23:13:56.40ID:3EvgP48J
>>317
Expressを出してくれ
2019/03/14(木) 23:19:01.48ID:NTAm4EVS
>>317
MFC…
2019/03/15(金) 06:01:20.22ID:qA/WFgyI
Windows formsのC++へ移植してmfcを完全に抹消してくれ
2019/03/15(金) 06:06:32.23ID:nvk7uoI+
>>317
オープンソース化
2019/03/15(金) 08:11:25.59ID:2KXTO6ja
本当によくかけとるわ。
この人たちで標準委員やったほうがいいんじゃないかと思う。
https://ttsuki.github.io/styleguide/cppguide.ja.html
2019/03/15(金) 08:17:17.58ID:qA/WFgyI
ゴミ
2019/03/15(金) 08:54:09.40ID:fLDhqMRG
けっこう癖が強いよね。例外やpimpl否定したり。
2019/03/15(金) 08:57:01.66ID:LNWMUSed
危険思想だなw
ヤバすぎてヘドが出るw
2019/03/15(金) 09:06:08.50ID:Uugk/tx2
まあでかいプロジェクトはこんなもんだろう。
例外は実際よくないと思うわ。
2019/03/15(金) 09:48:31.74ID:Af9j6Fb3
pimpl否定ってあったっけ?
うちのプロジェクトも原則例外禁止
むかしは一律禁止だったけど
2019/03/15(金) 11:11:39.02ID:t9j+keaC
>>330
古くさいって言われてなかった?
2019/03/15(金) 11:55:34.06ID:E1i6RSEf
googleのスタイルガイドは和訳が古くて英語版しか読まなくなって何年にもなるが追いついてるのか?
2019/03/15(金) 12:05:48.86ID:PdhXv0FK
例外無しとか小規模の組み込み以外で意味あるのかね?
2019/03/15(金) 12:37:29.90ID:hyh/CKnF
例外使った時点で疎結合もへったくれもなくなると思うわ。
能力的に幅のあるプロジェクトで使うには難しいよ。
2019/03/15(金) 12:56:39.19ID:ng8+eCdq
>>339
> 能力的に幅のあるプロジェクトで使うには難しいよ。
これには同意するけど

> 例外使った時点で疎結合もへったくれもなくなると思うわ。
意味不明
例外以外の方法使っても似たようなことをする羽目になるだけ
なら意図が明確な例外のほうがマシ
2019/03/15(金) 14:16:54.97ID:9vyMIRpZ
戻り値なら呼び出し元と呼び出し先の間の結合だけだが、例外はよりコールスタックの根本の方へ結合が及ぶことがある
フレームワークのように、例外を使ってあえて中間をすっ飛ばしてコールスタックの上と下を結合させるケースもあるけどね
2019/03/15(金) 14:19:06.67ID:9vyMIRpZ
念の為補足するけど、Javaの検査例外みたいに常に直上での例外処理を強制するスタイルは戻り値と事実上等価だからここでは論外ね
2019/03/15(金) 14:31:16.21ID:yhzlHwio
つまり標準ライブラリのほとんどを使うなと言うこと?
2019/03/15(金) 14:37:11.61ID:yhzlHwio
そもそも例外使った方が疎結合になるだろうに
2019/03/15(金) 16:00:22.80ID:q2a9nFaz
他の言語や過去の (例外をあまり想定していない) システムと接続することもあるし、
そういう全体のエコシステムを考えると例外がかえって面倒ということはあると思う。

C++ だけの (新規の) プロジェクトなら全く例外を使わないというのは極端なスタイルだと思うが。
2019/03/15(金) 16:32:10.73ID:SB/vZ5dO
例外があると、それが理由で上下の階層が深いシステムになりがちだと思うよ。
節度があれば正直なんでもいいが、言語的にクソ設計を許さないのならその方がありがたい。
2019/03/15(金) 16:54:37.47ID:oq4eakC3
c++じゃないところからc++のコード呼び出すなら例外外に出さないようにtry catchでラップするだけだし
逆で途中のコードが例外発生したために解放処理が飛ばされるってなら、raiiクラス化しろって話にならね?

通信経路でやり取りするなら相手が例外処理で実装されていようがされていなかろうがなんの関係もないし
2019/03/15(金) 17:57:31.19ID:BCAT3j7k
>>347
要は、メッセージングが至高ってことだな
349デフォルトの名無しさん
垢版 |
2019/03/15(金) 18:59:44.81ID:0PFucV7H
つまりJavaが至高。
2019/03/15(金) 20:05:35.24ID:LNWMUSed
例外だしてどーすんの
ミッションクリティカルで直せるの?
意味ないじゃん

例外使いたきゃ専用言語使えばいい
2019/03/15(金) 20:09:02.33ID:qA/WFgyI
プログラミング言語の専門家に聞いて
2019/03/15(金) 20:37:29.42ID:ng8+eCdq
>>345
> 他の言語や過去の (例外をあまり想定していない) システムと接続することもあるし、
> そういう全体のエコシステムを考えると例外がかえって面倒ということはあると思う。
もうそういう極端な例でしか反論できないことはわかったよw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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