次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137
https://mevius.5ch.net/test/read.cgi/tech/1531558382/
このスレもよろしくね。
【初心者歓迎】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++相談室 part137
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 12c3-4saf)
2018/08/27(月) 16:02:00.94ID:vY3QDx2y0839デフォルトの名無しさん (オイコラミネオ MM4f-IJfJ)
2018/09/29(土) 20:26:30.14ID:1/46iTAZM 全然?
840デフォルトの名無しさん (スプッッ Sd3f-brPT)
2018/09/29(土) 21:00:53.02ID:vc6gAAuZd841デフォルトの名無しさん (ブーイモ MM7b-uZyL)
2018/09/29(土) 22:03:09.07ID:oWn9MzvpM842デフォルトの名無しさん (ワッチョイ 1704-ClIk)
2018/09/29(土) 23:45:25.50ID:OLOWa9QF0 move後の元オブジェクトを破壊っていうか破棄しようって提案もあったよ。ちょっと早くなるのだとさ。
843デフォルトの名無しさん (ワッチョイ 9f23-brPT)
2018/09/30(日) 00:04:13.06ID:kBo12DYt0 >>841
ポインターならそもそも copy のコスト安いから move 要らないじゃん
ポインターならそもそも copy のコスト安いから move 要らないじゃん
844デフォルトの名無しさん (ワッチョイ 5780-q1nr)
2018/09/30(日) 00:20:38.65ID:aYXyCrkn0 それだったら最初から普通にポインタでかけよ
845デフォルトの名無しさん (ワッチョイ ff80-LozN)
2018/09/30(日) 00:57:02.37ID:GfZkWSkk0 この3冊が、神の書!
Linux プログラミング・インタフェース、Michael Kerrisk、2012
C++11/14 コア言語、江添 亮、2015
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
Linux プログラミング・インタフェース、Michael Kerrisk、2012
C++11/14 コア言語、江添 亮、2015
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
846デフォルトの名無しさん (アウアウウー Sadb-uZyL)
2018/09/30(日) 01:40:28.47ID:CKZYWlYLa >>843
だからmoveいらないって話でしょ
C++のムーブセマンティクスがああなったのは中途半端にスタックを使うスタイルが定着してしまっていて今更ポインタ使えというのは無理があるからで、
本来は所有権の管理さえ適切に行えるようになってさえいればムーブなんか要らんよ
だからmoveいらないって話でしょ
C++のムーブセマンティクスがああなったのは中途半端にスタックを使うスタイルが定着してしまっていて今更ポインタ使えというのは無理があるからで、
本来は所有権の管理さえ適切に行えるようになってさえいればムーブなんか要らんよ
847デフォルトの名無しさん (オッペケ Sr4b-N9wp)
2018/09/30(日) 06:43:45.01ID:C9oWPEnUr C++ Coding Standards って新品で買えないけど代わりになる書籍ありますか?
848デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 06:48:23.20ID:d4gXl3Bi0 >>846
ポインタ使え思想はすでにC#とかなクラスが参照型な言語で実現されているが
オブジェクトの解放にガベージコレクタが要る言語になった
これはガベージコレクタ無し・所有権の無条件移動だけだと、次のようなケースで早速話が破綻するから仕方が無い
void bar(int n) {
std::unique_ptr<Foo> a(new Foo());
for (int i = 0; i < n; i++) {
func1(a, i); // func1(a, 0);で所有権がgone 以降のfunc(a, i)はaの不正アクセス
}
}
不正アクセスにならないように、実際にはこのようなfunc1()にはa.get()でポインタを渡す書き方をする
するとfunc1()以下の呼び出しは全部>>844になる
人類に逃げ場は無い
ポインタ使え思想はすでにC#とかなクラスが参照型な言語で実現されているが
オブジェクトの解放にガベージコレクタが要る言語になった
これはガベージコレクタ無し・所有権の無条件移動だけだと、次のようなケースで早速話が破綻するから仕方が無い
void bar(int n) {
std::unique_ptr<Foo> a(new Foo());
for (int i = 0; i < n; i++) {
func1(a, i); // func1(a, 0);で所有権がgone 以降のfunc(a, i)はaの不正アクセス
}
}
不正アクセスにならないように、実際にはこのようなfunc1()にはa.get()でポインタを渡す書き方をする
するとfunc1()以下の呼び出しは全部>>844になる
人類に逃げ場は無い
849デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 06:53:57.08ID:d4gXl3Bi0 それにポインタ使え思想だと次のようなケースでBaz::m_c[i]のBar:m_b[j]の:Foo::m_aのアクセスに藻前らどんだけ間接参照するんですかと、
class Foo {
SomeClass m_a;
};
class Bar {
Foo m_b[100];
};
class Baz {
Bar m_c[100];
};
class Foo {
SomeClass m_a;
};
class Bar {
Foo m_b[100];
};
class Baz {
Bar m_c[100];
};
850デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 07:13:40.02ID:d4gXl3Bi0 ちな>>849はm_bやm_cが配列であるため、配列アクセス時の添え字が定数なシチュでもない限り、JITでも間接参照回数を3以下にはできん
851デフォルトの名無しさん (ブーイモ MM7b-uZyL)
2018/09/30(日) 09:10:22.74ID:3yGUdTqFM852デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 09:21:04.80ID:d4gXl3Bi0853デフォルトの名無しさん (ブーイモ MM7b-uZyL)
2018/09/30(日) 09:39:54.40ID:3yGUdTqFM >>852
自分でも分かってて揚げ足取ろうとしてるんだろうけど、コーディング時に、プログラマがオブジェクトを生成することを意図したコードを記述した時点で、な
自分でも分かってて揚げ足取ろうとしてるんだろうけど、コーディング時に、プログラマがオブジェクトを生成することを意図したコードを記述した時点で、な
854デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 09:46:24.24ID:d4gXl3Bi0 >>853
いやスマン言い方がまずかったそういう意味ではない
確かに
>所有権を移動するかどうかはほぼ例外なくオブジェクト生成時点で予め分かってるんだから、
というのは真だが、ライブラリのインターフェースに解放が必要なオブジェクトのmoveなど認めたら有り得ないコストが生じるという話
func1()の制作者が所有権を寄越すことを強制した(そういうインターフェース仕様にしてしまった)場合、
func1()を使う人はfunc1()に所有権を渡さねばならない。この結果、
1. 呼び出し元(func1()を使う人)がaをコピーしてコピーをfunc1()に渡さねばならない
2. func1()は呼び出しの度に、aを解放する
というのが>>848のコードでn回無駄に繰り返される
これを避ける方法はあるっていやーあるが、結局func1()以下の呼び出しは全部>>844になる(か、ガベージコレクタの出番となる
人類に逃げ場は無い
いやスマン言い方がまずかったそういう意味ではない
確かに
>所有権を移動するかどうかはほぼ例外なくオブジェクト生成時点で予め分かってるんだから、
というのは真だが、ライブラリのインターフェースに解放が必要なオブジェクトのmoveなど認めたら有り得ないコストが生じるという話
func1()の制作者が所有権を寄越すことを強制した(そういうインターフェース仕様にしてしまった)場合、
func1()を使う人はfunc1()に所有権を渡さねばならない。この結果、
1. 呼び出し元(func1()を使う人)がaをコピーしてコピーをfunc1()に渡さねばならない
2. func1()は呼び出しの度に、aを解放する
というのが>>848のコードでn回無駄に繰り返される
これを避ける方法はあるっていやーあるが、結局func1()以下の呼び出しは全部>>844になる(か、ガベージコレクタの出番となる
人類に逃げ場は無い
855デフォルトの名無しさん (アウアウウー Sadb-uZyL)
2018/09/30(日) 09:52:25.65ID:CKZYWlYLa856デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 10:03:48.10ID:d4gXl3Bi0857デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 10:07:31.97ID:d4gXl3Bi0 いやすまん解放が不要なオブジェクトでも、所有権を移動した場合は>>854の1のコストは避けられないorz
ここは訂正
ここは訂正
858デフォルトの名無しさん (アウアウウー Sadb-uZyL)
2018/09/30(日) 10:11:13.08ID:CKZYWlYLa >>856
スマポのmoveも本体のmoveも一段間接参照が入る以外は何も変わらないって言ってるんだけど、そんなに難しい話かなあ
スマポのmoveも本体のmoveも一段間接参照が入る以外は何も変わらないって言ってるんだけど、そんなに難しい話かなあ
859デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 10:45:39.58ID:d4gXl3Bi0 >>858
>>848、>>849は、現行C++におけるスマポのmoveと本体のmoveの優劣は問題にしていない
848を現行C++のコード風に書いたから誤解を招いたのかもしれないが、比較はあくまで現行C++と846思想の比較であって、
846の次の思想を実行に移したら>>854のコストが避けられませんよという話
1. スタックを使うスタイルはやめるべき(全部スマポであるべき)
2. 所有権の管理さえ適切に行えるようになってさえいれば(現行C++のムーブセマンティクスみたいな)ムーブなんか要らん
1は現行C++との比較において、間接参照回数に響く
2は現行C++との比較において、現行C++では避けられるコスト(>>854またはガベージコレクション)を無駄に背負い込むことになる
>>848、>>849は、現行C++におけるスマポのmoveと本体のmoveの優劣は問題にしていない
848を現行C++のコード風に書いたから誤解を招いたのかもしれないが、比較はあくまで現行C++と846思想の比較であって、
846の次の思想を実行に移したら>>854のコストが避けられませんよという話
1. スタックを使うスタイルはやめるべき(全部スマポであるべき)
2. 所有権の管理さえ適切に行えるようになってさえいれば(現行C++のムーブセマンティクスみたいな)ムーブなんか要らん
1は現行C++との比較において、間接参照回数に響く
2は現行C++との比較において、現行C++では避けられるコスト(>>854またはガベージコレクション)を無駄に背負い込むことになる
860はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/09/30(日) 10:52:02.74ID:56zUhffF0 >>858
本体のムーブも、ムーブ出来るように書いたらカスタムなスマートポインタみたいになるから、
間接参照が入っちゃうので、なおさら同じではあると思う。
でもまあ、ムーブは抽象化の方法であって、
最終的に実行されることが同じだからなくても良いってのは暴論よね。
本体のムーブも、ムーブ出来るように書いたらカスタムなスマートポインタみたいになるから、
間接参照が入っちゃうので、なおさら同じではあると思う。
でもまあ、ムーブは抽象化の方法であって、
最終的に実行されることが同じだからなくても良いってのは暴論よね。
861デフォルトの名無しさん (オッペケ Sr4b-hm9e)
2018/09/30(日) 11:10:34.99ID:f0zM7Hcdr アンダースコアとドットをこの順で必ず含む string があったとして、アンダースコアからドットまでの部分文字列を切り出す処理って一行で書ける?
substr と find_first_of と find_last_of を組み合わせる方法を考えたんだが、
アンダースコアの前を削る;
ドットの後を削る;
という2行に渡るやり方しか思い付かない
substr と find_first_of と find_last_of を組み合わせる方法を考えたんだが、
アンダースコアの前を削る;
ドットの後を削る;
という2行に渡るやり方しか思い付かない
862デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 11:15:56.30ID:d4gXl3Bi0 ちな
>スマポのmoveも本体のmoveも一段間接参照が入る以外は何も変わらないって
これは現行C++においても違う違いがワカル男ならワカル
func1()からfunc2()にfunc1()の自動変数aをmoveするとして、かつfunc2()はインライン展開されるとすると、
func2()におけるaのメンバへのアクセスはfunc1()呼び出し時点でのスタックポインタ相対で一発でやれる
一方、aがスマポだったりすると、aのメンバへのアクセスの前に、func1()呼び出しの都度1回はスタックポインタ相対でaのアドレスを得なければならない
>スマポのmoveも本体のmoveも一段間接参照が入る以外は何も変わらないって
これは現行C++においても違う違いがワカル男ならワカル
func1()からfunc2()にfunc1()の自動変数aをmoveするとして、かつfunc2()はインライン展開されるとすると、
func2()におけるaのメンバへのアクセスはfunc1()呼び出し時点でのスタックポインタ相対で一発でやれる
一方、aがスマポだったりすると、aのメンバへのアクセスの前に、func1()呼び出しの都度1回はスタックポインタ相対でaのアドレスを得なければならない
863デフォルトの名無しさん (ブーイモ MM7b-uZyL)
2018/09/30(日) 11:27:40.54ID:fM5IaZg4M オブジェクト本体のメモリのコピーにかかるコストを考慮すればどっちもどっち
864デフォルトの名無しさん (ワッチョイ 9fa2-aemA)
2018/09/30(日) 11:54:22.15ID:u5/6mv7u0 >>861
substr じゃなくて、コンストラクタ使えばいいんじゃね
string t(s.begin() + s.find_first_of('_') + 1, s.begin() + s.find_last_of('.'));
substr じゃなくて、コンストラクタ使えばいいんじゃね
string t(s.begin() + s.find_first_of('_') + 1, s.begin() + s.find_last_of('.'));
865デフォルトの名無しさん (オッペケ Sr4b-hm9e)
2018/09/30(日) 12:29:37.73ID:f0zM7Hcdr >>864
なるほど、ためになります
なるほど、ためになります
866デフォルトの名無しさん (オッペケ Sr4b-hm9e)
2018/09/30(日) 12:35:17.89ID:f0zM7Hcdr >>864
ふと気になったのですが、このコンストラクタの挙動って他の名前の関数で実装されてないんでしょうか?
ふと気になったのですが、このコンストラクタの挙動って他の名前の関数で実装されてないんでしょうか?
868デフォルトの名無しさん (オッペケ Sr4b-hm9e)
2018/09/30(日) 13:18:31.87ID:f0zM7Hcdr >>867
何から何までありがとうございます
何から何までありがとうございます
869デフォルトの名無しさん (ワッチョイ bf9f-e6iu)
2018/09/30(日) 14:15:51.90ID:QSRvujde0 「rustにもあるし俺らも入れなきゃ」くらいの感覚で
今までのシステムとの統合性の難しさなんかほぼ考えないで入れちゃった機能だから。
c++らしいといえばらしい感覚だけど。
今までのシステムとの統合性の難しさなんかほぼ考えないで入れちゃった機能だから。
c++らしいといえばらしい感覚だけど。
870デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/09/30(日) 14:22:42.56ID:d4gXl3Bi0 std::basic_string::find()もイテレータを返すように他のコレクションとの統合性を尊重して欲しいよな
871デフォルトの名無しさん (ワッチョイ 77c7-aemA)
2018/09/30(日) 22:56:12.57ID:SdlFi6Ao0 findを実行した対象とは別のstringの同じ位置に何かしたいとき
イテレータで返されるとちょっとだけ面倒
まあ大した問題でもないんだけど
イテレータで返されるとちょっとだけ面倒
まあ大した問題でもないんだけど
872デフォルトの名無しさん (ワッチョイ bf8a-ClIk)
2018/10/01(月) 17:20:37.02ID:mKeAnbBU0 moveセマンテックが必要になった理由を理解してないのが多くて驚くばかりだな
破壊して良い中間オブジェクトとそうじゃないのとを区別するために必要なのだよ
ポインタ使えばmove必要ないとかそういう問題じゃない
破壊して良い中間オブジェクトとそうじゃないのとを区別するために必要なのだよ
ポインタ使えばmove必要ないとかそういう問題じゃない
873デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 17:40:58.61ID:qsdLJDx40 元はといえば禿が左辺値参照でもconstつければ右辺値を指せるという曲がった話を始めたのが
評判悪くてC++11でやっとやっとやっとやっとメスが入ったのが本当の理由
評判悪くてC++11でやっとやっとやっとやっとメスが入ったのが本当の理由
874はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/01(月) 18:05:01.87ID:hbafP85H0875デフォルトの名無しさん (ワッチョイ f7c3-2BxS)
2018/10/01(月) 18:05:54.55ID:Gge6W+rt0 Cにも欲しいわ
Cは参照ないから右辺値指示ポインタで
Cは参照ないから右辺値指示ポインタで
876デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 18:09:04.02ID:qsdLJDx40 それを言うなら、右辺値の概念を撤廃すべきでしょ
どんな値もポインタで指すことができ、
ポインタで指すことでregister指定を解除されるという変更
どんな値もポインタで指すことができ、
ポインタで指すことでregister指定を解除されるという変更
877デフォルトの名無しさん (ワッチョイ 1704-ClIk)
2018/10/01(月) 18:12:32.93ID:UY4lJdAP0 テンポラリーオブジェクトなくすと、一回必ず厳密に生成してから仕様になるので、手間増えると思う。
878デフォルトの名無しさん (ワッチョイ f7c3-2BxS)
2018/10/01(月) 18:40:21.84ID:Gge6W+rt0 右辺値がないと int i = 0; すら書けなくなるんだが
879デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 18:50:50.76ID:qsdLJDx40 なんで?
int j;
j ^= j;
int i = j;
左辺値でも問題ないじゃん
int j;
j ^= j;
int i = j;
左辺値でも問題ないじゃん
880デフォルトの名無しさん (オイコラミネオ MM4f-IJfJ)
2018/10/01(月) 18:54:00.22ID:xwh6ZD/vM >>879
苦しいねーw
苦しいねーw
881デフォルトの名無しさん (ワッチョイ 77e3-c2ki)
2018/10/01(月) 19:00:24.21ID:Yquio+NL0 0 以外はどうすんの。
882デフォルトの名無しさん (ワッチョイ f7c3-2BxS)
2018/10/01(月) 19:02:25.38ID:Gge6W+rt0 > j ^= j;
はい未初期化値を使ったから未定義動作で鼻から悪魔
はい未初期化値を使ったから未定義動作で鼻から悪魔
883デフォルトの名無しさん (ワッチョイ 77e3-c2ki)
2018/10/01(月) 19:04:34.50ID:Yquio+NL0 char buf[1];
int i = (int)(buf[10] - buf[0]);
で、i = 10 に初期化される。
int i = (int)(buf[10] - buf[0]);
で、i = 10 に初期化される。
884デフォルトの名無しさん (オイコラミネオ MM4f-IJfJ)
2018/10/01(月) 19:05:56.72ID:xwh6ZD/vM NaNのときはxorは未定義か、そこまで考えなかったな
885デフォルトの名無しさん (ワッチョイ 9f7c-c2ki)
2018/10/01(月) 19:06:32.55ID:uXaVofwo0886デフォルトの名無しさん (ワッチョイ bf9f-e6iu)
2018/10/01(月) 19:11:01.98ID:rJND5eoS0 そもそも=の無理やりなオーバーロードや引数に対する暗黙的なattainが問題なんだろう。
しかし元々のcのシンタックスを引き継ぎつつ、上記の問題を解決するのは不可能。
しかし元々のcのシンタックスを引き継ぎつつ、上記の問題を解決するのは不可能。
887デフォルトの名無しさん (ワッチョイ f7c3-2BxS)
2018/10/01(月) 19:14:47.64ID:Gge6W+rt0888デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 19:19:47.07ID:qsdLJDx40 >>881
別に?
int *j;
j = &10;
int i = *j;
てだけじゃん
10が左辺値だったらって話ね
char *j;
j = "\n";
int i = *j;
て話と何か違うの?
別に?
int *j;
j = &10;
int i = *j;
てだけじゃん
10が左辺値だったらって話ね
char *j;
j = "\n";
int i = *j;
て話と何か違うの?
889デフォルトの名無しさん (ワッチョイ f7c3-2BxS)
2018/10/01(月) 19:23:45.27ID:Gge6W+rt0 10が左辺値ならこれ認めるの?
10 = 42;
10 = 42;
890デフォルトの名無しさん (ワッチョイ 574e-2bq/)
2018/10/01(月) 21:57:05.81ID:92NEoPQV0 お前らがC++で作ったことあるものリスト化して
891デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 22:37:33.40ID:qsdLJDx40892デフォルトの名無しさん (ワッチョイ 9f02-aemA)
2018/10/01(月) 22:42:30.92ID:qsdLJDx40893デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/10/01(月) 23:15:35.29ID:2m3Ms8fl0 >>874
ていうか所有権などという中途半端な概念にオブジェクトの解放を担わせるのは危険か無意味かのどっちかにしかならない
最後までオブジェクトを使いたい人と、そのオブジェクトを所有する人を
コードに所有権を明示するスタイルで一致させられるケースは少ない
希ガス
ていうか所有権などという中途半端な概念にオブジェクトの解放を担わせるのは危険か無意味かのどっちかにしかならない
最後までオブジェクトを使いたい人と、そのオブジェクトを所有する人を
コードに所有権を明示するスタイルで一致させられるケースは少ない
希ガス
894デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/10/01(月) 23:21:45.86ID:2m3Ms8fl0 しかしながら右辺値参照を使うとコードを書く人がオブジェクトの所有権を意識せざるを得ない
これを抽象化といわれるとかなり違和感
※ 個人の感想です
これを抽象化といわれるとかなり違和感
※ 個人の感想です
895デフォルトの名無しさん (ワッチョイ bf9f-e6iu)
2018/10/01(月) 23:31:19.12ID:rJND5eoS0 結局ネストしたオブジェクトってのはどう扱おうと楽な扱いなんてできんってことなんだわ。
同期と効率と安全性を全て容易にするってのは不可能なんじゃないかね。
同期と効率と安全性を全て容易にするってのは不可能なんじゃないかね。
896デフォルトの名無しさん (ワッチョイ 9fbd-G9Ql)
2018/10/01(月) 23:41:31.83ID:2m3Ms8fl0 >>895
>結局ネストしたオブジェクトってのはどう扱おうと楽な扱いなんてできんってことなんだわ。
いや?
オブジェクトの所有権は最初のcallerががっちり掴んでオブジェクトを使うcallee以下は生ポでおk
全てが調和する
>結局ネストしたオブジェクトってのはどう扱おうと楽な扱いなんてできんってことなんだわ。
いや?
オブジェクトの所有権は最初のcallerががっちり掴んでオブジェクトを使うcallee以下は生ポでおk
全てが調和する
897デフォルトの名無しさん (ワッチョイ 5780-q1nr)
2018/10/01(月) 23:46:11.02ID:zfKNS/F/0 アホどもはやっと気付いたか。。。
コタエ:最初から普通にポインタで書きなさい
unique_ptr、shared_ptr、weak_ptrなんか使ってるヤツラは
クルクルパーしかいない
コタエ:最初から普通にポインタで書きなさい
unique_ptr、shared_ptr、weak_ptrなんか使ってるヤツラは
クルクルパーしかいない
898デフォルトの名無しさん (ワッチョイ 17b3-kFNE)
2018/10/01(月) 23:49:34.85ID:aHxMqUX30 >>894
右辺値参照周りを抽象化とか言ってるアホははちみつだけだろ
右辺値参照周りを抽象化とか言ってるアホははちみつだけだろ
899デフォルトの名無しさん (アウアウウー Sadb-mlbx)
2018/10/02(火) 00:39:52.22ID:YrRJAaFSa https://ideone.com/BBhHn8
上のコードで教えて欲しい。
templateでデフォルト引数で関数を指定する場合、わざわざテンプレートパラメーターFuncにdecltype(...)しなきゃいけないのは何故?
上のコードで教えて欲しい。
templateでデフォルト引数で関数を指定する場合、わざわざテンプレートパラメーターFuncにdecltype(...)しなきゃいけないのは何故?
900デフォルトの名無しさん (ワッチョイ 17b3-aemA)
2018/10/02(火) 01:21:04.00ID:HQVsIoxF0901はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/02(火) 02:10:18.78ID:wuORmtyC0 >>894
ムーブだのなんだの言ってても、
C++ の言語機能として直接的に有るのは rvalue 参照を区別して受け取れるってだけで、
所有権の管理をキッチリやってくれるわけではない C++ の限界なんだよね。
だけど、なるべくクラス・関数の実装の中に区別を押し込めて隠す道具のひとつにはなるって話。
でも、中途半端にやるなら隠さないで見せた方がマシという論はわかる。
ムーブだのなんだの言ってても、
C++ の言語機能として直接的に有るのは rvalue 参照を区別して受け取れるってだけで、
所有権の管理をキッチリやってくれるわけではない C++ の限界なんだよね。
だけど、なるべくクラス・関数の実装の中に区別を押し込めて隠す道具のひとつにはなるって話。
でも、中途半端にやるなら隠さないで見せた方がマシという論はわかる。
902はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/02(火) 05:46:40.59ID:wuORmtyC0 受取る関数の側を上手く作っておけば
それを使う側では所有権の移動とかそんなに気にしなくない?
rvalue だったら勝手にちょっと効率的になる (こともある) ねってだけで。
使うときに気にしなくて良いように押し込められるならやっぱり抽象化の道具って言えると思うよ。
それを使う側では所有権の移動とかそんなに気にしなくない?
rvalue だったら勝手にちょっと効率的になる (こともある) ねってだけで。
使うときに気にしなくて良いように押し込められるならやっぱり抽象化の道具って言えると思うよ。
903デフォルトの名無しさん (アウアウウー Sadb-mlbx)
2018/10/02(火) 06:04:33.19ID:YrRJAaFSa904はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/02(火) 06:50:19.11ID:wuORmtyC0 >>903
デフォルト引数からはテンプレート引数を推定できない制限がある。
デフォルト引数からはテンプレート引数を推定できない制限がある。
905デフォルトの名無しさん (アウアウウー Sadb-mlbx)
2018/10/02(火) 07:00:39.49ID:YrRJAaFSa なるほどです。
906デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 07:46:51.87ID:kk/2dA0Y0 時々、イラつかされる制限だ
907デフォルトの名無しさん (ラクッペ MM0b-2bq/)
2018/10/02(火) 08:15:45.67ID:Tcj3k2lbM >>890
C++が得意なことを教えてください
C++が得意なことを教えてください
908デフォルトの名無しさん (ブーイモ MM7b-uZyL)
2018/10/02(火) 10:26:10.74ID:giBEQZ0BM909デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 10:31:03.15ID:kk/2dA0Y0 冗談は顔だけにしろよ
たとえばstd::threadの右辺値参照なんぞ意識してるか?
たとえばstd::threadの右辺値参照なんぞ意識してるか?
910デフォルトの名無しさん (ワッチョイ 17b3-kFNE)
2018/10/02(火) 13:13:32.45ID:8CvSI5wK0 一行目に何の意味があるのかわからん
911デフォルトの名無しさん (JP 0H4f-ZVm4)
2018/10/02(火) 15:51:55.37ID:Xh7D/bbnH 割と昔からあるプログラムを見てるんですけど一つのメソッド内で
for(int i = 0; ……){……}
for(i = 0;……){……}
って書き方してるのをちらほら見ます
要は宣言してるんだから使い回せるだろみたいな理屈なんでしょうがビルドしようとすると当然未定義だとエラーが出ます
昔のC++だとこれがオッケーだったりしたんでしょうか?
for(int i = 0; ……){……}
for(i = 0;……){……}
って書き方してるのをちらほら見ます
要は宣言してるんだから使い回せるだろみたいな理屈なんでしょうがビルドしようとすると当然未定義だとエラーが出ます
昔のC++だとこれがオッケーだったりしたんでしょうか?
912デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 15:56:06.09ID:kk/2dA0Y0 そうだよ
913デフォルトの名無しさん (ラクッペ MM0b-2bq/)
2018/10/02(火) 16:33:18.83ID:Tcj3k2lbM c++で初心者が作れるものを教えてください
914デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 16:37:39.73ID:kk/2dA0Y0 rogueとか作って見てはどうよ
SetConsoleCursorPositionとGetKeyStateがあれば何とかなるだろ
SetConsoleCursorPositionとGetKeyStateがあれば何とかなるだろ
915はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/02(火) 16:39:28.61ID:wuORmtyC0916デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 17:18:00.03ID:kk/2dA0Y0 今のコンパイラでも当時の仕様に合わせるオプションはある
917デフォルトの名無しさん (ラクッペ MM0b-2bq/)
2018/10/02(火) 18:04:17.03ID:Tcj3k2lbM >>914
ありがとう
ありがとう
918デフォルトの名無しさん (ラクッペ MM0b-2bq/)
2018/10/02(火) 19:05:29.79ID:Tcj3k2lbM C++.でバッチ処理やbashのsedの様な機能はありますか?
919デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/02(火) 19:11:57.50ID:kk/2dA0Y0 システムコマンドを実行したいのならsystem関数
正規表現ならstd::regexクラス
ファイル名に関する様々なことはstd::filesystem::pathクラス
正規表現ならstd::regexクラス
ファイル名に関する様々なことはstd::filesystem::pathクラス
920デフォルトの名無しさん (ワッチョイ 574e-2bq/)
2018/10/02(火) 20:37:48.16ID:YnEH1wx10921デフォルトの名無しさん (オッペケ Sr4b-N9wp)
2018/10/03(水) 01:07:54.12ID:S2BN/gu+r std::array を自作関数の引数に渡したいときって、サイズはハードコードしないとダメなの?
922さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d7b3-uTcE)
2018/10/03(水) 01:11:26.75ID:gXNqr2Qf0923デフォルトの名無しさん (オッペケ Sr4b-N9wp)
2018/10/03(水) 01:18:33.15ID:S2BN/gu+r924デフォルトの名無しさん (オッペケ Sr4b-N9wp)
2018/10/03(水) 01:18:50.70ID:S2BN/gu+r925デフォルトの名無しさん (ワッチョイ 1708-ClIk)
2018/10/03(水) 03:04:58.67ID:plRFOjxw0926はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/03(水) 05:02:16.81ID:jiQInXAP0 >>925
たぶんそれより更に前の話だったと思う。
「c++ for文 宣言 スコープ」でググったらこういうのとかヒットした。
http://www.ksky.ne.jp/~seahorse/cpp/loopvar.html
D&E でも言及があって、 if 文でのルールと合わせる形で修正したという話が載ってる。
たぶんそれより更に前の話だったと思う。
「c++ for文 宣言 スコープ」でググったらこういうのとかヒットした。
http://www.ksky.ne.jp/~seahorse/cpp/loopvar.html
D&E でも言及があって、 if 文でのルールと合わせる形で修正したという話が載ってる。
927デフォルトの名無しさん (ワッチョイ 373d-0kAr)
2018/10/03(水) 05:31:10.20ID:F+YgKz680928はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/03(水) 05:33:04.20ID:jiQInXAP0 ARM (The Annotated C++ Reference Manual; http://amzn.asia/d/53K2HrA ) を確認してみたら、
「初期設定文が宣言ならば、宣言された変数のスコープは for 文を囲むブロックの終わりまでである」
というような記述がある。 (要するに古い仕様)
このあたりから C++98 になるまでの間に修正したってことなんじゃないかと。
「初期設定文が宣言ならば、宣言された変数のスコープは for 文を囲むブロックの終わりまでである」
というような記述がある。 (要するに古い仕様)
このあたりから C++98 になるまでの間に修正したってことなんじゃないかと。
929デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/03(水) 07:01:52.10ID:IEc6BJqm0930デフォルトの名無しさん (スッップ Sdbf-wTw4)
2018/10/03(水) 11:00:28.82ID:e50Rb7+yd >>925
最初期の処理系、AT&T cfront の頃からの仕様だから 1980年台だと思う
ちなみに有名な Annotated C++ Reference Manual (ARM) は
この cfront のリファレンスマニュアルに注を付けたもの。
Mac II が出た頃の Mac のソフト開発者は Apple の MPW という開発環境の上で
AT&T のリファレンスマニュアル見ながら cfront で開発していた。
最初期の処理系、AT&T cfront の頃からの仕様だから 1980年台だと思う
ちなみに有名な Annotated C++ Reference Manual (ARM) は
この cfront のリファレンスマニュアルに注を付けたもの。
Mac II が出た頃の Mac のソフト開発者は Apple の MPW という開発環境の上で
AT&T のリファレンスマニュアル見ながら cfront で開発していた。
931デフォルトの名無しさん (スッップ Sdbf-wTw4)
2018/10/03(水) 11:03:08.53ID:e50Rb7+yd >>925
>しかし検索しても全然出てこないというかどう検索したら良いものか。
当時まだ処理系と独立して言語仕様を策定/記述したものは存在していなくて、
上記の cfront のリファレンスマニュアルと cfront の実際の動作が c++ の仕様でした。
>しかし検索しても全然出てこないというかどう検索したら良いものか。
当時まだ処理系と独立して言語仕様を策定/記述したものは存在していなくて、
上記の cfront のリファレンスマニュアルと cfront の実際の動作が c++ の仕様でした。
932デフォルトの名無しさん (ワッチョイ 17b3-kFNE)
2018/10/03(水) 12:23:08.82ID:eWsEWXO50933デフォルトの名無しさん (ワッチョイ 9702-aemA)
2018/10/03(水) 13:10:09.63ID:IEc6BJqm0 >>932
俺だったらこう書くぜ
{ for(int i = 0; i < 1; i++) ; }
{ for(int i = 0; i < 1; i++) ; }
前提にしている環境を誤解させかねない変態コードには反対だ
俺だったらこう書くぜ
{ for(int i = 0; i < 1; i++) ; }
{ for(int i = 0; i < 1; i++) ; }
前提にしている環境を誤解させかねない変態コードには反対だ
934デフォルトの名無しさん (ワッチョイ 9f23-wTw4)
2018/10/03(水) 13:21:21.77ID:2zzoZNSm0 ヘタレな俺は c 同様直近のブロックの頭で宣言してました
935はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-aemA)
2018/10/03(水) 17:25:53.30ID:jiQInXAP0 >>934
今では C でもブロックの頭という縛りは無いやで。
今では C でもブロックの頭という縛りは無いやで。
936デフォルトの名無しさん (オッペケ Sr4b-N9wp)
2018/10/03(水) 22:30:16.11ID:T5RLH7Axr std::array ってコンパイル時にサイズが決まっていることを想定して作られてるんだよね?
だったら、「可変長ではないがサイズは実行時に決まる」というメモリが連続な配列がほしいなら生配列を使え、というのが C++ を作った人の気持ちなの?
だったら、「可変長ではないがサイズは実行時に決まる」というメモリが連続な配列がほしいなら生配列を使え、というのが C++ を作った人の気持ちなの?
937デフォルトの名無しさん (アウアウウー Sadb-mlbx)
2018/10/03(水) 23:04:38.92ID:p3pJJViFa それこそvectorじゃないの
938デフォルトの名無しさん (ワッチョイ 1704-ClIk)
2018/10/03(水) 23:19:51.08ID:frDsf1q90 >>936
いや、昔はイニシャライザーリストがなかったので、初期化式が使えるオブジェクトの立ち位置だった。
イニシャライザーリストが入ったのでほぼ産廃。constexprの対応もなく死んでいる。
基本的に配列っぽいものがほしかったらベクター使ってっていう趣旨だったと思う。
いや、昔はイニシャライザーリストがなかったので、初期化式が使えるオブジェクトの立ち位置だった。
イニシャライザーリストが入ったのでほぼ産廃。constexprの対応もなく死んでいる。
基本的に配列っぽいものがほしかったらベクター使ってっていう趣旨だったと思う。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「高市さん負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 [樽悶★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 【為替】対ドルで157円台、対ユーロ181円台に下落 財政悪化を警戒 [蚤の市★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 関係者「高市首相は円安のデメリットをいまひとつ、わかっていないようだ」 [435756605]
- 山上の妹「母の部屋には安倍晋三が表紙の統一の機関紙がいつも置いてた」 [961870172]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 中国に喧嘩売ったジャップwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
- 心臓って抜き取られたら即死なの?
