https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/
テンプレおしまい
探検
C++相談室 part153
■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
653はちみつ餃子 ◆8X2XSCHEME
2020/12/05(土) 00:49:53.38ID:rsyXPWsW >>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
654デフォルトの名無しさん
2020/12/05(土) 08:56:44.63ID:F3hjf/ak 最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず
655デフォルトの名無しさん
2020/12/05(土) 10:34:50.44ID:T+MIshnP C++11以降はSTL前提で学んだほうが理解しやすい
656デフォルトの名無しさん
2020/12/05(土) 11:14:52.77ID:pZ+vMW1v STLとそうじゃないものの境界ってなに?
657デフォルトの名無しさん
2020/12/05(土) 11:17:08.79ID:i8LYHGeY そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。
658デフォルトの名無しさん
2020/12/05(土) 11:41:24.32ID:f0cq7ZxN C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。
659デフォルトの名無しさん
2020/12/05(土) 11:42:36.00ID:f0cq7ZxN STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。
660デフォルトの名無しさん
2020/12/05(土) 11:47:59.12ID:f0cq7ZxN 目からうろこですよ。
まじ鱗。
まじ鱗。
661デフォルトの名無しさん
2020/12/05(土) 11:53:54.60ID:f0cq7ZxN ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。
あいつら本物の天才だな。
まじ鱗ですよ。
662デフォルトの名無しさん
2020/12/05(土) 12:09:38.13ID:WVFX1CVk unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象
663デフォルトの名無しさん
2020/12/05(土) 12:15:33.65ID:f0cq7ZxN なんじゃそりゃ。
664デフォルトの名無しさん
2020/12/05(土) 12:22:29.71ID:pZ+vMW1v コントかよ
665デフォルトの名無しさん
2020/12/05(土) 18:59:09.68ID:ynooL14Y >>634
pairが初期化子リストによるコンストラクタを持たないから
c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
https://stackoverflow.com/questions/33207232/emplace-back-not-working-with-stdvectorstdmapint-int?answertab=votes#tab-top
似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる
この箇所あたりがそれ
https://cpprefjp.github.io/reference/map/map/op_constructor.html
map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から
https://cpprefjp.github.io/reference/utility/pair/op_constructor.html
pairのコンストラクタにはinitializer_listは出てこない
pairが初期化子リストによるコンストラクタを持たないから
c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
https://stackoverflow.com/questions/33207232/emplace-back-not-working-with-stdvectorstdmapint-int?answertab=votes#tab-top
似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる
この箇所あたりがそれ
https://cpprefjp.github.io/reference/map/map/op_constructor.html
map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から
https://cpprefjp.github.io/reference/utility/pair/op_constructor.html
pairのコンストラクタにはinitializer_listは出てこない
666デフォルトの名無しさん
2020/12/05(土) 19:10:24.03ID:F+hw3W9u >>662
御意
御意
667デフォルトの名無しさん
2020/12/06(日) 03:41:22.30ID:hI81p89D >>665
違うと思うぞ
違うと思うぞ
668デフォルトの名無しさん
2020/12/06(日) 08:19:51.08ID:tzyWxjgm じゃあ、多数決で決めましょうや。
669デフォルトの名無しさん
2020/12/06(日) 11:09:55.43ID:sjTPCZjA >>667
違うんだったら何が正解だ?
違うんだったら何が正解だ?
670デフォルトの名無しさん
2020/12/06(日) 13:55:38.68ID:hI81p89D671デフォルトの名無しさん
2020/12/08(火) 20:44:18.72ID:efO/t6By visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
672デフォルトの名無しさん
2020/12/08(火) 21:02:15.62ID:O6ovwbXJ 上の方に
#include<filesystem>
と書く
#include<filesystem>
と書く
673デフォルトの名無しさん
2020/12/09(水) 01:24:22.81ID:WuZTb4kZ なんだそりゃあ?!
674デフォルトの名無しさん
2020/12/09(水) 06:50:42.80ID:OrjjObtT >>671
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>
using namespace std;
using namespace std::filesystem;
int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>
using namespace std;
using namespace std::filesystem;
int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64
675デフォルトの名無しさん
2020/12/09(水) 08:05:49.03ID:TKgHvdMy >>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。
日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。
日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。
676デフォルトの名無しさん
2020/12/09(水) 09:04:33.91ID:bCzZQrOf 脱線路運動。
677デフォルトの名無しさん
2020/12/13(日) 02:22:39.32ID:1g8P/X2h c++でRSSリーダー作れましゅか?
678デフォルトの名無しさん
2020/12/13(日) 04:12:37.43ID:64ZS/1bZ はい
679デフォルトの名無しさん
2020/12/13(日) 11:52:25.92ID:83or1IML RSSなんてもう誰も使ってないだろ
フィードしてるサイトなんてありゅ?
フィードしてるサイトなんてありゅ?
680はちみつ餃子 ◆8X2XSCHEME
2020/12/13(日) 13:34:03.99ID:hv54fxHN ブログホスティングサイトの系統だと RSS を提供してないところとかあんまりないと思うが。
681デフォルトの名無しさん
2020/12/14(月) 16:01:14.17ID:WlKHswnl ていうかあちこちの言語スレで同じ事聞くのやめなさい
682デフォルトの名無しさん
2020/12/14(月) 19:00:34.80ID:mjvV58cu std::vectorのメンバ関数にfind()とかrfind()がないのはなんでですかね?
string::find()みたいにあってもよさそうな気がするんですが・・・
string::find()みたいにあってもよさそうな気がするんですが・・・
683デフォルトの名無しさん
2020/12/14(月) 19:10:08.09ID:iTp2tyae >>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?
684デフォルトの名無しさん
2020/12/15(火) 09:25:27.40ID:rqj48Chi >>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい
685デフォルトの名無しさん
2020/12/15(火) 13:10:21.94ID:qBOs25Ot UTF8とかだと単純に同じバイト値探せばいいわけじゃないからstringは特殊化してるんだよ
686デフォルトの名無しさん
2020/12/15(火) 13:19:55.29ID:PHBBuZ6n >何でもかんでもメンバに突っ込むのは悪い設計だからだ
こういう考え方いかにもCから入りましたって感じだな
こういう考え方いかにもCから入りましたって感じだな
687デフォルトの名無しさん
2020/12/15(火) 13:21:51.75ID:gbeRTgGG UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた
688デフォルトの名無しさん
2020/12/15(火) 13:36:54.46ID:8mWx/Grk689デフォルトの名無しさん
2020/12/15(火) 14:01:10.21ID:gbeRTgGG std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring
本当に文字単位で扱いたいならstd::wstring
690デフォルトの名無しさん
2020/12/15(火) 14:23:23.61ID:rqj48Chi691デフォルトの名無しさん
2020/12/15(火) 16:06:36.42ID:cCubMtK6 >>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ
692デフォルトの名無しさん
2020/12/15(火) 16:37:15.21ID:pcemzeew >>690
質問主ですが、是非ともkwskしてくだしあ
質問主ですが、是非ともkwskしてくだしあ
693デフォルトの名無しさん
2020/12/15(火) 16:39:59.71ID:4y27nUGT utf16はサロゲートペアちょんぎらないようにしないとな
694デフォルトの名無しさん
2020/12/15(火) 20:33:42.18ID:DseQeO8W 合字とか異体字セレクタとかもな
文字を扱うというのは大変なんだ
文字を扱うというのは大変なんだ
695デフォルトの名無しさん
2020/12/15(火) 21:47:00.55ID:F7+1e89x >>688
1バイト目とそれ以降は重ならないからそういうことは起こらないはず
1バイト目とそれ以降は重ならないからそういうことは起こらないはず
696デフォルトの名無しさん
2020/12/15(火) 22:25:44.23ID:jc1ZwvrK そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈
697デフォルトの名無しさん
2020/12/16(水) 06:17:15.68ID:vxgFSXGy698デフォルトの名無しさん
2020/12/16(水) 08:58:52.32ID:O+yPS5En699デフォルトの名無しさん
2020/12/16(水) 09:05:13.62ID:9tcp04F0 まぁ汎用的というか、stlのアルゴリズムはほとんどが全コンテナに対して共通のコードに出来るからそうしてる(グローバルな関数にしてる)んじゃないかね
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる
700はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 10:59:12.23ID:zkq7HUY5 アドホック多相とパラメトリック多相の違い。
701デフォルトの名無しさん
2020/12/16(水) 11:28:07.30ID:Hv+rjawS データ構造とアルゴリズムを合わせたものがクラスでありオブジェクト指向言語の特徴の1つと教わった
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか
702デフォルトの名無しさん
2020/12/16(水) 11:50:27.11ID:uK3tjXUx beginとendをペアで指定しないといけないポインタ的iteratorのせいで外部化せざるを得なかったという方が正しいんじゃないですかね
703デフォルトの名無しさん
2020/12/16(水) 11:58:03.72ID:cXvwu3qd ↓のサイトでも外人が同じ議論してるね
誰か要約してください
https://stackoverrun.com/ja/q/4020758
Why does std::string have a find member function while std::vector and friends don't have it?
Is there anything wrong with using std::find on the string?
誰か要約してください
https://stackoverrun.com/ja/q/4020758
Why does std::string have a find member function while std::vector and friends don't have it?
Is there anything wrong with using std::find on the string?
704はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 13:09:55.17ID:zkq7HUY5 >>701
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。
705デフォルトの名無しさん
2020/12/16(水) 13:27:14.81ID:j60AFdVm C++ってカプセル化できるんでしたっけ?
706デフォルトの名無しさん
2020/12/16(水) 13:34:22.28ID:KCK/bj61 抜け道があるかって意味なら、java等もカプセル化できないってことになるけど
707デフォルトの名無しさん
2020/12/16(水) 13:45:31.91ID:O+yPS5En >>701
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ
C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ
C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある
708デフォルトの名無しさん
2020/12/16(水) 13:50:56.36ID:j60AFdVm >>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ
709デフォルトの名無しさん
2020/12/16(水) 13:54:21.41ID:vzlQaAwm >>708
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?
710デフォルトの名無しさん
2020/12/16(水) 13:55:52.62ID:KCK/bj61 なる。
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな
711デフォルトの名無しさん
2020/12/16(水) 14:40:21.32ID:O+yPS5En > 内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないと
これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん
これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん
712はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 15:35:04.62ID:zkq7HUY5 現実的な部分では運用でなんとかしてる部分はあるのも確かだが、
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。
713デフォルトの名無しさん
2020/12/16(水) 16:36:11.97ID:uK3tjXUx >>708
それってモジュール使えば解決できる問題じゃないんでしたっけ
それってモジュール使えば解決できる問題じゃないんでしたっけ
714デフォルトの名無しさん
2020/12/16(水) 18:14:53.45ID:O+yPS5En >>712
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね
問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね
問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ
715デフォルトの名無しさん
2020/12/16(水) 18:54:24.56ID:G781YURu 意義深い議論が展開されてるな
716デフォルトの名無しさん
2020/12/16(水) 22:51:18.04ID:IUrbfkPB C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、
やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、
やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、
717デフォルトの名無しさん
2020/12/16(水) 22:58:46.39ID:IUrbfkPB きちんとオブジェクト指向するんなら継承は全部virtualであるべきや
といってもC++だけにあてはまる批判ではないが
Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG
といってもC++だけにあてはまる批判ではないが
Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG
718デフォルトの名無しさん
2020/12/16(水) 23:05:40.32ID:L6k9APCP 不毛な宗教戦争よ
719デフォルトの名無しさん
2020/12/16(水) 23:25:11.55ID:2c+prgNQ クラスベースオブジェクト指向はすべて似非オブジェクト指向
アランケイ「C++のオブジェクト指向?知らない子ですね…」
アランケイ「C++のオブジェクト指向?知らない子ですね…」
720デフォルトの名無しさん
2020/12/17(木) 01:05:17.90ID:X4tT/GwL >>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。
721デフォルトの名無しさん
2020/12/17(木) 01:10:53.36ID:YFuWJYb1722デフォルトの名無しさん
2020/12/17(木) 07:05:17.82ID:iG8ucCJK 非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど
ハイディングなんかする方が悪いと思うけど
723デフォルトの名無しさん
2020/12/17(木) 07:08:07.45ID:4VSV+Zch724デフォルトの名無しさん
2020/12/17(木) 08:15:27.96ID:61mx8GyZ725デフォルトの名無しさん
2020/12/17(木) 11:41:30.12ID:YFuWJYb1726デフォルトの名無しさん
2020/12/17(木) 14:49:46.67ID:4VSV+Zch #include <charconv>
using namespace std;
int main()
{
char str[] = "123";
double dbl;
from_chars(str, str + 3, dbl);
}
Visual Studioでは通るんだけど、GCCではダメ
どうも戻りのfrom_chars_resultがテンプレートになってて推論に失敗してるようなんだけど
規格ドラフト見てもfrom_chars_resultがテンプレートだなんてどこにも書いてない
これGCCがおかしいんだよな?
バグレポ上がってたりする?
using namespace std;
int main()
{
char str[] = "123";
double dbl;
from_chars(str, str + 3, dbl);
}
Visual Studioでは通るんだけど、GCCではダメ
どうも戻りのfrom_chars_resultがテンプレートになってて推論に失敗してるようなんだけど
規格ドラフト見てもfrom_chars_resultがテンプレートだなんてどこにも書いてない
これGCCがおかしいんだよな?
バグレポ上がってたりする?
727デフォルトの名無しさん
2020/12/17(木) 14:50:46.30ID:4VSV+Zch バージョン書き忘れた
Visual Studio: 19.28.29334
GCC: 10.2.0
Visual Studio: 19.28.29334
GCC: 10.2.0
728デフォルトの名無しさん
2020/12/17(木) 15:56:08.03ID:UR7Dc4KD >>726
整数型だけしかサポートしてないよ
整数型だけしかサポートしてないよ
729デフォルトの名無しさん
2020/12/17(木) 17:33:27.07ID:4VSV+Zch730デフォルトの名無しさん
2020/12/17(木) 22:56:50.01ID:mqVedE2Y gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。
731デフォルトの名無しさん
2020/12/18(金) 01:08:57.52ID:CTNkAd3G >>726 「ダメ」がコンパイルエラーの意味ならエラーメッセージも挙げてよ。
732デフォルトの名無しさん
2020/12/18(金) 01:16:51.95ID:UPU6Cu+L ダメコンは、ダメージコントロールの略ですよ。
733デフォルトの名無しさん
2020/12/18(金) 05:02:08.68ID:t+i2XnfT 継承使うと密結合になり変更に弱くなるし(実行時のオーバーヘッドにもなりそう)
規約で縛るというSTLの実装には好感が持てる
規約で縛るというSTLの実装には好感が持てる
734デフォルトの名無しさん
2020/12/18(金) 06:51:33.39ID:TZi3wQJw >>731
W:\>g++ g1.cpp
g1.cpp: In function 'int main()':
g1.cpp:8:33: error: no matching function for call to 'from_chars(char [4], char*, double&)'
8 | from_chars(str, str + 3, dbl);
| ^
In file included from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: candidate: 'template<class _Tp> std::__detail::__integer_from_chars_result_type<_Tp> std::from_chars(const char*, const char*, _Tp&, int)'
595 | from_chars(const char* __first, const char* __last, _Tp& __value,
| ^~~~~~~~~~
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: template argument deduction/substitution failed:
In file included from C:/msys64/mingw32/include/c++/10.2.0/charconv:40,
from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/type_traits: In substitution of 'template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::from_chars_result]':
まだまだ延々続くけど、こんくらいでいい?
W:\>g++ g1.cpp
g1.cpp: In function 'int main()':
g1.cpp:8:33: error: no matching function for call to 'from_chars(char [4], char*, double&)'
8 | from_chars(str, str + 3, dbl);
| ^
In file included from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: candidate: 'template<class _Tp> std::__detail::__integer_from_chars_result_type<_Tp> std::from_chars(const char*, const char*, _Tp&, int)'
595 | from_chars(const char* __first, const char* __last, _Tp& __value,
| ^~~~~~~~~~
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: template argument deduction/substitution failed:
In file included from C:/msys64/mingw32/include/c++/10.2.0/charconv:40,
from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/type_traits: In substitution of 'template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::from_chars_result]':
まだまだ延々続くけど、こんくらいでいい?
735デフォルトの名無しさん
2020/12/18(金) 09:49:45.23ID:/2PllW9k >>727
vsでも2017update7は同様のエラーみたいだなぁ
vsでも2017update7は同様のエラーみたいだなぁ
736デフォルトの名無しさん
2020/12/18(金) 11:01:15.84ID:nIUIWdb5 >>733
何言ってんだ継承使いまくりだぞ
何言ってんだ継承使いまくりだぞ
737デフォルトの名無しさん
2020/12/18(金) 11:36:27.07ID:YAPYqYIf738デフォルトの名無しさん
2020/12/18(金) 12:09:40.31ID:opBsRLFO オプションは無しなんだ
739デフォルトの名無しさん
2020/12/18(金) 13:23:30.53ID:2eIYLdZu n要素のvectorをm要素に変えたいときって中身はどうでも良いって思ってれば
vec = vector<int>(m);
も
vec.assign(m);
も
vec.resize(m);
もコスト変わらない?
vec = vector<int>(m);
も
vec.assign(m);
も
vec.resize(m);
もコスト変わらない?
740デフォルトの名無しさん
2020/12/18(金) 13:30:32.59ID:4UaQE5Dn バグバグ言語ランキングで見事PHPに勝利!
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/
741デフォルトの名無しさん
2020/12/18(金) 13:40:56.80ID:TZi3wQJw742デフォルトの名無しさん
2020/12/18(金) 13:47:38.37ID:YAPYqYIf >>741
邪魔くさいからココに貼るなってんだよ
邪魔くさいからココに貼るなってんだよ
743デフォルトの名無しさん
2020/12/18(金) 14:07:04.35ID:TZi3wQJw それは731に言ってくれ
俺は知らん
俺は知らん
744デフォルトの名無しさん
2020/12/18(金) 14:33:16.19ID:kYvjoJp5 >>729
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。
745デフォルトの名無しさん
2020/12/18(金) 15:35:36.73ID:A9pQAhpY >>729
23.20.1がHeader <charconv>のドラフトってどれだ?
23.20.1がHeader <charconv>のドラフトってどれだ?
746デフォルトの名無しさん
2020/12/18(金) 15:37:59.88ID:TZi3wQJw >>745
N4713
N4713
747デフォルトの名無しさん
2020/12/18(金) 15:50:56.91ID:A9pQAhpY https://cpprefjp.github.io/reference/charconv.html
https://cpprefjp.github.io/reference/charconv/from_chars.html
webページ見れない理由あった?
>GCC: 8.0(整数のみ)
>Visual C++: 2017 update 7(整数のみ), update 9(full support)
俺ならこの二つ眺めて「GCCは未実装なんだなぁ」と思考停止して終わる
https://cpprefjp.github.io/reference/charconv/from_chars.html
webページ見れない理由あった?
>GCC: 8.0(整数のみ)
>Visual C++: 2017 update 7(整数のみ), update 9(full support)
俺ならこの二つ眺めて「GCCは未実装なんだなぁ」と思考停止して終わる
748デフォルトの名無しさん
2020/12/18(金) 17:24:37.67ID:TZi3wQJw749デフォルトの名無しさん
2020/12/18(金) 17:28:32.84ID:Mxkr6hqK priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?
750デフォルトの名無しさん
2020/12/18(金) 18:26:15.74ID:Xk0olBJ3 template <typename T>
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;
751デフォルトの名無しさん
2020/12/18(金) 18:41:07.57ID:UPU6Cu+L gccの場合、未実装でもスタブだけ存在する場合があるんですよね。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。
ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。
ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。
ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。
ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。
752デフォルトの名無しさん
2020/12/18(金) 19:45:59.90ID:PzyTX7K9 始皇帝氏
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- ネトウヨ、「高市さんがカンペを無視して存立危機発言をしたのは、岡田に『カンペ読むな』と執拗に言われたので言っただけ」と歴史を捏造 [314039747]
- 敵「ククク、キミの親友の俺くんの死体を蘇らせて操り、お前らと戦わせるぞ」お前ら「」←どうする?
- コウメ太夫のネタ考えたから評価してくれ
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- うち近所に本格的ピッツァ屋あるけど羨ましい?
