次スレを立てる時は本文の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/
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 ハンガリアンも防御的なプログラミングと考えたら悪くないよ
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
384デフォルトの名無しさん
2019/04/23(火) 23:27:23.37ID:8XemHsTC てめーらはまともなIDEかエディタ使ってねえのかよ
385デフォルトの名無しさん
2019/04/23(火) 23:37:57.35ID:JKfCESEZ むしろVSがないと何も書けない
386デフォルトの名無しさん
2019/04/23(火) 23:55:15.96ID:UPBQPhwq VSがあっても何も書けない。
387デフォルトの名無しさん
2019/04/23(火) 23:55:30.60ID:ZkNEZW45 c++みたいに型情報ありがデフォルトの言語でハンガリアンとか二重メンテもいいとこだわ。
388デフォルトの名無しさん
2019/04/24(水) 01:00:02.97ID:pnt3hUol 前方宣言したクラスをTにしたスマポメンバでコンパイル通るときと通らないときがあって調べてたら
デストラクタがインライン(暗黙)だと駄目だとわかった
しかもこの問題が起こるのはunique_ptrのときだけでshared_ptrはデストラクタの定義に関係なく通る
わけわからんぞ
教科書に書いておいてくれ
class ClassB;
class ClassA{
public:
ClassA();
private:
std::unique_ptr<ClassB> u; // NG
std::shared_ptr<ClassB> s; // OK
}
---
class ClassB;
class ClassA{
public:
ClassA();
~ClassA(); ←これでunique_ptrもOK
private:
std::unique_ptr<ClassB> u; // OK
std::shared_ptr<ClassB> s; // OK
}
デストラクタがインライン(暗黙)だと駄目だとわかった
しかもこの問題が起こるのはunique_ptrのときだけでshared_ptrはデストラクタの定義に関係なく通る
わけわからんぞ
教科書に書いておいてくれ
class ClassB;
class ClassA{
public:
ClassA();
private:
std::unique_ptr<ClassB> u; // NG
std::shared_ptr<ClassB> s; // OK
}
---
class ClassB;
class ClassA{
public:
ClassA();
~ClassA(); ←これでunique_ptrもOK
private:
std::unique_ptr<ClassB> u; // OK
std::shared_ptr<ClassB> s; // OK
}
389デフォルトの名無しさん
2019/04/24(水) 07:38:59.52ID:IdP8M60W >>388
unique_ptr<T>のデストラクタはインスタンス化するときにTが完全型であることを要求する(デストラクタで直接Tのデストラクタを呼ぶ)
unique_ptrを内包するクラスのデストラクタが暗黙だとクラス内でコンパイラによって実装されるけど、その場でunique_ptrのデストラクタを要求する
しかし、その翻訳単位内でTの定義が無ければコンパイルエラーとなる
unique_ptr<T>を内包するクラスのデストラクタがとりあえず宣言だけでもあると
実際の定義がある場所で同様の事が起こるので、その場所でTの定義が見つかればいい
その場合に定義を書かないと、コンパイラさんが適切な翻訳単位内に定義をおいてくれるみたい
shared_ptrは動的削除子のおかげでデストラクタが呼ばれるところで適切にデリータを定義し、デストラクタを呼ぶようになっているのでこの様な問題は起こらない
shared_ptr<T>のデストラクタ内ではTのデストラクタを直接呼び出すようなコードが無い
unique_ptr<T>のデストラクタはインスタンス化するときにTが完全型であることを要求する(デストラクタで直接Tのデストラクタを呼ぶ)
unique_ptrを内包するクラスのデストラクタが暗黙だとクラス内でコンパイラによって実装されるけど、その場でunique_ptrのデストラクタを要求する
しかし、その翻訳単位内でTの定義が無ければコンパイルエラーとなる
unique_ptr<T>を内包するクラスのデストラクタがとりあえず宣言だけでもあると
実際の定義がある場所で同様の事が起こるので、その場所でTの定義が見つかればいい
その場合に定義を書かないと、コンパイラさんが適切な翻訳単位内に定義をおいてくれるみたい
shared_ptrは動的削除子のおかげでデストラクタが呼ばれるところで適切にデリータを定義し、デストラクタを呼ぶようになっているのでこの様な問題は起こらない
shared_ptr<T>のデストラクタ内ではTのデストラクタを直接呼び出すようなコードが無い
390デフォルトの名無しさん
2019/04/24(水) 18:54:26.06ID:pnt3hUol >>389
解説ありがとう
解説ありがとう
391デフォルトの名無しさん
2019/04/26(金) 01:05:34.79ID:UW94aXeh うーんC++プライマー8500円かぁ。本家のプログラミング言語C++第4版はもっとするし
情報量からすると安いが本一冊にポンと出すにはお高い……日本語である程度網羅的な本となるとこの2冊くらいよね
情報量からすると安いが本一冊にポンと出すにはお高い……日本語である程度網羅的な本となるとこの2冊くらいよね
392デフォルトの名無しさん
2019/04/26(金) 19:40:01.51ID:aJMYFNVy set<double> って int のときと同様にちゃんとソートされるんですか?
393デフォルトの名無しさん
2019/04/26(金) 20:34:04.97ID:Fns+A8Ou NaNが無ければ大丈夫NaNじゃね
394デフォルトの名無しさん
2019/04/26(金) 20:34:22.70ID:Fns+A8Ou NaNが無ければ大丈夫NaNじゃね
395デフォルトの名無しさん
2019/04/26(金) 22:17:06.30ID:PbDaLlJb のちに永久保存される平成最後のスベり
396デフォルトの名無しさん
2019/04/26(金) 23:59:20.16ID:LBUDtqYL たしかにそうだな・・いよいよ平成最後なんだな
みなさん、>>393-394 みたいな事にならないよう、気をひきしめましょう
みなさん、>>393-394 みたいな事にならないよう、気をひきしめましょう
397デフォルトの名無しさん
2019/04/27(土) 00:20:06.56ID:nrL5Mhiq 平成最後っていう言い回し使われすぎて嫌いになってきた
398デフォルトの名無しさん
2019/04/27(土) 00:23:11.48ID:v7q7vgVx イテレータの参照を次に移すときってなんでitr++ではなく++itrなの?
399デフォルトの名無しさん
2019/04/27(土) 00:33:20.40ID:nrL5Mhiq ヤフーでぐぐれ
400デフォルトの名無しさん
2019/04/27(土) 01:04:24.73ID:oB7jkl++ 素直な実装だとitr++より++itrのほうが速いんじゃないかなあ、となんとなくみんなが思っているから
401デフォルトの名無しさん
2019/04/27(土) 01:07:57.61ID:v7q7vgVx 速度に差が出るのか
知らなかった
知らなかった
402デフォルトの名無しさん
2019/04/27(土) 01:35:51.19ID:KjSesqKI インクリメント後のイテレーターの値を返す処理の実装を考えると
先の場合はインクリメントしてそのまま渡せばいいけど
後の場合はインクリメント前の値を保存しといてそれを渡さないといけないので一手間かかるから
・・なんだけど諸々の最適化とか色んな条件とか考えたらそこまで差がでるかどうかはよくわからん
先の場合はインクリメントしてそのまま渡せばいいけど
後の場合はインクリメント前の値を保存しといてそれを渡さないといけないので一手間かかるから
・・なんだけど諸々の最適化とか色んな条件とか考えたらそこまで差がでるかどうかはよくわからん
403デフォルトの名無しさん
2019/04/27(土) 01:38:33.58ID:EJ6OYH9I it++だと、戻り値をコピーしてとっておいてから、ポインタなりを進めた後にreturnする必要があるが、
++itだと、ポインタを進めた後に参照を返すだけでするからな。
++itだと、ポインタを進めた後に参照を返すだけでするからな。
404デフォルトの名無しさん
2019/04/27(土) 01:39:08.58ID:EJ6OYH9I 被ったw
405デフォルトの名無しさん
2019/04/27(土) 11:13:20.29ID:qp4sR6Ay406デフォルトの名無しさん
2019/04/27(土) 11:46:20.51ID:Tan1PMrG >>402-405
cppcheck にかけたらちゃんと警告出るね。
cppcheck にかけたらちゃんと警告出るね。
407デフォルトの名無しさん
2019/04/27(土) 14:06:33.77ID:dwPa57iA どうせ戻り値捨てるんだったら++itを選んでおいて損はない
無駄にit++を使うのは時期尚早な最不適化って奴だ
無駄にit++を使うのは時期尚早な最不適化って奴だ
408デフォルトの名無しさん
2019/04/27(土) 19:31:57.61ID:Ht8C3PIL C++で書くんだから後置インクリメントの方がメインに決まってんじゃん
前置は異端だ
前置は異端だ
409デフォルトの名無しさん
2019/04/27(土) 19:37:22.12ID:nrL5Mhiq 殺せ
410デフォルトの名無しさん
2019/04/27(土) 20:12:28.01ID:uerCNQ9f ++C
411デフォルトの名無しさん
2019/04/27(土) 20:53:36.82ID:hHA0b+W+ C++でいいんだよ。
規格は一歩進むけど、使ってるやつはbetter Cばかりってな
規格は一歩進むけど、使ってるやつはbetter Cばかりってな
412デフォルトの名無しさん
2019/04/27(土) 20:55:05.03ID:nrL5Mhiq ++C++まだかよ
413デフォルトの名無しさん
2019/04/27(土) 22:37:09.45ID:Czz6ceI0 >>411
vectorとかstringとか使わんの?
vectorとかstringとか使わんの?
414デフォルトの名無しさん
2019/04/28(日) 03:35:47.43ID:c2OY2Ben CArrayとCStringだぞ
コピコンは定義されてないから自分で作るぞ
コピコンは定義されてないから自分で作るぞ
415デフォルトの名無しさん
2019/04/28(日) 11:01:20.49ID:DJV+PGkd CArrayは、<algorithm>ヘッダーで定義された信頼性の高いユーティリティ関数を使えないのがね・・・。
416デフォルトの名無しさん
2019/04/28(日) 13:46:52.13ID:nadmD8id >>413
この思考がbetter C
この思考がbetter C
417デフォルトの名無しさん
2019/04/28(日) 14:25:38.47ID:n1RanWws >>416
わけわからん
わけわからん
418デフォルトの名無しさん
2019/04/28(日) 14:29:28.69ID:c2OY2Ben 俺がBest Cだ
419はちみつ餃子 ◆8X2XSCHEME
2019/04/28(日) 14:56:12.05ID:mA4VukHK420デフォルトの名無しさん
2019/04/28(日) 15:37:56.41ID:UbqPSgHc inconsistent begin/end types in range-based ‘for’ statement
gcc(g++) 8.2で -std=c++17オプションでコンパイルで
範囲forでこのエラーが出るんだが
begin endの型不一致の制限緩和されいるはずだよな?
原因わかる方いますか?
gcc(g++) 8.2で -std=c++17オプションでコンパイルで
範囲forでこのエラーが出るんだが
begin endの型不一致の制限緩和されいるはずだよな?
原因わかる方いますか?
421デフォルトの名無しさん
2019/04/28(日) 15:49:39.60ID:4R543R/q >>415
GetData()とGetData()+GetSize()を渡せば、とりあえず動くんじゃね?
GetData()とGetData()+GetSize()を渡せば、とりあえず動くんじゃね?
422デフォルトの名無しさん
2019/04/28(日) 16:05:30.47ID:n1RanWws >>420 比較演算子定義されてないとか?
423デフォルトの名無しさん
2019/04/28(日) 16:22:25.11ID:UbqPSgHc >>422
int _n = 0;
auto __begin = _container.begin();
auto __end = _container.end();
for (; __begin != __end; ++__begin) {
_n = *__begin;
}
比較演算子はちゃんと定義してるし
上のコードは何故かコンパイル通る
だけど
for (const auto _n : _container) {
//hoge
}
は何故か通らない
int _n = 0;
auto __begin = _container.begin();
auto __end = _container.end();
for (; __begin != __end; ++__begin) {
_n = *__begin;
}
比較演算子はちゃんと定義してるし
上のコードは何故かコンパイル通る
だけど
for (const auto _n : _container) {
//hoge
}
は何故か通らない
424デフォルトの名無しさん
2019/04/28(日) 16:41:14.97ID:n1RanWws 範囲for文のconst autoをconst auto&かauto&&に変えるとどうなる?
425デフォルトの名無しさん
2019/04/28(日) 16:43:13.35ID:UbqPSgHc >>424
auto&&にした時のみエラーが増えます
cannot bind rvalue reference of type ‘const long unsigned int&&’ to lvalue of type
auto&&にした時のみエラーが増えます
cannot bind rvalue reference of type ‘const long unsigned int&&’ to lvalue of type
426デフォルトの名無しさん
2019/04/28(日) 16:54:13.46ID:/ZzCGjK1 beginとendのシグニチャは?
427デフォルトの名無しさん
2019/04/28(日) 17:02:57.34ID:UbqPSgHc >>426
using iterator = typename std;;vector<int>::iterator;
using const_iterator = typename std;;vector<int>::const_iterator;
using my_iterator = MYIterator;
my_iterator begin();
iterator end();
const my_iterator begin() const;
const_iterator end() const;
const my_iterator cbegin() const;
const_iterator cend() const;
using iterator = typename std;;vector<int>::iterator;
using const_iterator = typename std;;vector<int>::const_iterator;
using my_iterator = MYIterator;
my_iterator begin();
iterator end();
const my_iterator begin() const;
const_iterator end() const;
const my_iterator cbegin() const;
const_iterator cend() const;
428デフォルトの名無しさん
2019/04/28(日) 17:18:10.81ID:HBE/zmE6 これで動かん?
for (auto&& _n : _container) {
}
for (auto&& _n : _container) {
}
429デフォルトの名無しさん
2019/04/28(日) 17:28:42.95ID:UbqPSgHc >>428
動かないです
動かないです
430デフォルトの名無しさん
2019/04/28(日) 18:12:40.94ID:/ZzCGjK1 MYIteratorの実体がunsigned longみたいだけど
vector<int>::iteratorの実体がポインタだったらoperator!=の定義できなくない?
vector<int>::iteratorの実体がポインタだったらoperator!=の定義できなくない?
431デフォルトの名無しさん
2019/04/28(日) 18:13:25.64ID:7uO4eV2c >>420
wandboxで再現コード作って出直すか、それができないんならエスパーに頼んだほうがいいんじゃないかな。
https://mevius.2ch.net/test/read.cgi/tech/1187922645/
wandboxで再現コード作って出直すか、それができないんならエスパーに頼んだほうがいいんじゃないかな。
https://mevius.2ch.net/test/read.cgi/tech/1187922645/
432デフォルトの名無しさん
2019/04/28(日) 20:53:07.97ID:B+3vkW9O >>423
bool operator != (〜) const ← これ付け忘れてないか?
bool operator != (〜) const ← これ付け忘れてないか?
433デフォルトの名無しさん
2019/04/28(日) 20:57:20.67ID:HwAGJ3yN constつけ忘れは時々はまる
434デフォルトの名無しさん
2019/04/28(日) 23:15:17.87ID:UbqPSgHc >>427
自己解決
const iteratorとconst_iteratorが一緒だと勘違いしていた
const my_iteratorではなくmy_const_iteratorを実装して返り値とすべきでした
自己解決
const iteratorとconst_iteratorが一緒だと勘違いしていた
const my_iteratorではなくmy_const_iteratorを実装して返り値とすべきでした
435デフォルトの名無しさん
2019/04/29(月) 08:12:30.69ID:caHZo185 struct A{
int member;
};
struct B: A{
void run(){member = 0;}//ok
};
template<typename T>
struct TA{
T member;
};
template<typename T>
struct TB:TA<T>{
void run(){member = 0;}//NG。this->memberとするとok
};
クラステンプレートを継承してクラステンプレートを作成した場合にthisでないと継承元のメンバーが見えないのは仕様?
int member;
};
struct B: A{
void run(){member = 0;}//ok
};
template<typename T>
struct TA{
T member;
};
template<typename T>
struct TB:TA<T>{
void run(){member = 0;}//NG。this->memberとするとok
};
クラステンプレートを継承してクラステンプレートを作成した場合にthisでないと継承元のメンバーが見えないのは仕様?
436デフォルトの名無しさん
2019/04/29(月) 10:32:33.68ID:ytpB6N2f 仕様
一寸前までのmsvcではなぜか通っていたけど
一寸前までのmsvcではなぜか通っていたけど
437デフォルトの名無しさん
2019/04/29(月) 11:47:53.29ID:atpu4K08 >>436
なんでそんな仕様になってるんだろう…
なんでそんな仕様になってるんだろう…
438デフォルトの名無しさん
2019/04/29(月) 12:13:25.59ID:TWBg2sM/■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「3.11の余震とは別か」「長時間避難できる場所を」 識者の見方 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- 時々ロシア語でデレるアーリャさんより常に日本語でデレる俺の方がよくね?
- 膝掛け使ってる男いるでしょ
