[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/17 15:19 / Filesize : 258 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part119



1 名前:デフォルトの名無しさん [2015/08/31(月) 18:19:04.13 ID:NE3NvROE.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part118
peace.2ch.net/test/read.cgi/tech/1435970316/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

175 名前:デフォルトの名無しさん [2015/09/07(月) 21:24:45.26 ID:107fD43G.net]
え!?俺も昨日同じこと考えたとこだった!

176 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 21:26:55.88 ID:xAuYi2fm.net]
ちょっと>>169が何言ってるかわからない

177 名前:デフォルトの名無しさん [2015/09/08(火) 10:01:21.06 ID:LEkrsXyv.net]
typelistの代わりにtuple使ってるんだけどなんかダサいから
typelistの可変引数版みたいなのを自作しようと思います

178 名前:デフォルトの名無しさん mailto:sage [2015/09/08(火) 12:57:45.86 ID:rdzMyuc+.net]
俺も俺も

179 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 14:29:57.70 ID:vNCRKT6f.net]
unique_ptrで配列を使う場合、テンプレート引数はどうするんでしょうか?
unique_ptr<int> p(new int[3]);
unique_ptr<int[]> p(new int[3]);
はどちらもGNU C++11でコンパイルが通りますが、両者は同じですか?

180 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 17:14:13.20 ID:tn/zLcPl.net]
>>175
前者は消滅時に変なdeleteが呼ばれるんじゃね

181 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 18:13:22.19 ID:vNCRKT6f.net]
>>176
share_ptrの場合<int[]>だとコンパイルエラーになりますが、
unique_ptrは配列の特殊化があるので<int[]>にしないとダメということでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 18:33:57.55 ID:jMDA+bxl.net]
はい

183 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 19:52:32.49 ID:Ubq2dser.net]
shared_ptrってなんで配列の特殊化が用意されてないんだろうね
代わりにshared_arrayがあったと思うけど、要するに生配列なんてクソなものは使うなよってことなのかね



184 名前:デフォルトの名無しさん mailto:sage [2015/09/10(木) 20:18:56.37 ID:dU3rTPO3.net]
>shared_array
いえそんなものありません

185 名前:デフォルトの名無しさん [2015/09/10(木) 20:26:28.15 ID:2c1W3PII.net]
shared_ptr<array<int,3>>で

186 名前:デフォルトの名無しさん [2015/09/10(木) 20:42:53.70 ID:XPHYFe1B.net]
unique_ptr<T[]>は知的興味でしかないだろうな
なぜなならアーレイやベクトルやストリングがあるからさ
そんな僕でもこれらデータ構造よりもunique_ptr<T[]>が使えると思いつく場面はあるんだ
それはヒープ配列の生のポインターをAPIで所有権をうけとるときたった一つさ

187 名前:デフォルトの名無しさん [2015/09/10(木) 23:41:24.04 ID:Lt3YsJ/Z.net]
> アーレイ
和服の彼女かとおもた

188 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 10:32:13.74 ID:yGFUVtFx.net]
そういえばshare_ptrの参照カウンタって
実際の情報はどこで保持されてるんでしょうか?

189 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 10:33:39.57 ID:H6P2Jlk5.net]
ソース見ればいい

190 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 11:22:30.30 ID:Ra3TP7iE.net]
ソースみれば分かるが動的に確保しているよ
ただし高速化の工夫はしてある

191 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 14:11:15.39 ID:yGFUVtFx.net]
share_ptrのソース見ましたが、atomic型を使って
うまいことやってるというくらいしか分かりませんでした

atomicについて知らなかったので調べたんですが、
これってC++11のメモリモデルに関するもので、
いわば言語のコアの機能なんですね

192 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 14:12:30.08 ID:yGFUVtFx.net]
つまりC++11以前やCではこのshare_ptrを直接実装する方法はなく、
たとえば参照カウンタを持つクラスを用意し、これをshare_ptrさせたい
クラスに継承させるという間接的な方法しかないということですよね?

193 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 14:20:50.61 ID:ZeO2NzYz.net]
んなわけねーだろ



194 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 15:00:10.29 ID:xy/6VGnh.net]
C++11で、型推論autoを使って楽をしようと思ったんだが、
2つの変数の型を自動的に整合させる方法が分からないのだ。

void some_job() {
const auto loop_times = 10;

for (auto cnt = 0; cnt != loop_times; ++cnt) {
/* ループ内の処理 */
}
} // (インデントはおそらく破壊される)

上の場合、ループ回数 loop_times と、ループカウンタ cnt は
どちらのautoもintと判断されるのでとりあえず一致する。
しかし auto loop_times の初期値にintでない値を与えると
当然ながら loop_times と cnt の型が違ってしまう。

「cntの型は、loop_timesの型からconstを外したものだよ」
という変数宣言の書き方はないだろうか?

諸兄らの教えを乞いたい。

195 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 15:18:09.86 ID:yGFUVtFx.net]
>>189
どのへんが間違ってるんですか?
C++初心者にもわかる説明だとありがたいです

196 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 15:43:03.84 ID:BdWqvAgc.net]
>>190
ttp://ideone.com/CTjWaa
これでどうよ

>>191
boost::shared_ptrのソースでも見てみれば
shared_ptrが標準に入ったのは11からだけどそれ以前にもshared_ptrはあったんだから

197 名前:190 mailto:sage [2015/09/11(金) 18:00:12.76 ID:xy/6VGnh.net]
>>192
まさに希望した通りの情報です。感謝します。
std::remove_const 云々 と書くのか。

sizeof() と typeid().name() とで並べて見たところ
loop_times と cnt の型は一致した。
loop_times = 10U; や loop_times = '3'; でも
試したら自動的に型が合った。


テンプレート構造体に閉じ込めたtypedefか。
こんな仕掛けを思いつくとは尊敬すべき変態さん達だな。

198 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 19:32:57.26 ID:eMWeHauN.net]
これって
const auto && loop_times = 10;
でも動くんか?
そこはdecayじゃないのかって思ったんだけど

199 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 21:03:06.98 ID:yGFUVtFx.net]
>>192
よく見てみたら、参照カウンタ自体の仕組みはごく単純で、自分のイメージ通りでした
というか、そもそも自分がshare_ptrの使い方をちゃんと理解していませんでした
share_ptrに生ポインタ渡せるのは初回だけなんですね・・・
ideone.com/mysMec

スレ汚し失礼しました

200 名前:デフォルトの名無しさん [2015/09/11(金) 23:54:45.84 ID:b8iFLD3f.net]
コーディング言語は「オープンソース」が制す:Github人気調査結果 ≪ WIRED.jp
wired.jp/2015/09/11/github-coding-languages-open-source/
wired.jp/wp-content/uploads/2015/09/wiredus09101024x541.jpg

201 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 01:27:55.77 ID:JUZlHW5G.net]
Rubyがそんなに上位だと思えないけどなぁ

202 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 02:10:12.94 ID:xJrAsa7q.net]
ま、どうせcssとか入ってくる調査だし

でも混ぜこぜでもcssに負けてんのはちょっと面白い

203 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 04:58:03.64 ID:oXtx5tH/.net]
HTMLとJavaScriptとCSSのみっつが順位を競う
プログラミング言語ランキングとは
サイトの名前をwiredからweirdに変えた方がいい



204 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 13:10:32.88 ID:JUZlHW5G.net]
だよねぇ。おかしいよねぇ。
なんだかんだCは上位にいると思う。

205 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 13:17:01.58 ID:VGFicEEt.net]
9位は十分上位だろう
githubはもともとスクリプト書いてる人が多く使ってたから
ああいう順位なんだと思うよ

206 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 14:01:59.69 ID:kwHtj/5N.net]
マルチスレッドとグローバル変数の寿命に関する質問なのですが
detachしたスレッドが,メインスレッド終了後も生き続けてもグローバル変数にアクセスしても問題はありませんか?
StackOverflowなどには大丈夫だという回答があり、簡単なテストコードでも問題は無かったのですが
クラス内static変数にアクセスしたときに時々異常終了したことがあったので少し不安です

207 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 14:06:47.33 ID:JUZlHW5G.net]
便乗質問 メインスレッドを終了してもコスレッドは生きてるんでしたけ? まずそこから・・・

208 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 14:06:59.24 ID:5QpLz49+.net]
問題あるだろ

209 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 14:37:23.35 ID:kwHtj/5N.net]
>>203
生きてないですね(核爆

210 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 15:31:31.26 ID:Jf5oAWRg.net]
コンストラクタ() = delete;
これってなんですか

211 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 15:52:40.95 ID:uQU/vJQH.net]
cppreference.comでは以下のように説明されている
>Inhibiting the automatic generation of a default constructor by the compiler.

212 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 16:38:30.48 ID:Jf5oAWRg.net]
コンストラクタを書かないのとどう違うのですか?

213 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 16:40:31.69 ID:pEVoCQGH.net]
書かないと自動生成されるだろ



214 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 16:41:18.68 ID:9veCOfSe.net]
コンストラクタ書かなきゃいけなくなる

215 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 16:41:52.46 ID:9veCOfSe.net]
デフォルト以外の

216 名前:デフォルトの名無しさん [2015/09/12(土) 16:43:08.92 ID:Hpj3Z5wB.net]
ビッグ4の法則はコンストラクターには成り立たないからな

217 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 18:04:37.15 ID:fhFqy1Q7.net]
見たとおりコンストラクターが定義される
ただし使うとコンパイルエラーになる特別な本体で

定義されるので書かなかったときの自動生成は行われないし
privateで書いて生成禁止にしてもfriendからアクセス出来てしまうという誤りを防げる

218 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 21:36:31.32 ID:XAqQ9sMD.net]
素直に単純に

コンパイラのコンストラクタの自動生成を阻止する

とせずに

使えない特殊なコンストラクタを定義

コンストラクタがあるので自動生成されない

という回りくどいプロセスを踏んでいるのは何故ですか?

219 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 21:46:02.85 ID:mqPDPmPF.net]
>>214
どっちが回りくどいかもう一度考えてみたら?

220 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 21:48:41.33 ID:urgaTojg.net]
>>213の二段落目二行目のためでは

221 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 22:39:51.40 ID:fhFqy1Q7.net]
>>214
そりゃ>>207のサイトが嘘つきなだけで
自動生成を抑止するためじゃなく
使えない関数を定義することが目的だからね
ideone.com/LKN3q1

222 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 01:24:33.20 ID:T9Cd4+Hx.net]
目的は書く人次第だが

223 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 01:28:55.66 ID:Auzbsz6v.net]
つまり>>207>>217も目的を決めつけた嘘つきってことですね



224 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 02:17:23.86 ID:T9Cd4+Hx.net]
どうでもいい

225 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 03:41:04.36 ID:6aqKmbgS.net]
使えない関数を定義しているのではなく、そのシグネチャの関数がdeletedであることを宣言しているのだろう。

適用されるのは同じ翻訳単位だけなのでは?

226 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 04:33:23.08 ID:fzKWBIn4.net]
>>221
そのレスする意味ある?

227 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 05:08:08.47 ID:6aqKmbgS.net]
>>213みたいな無駄にややこしい上に誤った説明をそのままにしておくのは無責任なのでは?

228 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 05:42:13.47 ID:fzKWBIn4.net]
そうじゃなくて、そのレス何も説明してないでしょ
他人を批判する前に自分を省みろって

229 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 06:21:11.66 ID:oxWskyTT.net]
>>221
deleteが同じ翻訳しか適用されなくても
delete関数はインライン関数だから
違う翻訳単位でdeleteじゃかったらODR違反
問題ない

230 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 08:36:35.77 ID:GRWOhyHT.net]
std::queue<T>についてなんですが
clear()メソッドが無いのは何か理由有り?

一応pop()がデータを返さなくてfront()で先頭要素にアクセスしてからpop()すべき仕様なのは
極力先頭要素のコピーをしたくなくて、参照で済ませたいからだと推測できるのですが
clear()が無い理由はちょっと…

231 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 08:40:43.87 ID:1aU/2qC8.net]
>>226
データ構造上、コンテナを使い回すメリットがないから
新たにインスタンス作ればよろしいということ

232 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 08:43:14.92 ID:m2o7J/Xt.net]
>>226
まーたその話かよ
コンテナアダプタだからって結論が出ただろ

233 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 13:19:52.29 ID:BGQqu8BA.net]
clearが欲しいなら黙ってstd::dequeを使えばいいだけ
FIFOを使う場合にclearが必要になるのがおかしい



234 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 13:59:21.40 ID:21SWVEBe.net]
>FIFOを使う場合にclearが必要になるのがおかしい

へー、どうして?
FIFOを乱す順序の操作ではないよね?

235 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 15:45:14.55 ID:zCQU/fdL.net]
>>226
clearしたければclearする派生クラスを作ればいい
そういう設計だ

236 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 17:42:34.20 ID:aPjNmwB2.net]
>>226
>極力先頭要素のコピーをしたくなくて

pop()が要素を返す場合コピーコンストラクタが例外を投げる可能性があるので
例外安全を満たすことができなくなる。

237 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 17:59:22.43 ID:dMwVjMJU.net]
>例外安全を満たすことができなくなる

へー、どうして?

238 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 18:45:49.56 ID:ABWGqgkn.net]
popでデータを返さないのはコピー時に例外発生したときにコンテナの中身から取り除かれるわpopした中身受け取れないわになるのを防ぐためってのもある
あとtopで参照返すことによりswapなどを使う事により例外発生させることなく受け取ることが可能になる
C++11からmove出来るようになったからほぼいらなくなったけど

239 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 20:20:56.97 ID:M0wiS1Aa.net]
平面を二次元配列で表す時
array[width][height]
array[height][width]
どっちがいいですか?

240 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 20:22:35.56 ID:G58MCBrj.net]
>>236
そんなことはお前のやろうとしていること次第。
ここできくことじゃない。

241 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/13(日) 20:25:57.90 ID:io0Trfl5.net]
>>235
横向きに連続してアクセスするなら
array[height][width]
がいい。まあ、その辺はインライン関数で抽象化して、実測すればわかる。

242 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 21:21:42.16 ID:M3GBYhkY.net]
速度の差異を知りたいって事か。
変わるんすかねぇ

243 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 22:47:56.80 ID:q3JnkdTU.net]
何故かわらないと思うんですか?



244 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 23:01:44.40 ID:JxlRVXLx.net]
無礼な奴だな
まず変わると考える根拠を述べよ

245 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 23:26:04.26 ID:q3JnkdTU.net]
変わらないと思う理由が知りたかっただけです
ここ、C++スレですよね

246 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/13(日) 23:55:37.85 ID:io0Trfl5.net]
array[height]は、width個の横に連続したデータになるから、
横方向に連続したアクセスなら、早くなるはず。
先読みとかキャッシュも関係するかも。

247 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 23:57:05.44 ID:ABWGqgkn.net]
アクセス方法次第でCPUのキャッシュミスの発生率も変わるから速度も変わる

248 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 01:17:12.52 ID:h9CenDqd.net]
>>235
プログラムが完成したら入れ替えてテストしろよ

249 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 02:27:47.71 ID:WQ7njzDq.net]
なぜcolumn majorにしなかったのか

250 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 19:17:30.03 ID:nW8KHDe7.net]
質問です
template templateという機能がありますが、これをクラステンプレートではなくて
関数テンプレートを渡す機能はありますか?

codepad.org/pYejO9Fn

意図としては、ライブラリを作るにあたって、ユーザーからコールバックとして
関数テンプレートを受け取りたいです。
コードの最初のFooクラスのように、クラスで包んでoperator()を定義すれば
実現できます。しかし不格好なので、 bar のように普通に定義された関数テンプレートを
渡すことはできないでしょうか?

251 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 19:24:44.32 ID:cuv2HbJp.net]
>>246
関数テンプレートを渡す機能はありません

252 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 19:29:09.13 ID:nW8KHDe7.net]
>>247
そうか。あざす。残念。

253 名前:190 mailto:sage [2015/09/15(火) 08:28:18.63 ID:j+WGnnSb.net]
>>194 の内容が >>190, >>193 と関連していることに気づかず失礼した。

const auto loop_times = ... に対しては
for (std::remove_const<decltype(loop_times)>::type cnt = 0; ...
for (std::decay<decltype(loop_times)>::type cnt = 0; ...
どちらで書いても期待通り動作することを確認。

const auto && loop_times = ... に対しては
前者(remove_const)はコンパイルエラー、後者(decay)は動作する。


ところで const auto && loop_times という変数宣言の && の
意味が分からないのですよ。
この&&が変数にどんな性質を与えるのか、
検索時に使うべきキーワードなど教えていただきたい。



254 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 08:37:09.59 ID:kADVoeCZ.net]
rvalue reference declaratorで検索とかどうよ

255 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 14:25:08.30 ID:B7TuBbRI.net]
endで取得したイテレータをデクリメントして
最後の要素を得るのは仕様的に問題無いでしょうか?
ideone.com/dzDqLI

256 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 19:45:47.95 ID:AnTXPfgv.net]
プログラム内で生成した連番画像データを、
動画の形式(H.264など)に圧縮して、
ネットワークに送出し、
タブレットなどの端末でストリーミング再生できるようにしたいのですが、
どのようにすればできるでしょうか?

動画の形式にするにはMediaFoundationやNVENCなどのHWエンコーダを利用する
プログラムで可能であることは分かりました。
ネットワーク経由でストリーミングする具体的な方法が分かりません。

扱えるAPIは

・WinAPI
・WinSock
・Direct3D11
・DirectShow
・MediaFoundation

などです。

よろしくお願いします。

257 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 19:48:50.92 ID:8YL7tngp.net]
>>251
最後の要素が存在するならOK

258 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 20:38:35.34 ID:j2Iw9RkO.net]
素人丸出しの質問で申し訳ありません

static const int で定義した変数を、switch-case文のラベルに使うことって可能なんでしょうか。C++的に。

なんかダメな感じはするけど、昔使ったコンパイラでは通ったような記憶もあって混乱中。

259 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 20:46:51.23 ID:Or0Sr6DS.net]
やってみりゃわかるけど、ラベルに変数使えましたけ? ???

260 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 21:25:23.69 ID:levHHN+I.net]
static const intなら大丈夫

261 名前:デフォルトの名無しさん [2015/09/15(火) 21:31:16.73 ID:zI3JQASJ.net]
staticは関係なくね

262 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 21:31:38.97 ID:Or0Sr6DS.net]
ん enum も使えたようなw

263 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 21:36:13.99 ID:levHHN+I.net]
const int n = a;
とか定数以外を束縛できちゃうのでダメ



264 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 21:44:32.92 ID:IZgZ7hQz.net]
関数の外でconst int n = (定数);としたなら逝ける

265 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 21:57:48.20 ID:HX9x+LxP.net]
static constをconstexprに変えてコンパイルが通るならcaseにも使える

266 名前:デフォルトの名無しさん [2015/09/15(火) 22:09:03.95 ID:Z2SQdZ/1.net]
>>255
おまえはやってみたのかよw

267 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 22:24:06.82 ID:ucrFrhcB.net]
>>251
つrbegin

268 名前:デフォルトの名無しさん mailto:sage [2015/09/15(火) 22:36:25.02 ID:WfYHRfSY.net]
>>251
問題ないけど、back()やpop_back()を使う方が適切な場合が多いよ。

269 名前:デフォルトの名無しさん mailto:sagete [2015/09/16(水) 19:23:22.85 ID:3SPxKhTi.net]
c#なら参照も
aaa.bb();で間はドットだけだから1クリックでいいけど->は三回もクリックしないといけないから面倒

270 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 19:31:14.76 ID:OezDmTKu.net]
>>265
クリックじゃなくてプレスかタップ

271 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 19:45:37.70 ID:FdNN8V0s.net]
C++も参照は.だろ

272 名前:デフォルトの名無しさん [2015/09/16(水) 19:49:28.49 ID:P6BY/gAm.net]
参照は.だけれど参照の実態はポインターだから
アクセスが遅い

273 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 19:59:21.74 ID:a5qJ/F/3.net]
流れが見えないレスですね
アクセス速度の話してましたっけ



274 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 20:57:52.20 ID:+CviF6rc.net]
キーボードならタイプかストロークかヒットじゃないのか
ボタンウィジェットの話?

275 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 23:22:43.19 ID:/GUNKgZc.net]
クリックは、一般英語としては「カチッと押す」くらいの意味でしか無いらしいし
そちらの意味でなら実は何ら問題ないという可能性も?

276 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 20:44:50.17 ID:vEWjEaDX.net]
そもそも突っかかる部分がどうでもよすぎてちょっと

277 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 21:00:22.78 ID:kJeXGTkh.net]
アスペは定義にこだわるんだよ
社会不適合者が唯一相手を言い負かすことのできる領域だからね

278 名前:デフォルトの名無しさん [2015/09/17(木) 21:11:41.17 ID:Qtg7/zjM.net]
click == ポチる

279 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 21:14:01.08 ID:/7qLf8rs.net]
ソフトウェアキーボードとマウスでしょ(適当)

280 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 01:45:36.53 ID:TWvmhBF9.net]
>>273
なんでそうすぐ荒らそうとするんだお前は

281 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 02:16:02.58 ID:ziYbj+Cy.net]
規格書全

282 名前:R読めてないわ []
[ここ壊れてます]

283 名前:デフォルトの名無しさん [2015/09/18(金) 09:07:58.49 ID:4JhMPdKG.net]
アスペとは何かがまるで解ってないようだな



284 名前:デフォルトの名無しさん [2015/09/18(金) 11:51:31.83 ID:5wBzpDO5.net]
stlのiteratorであることを調べる方法はありますか?
iterator_treitsで型が定義されているかどうかを
調べられるかということです

285 名前:デフォルトの名無しさん [2015/09/18(金) 11:59:04.47 ID:4JhMPdKG.net]
>>279
ない(断言)。
なぜならN3797にSTLなる文言が一度たりとも出てこない。
そのような分類が存在しないということだ。

「型識別子が宣言されているか否か」は正直ときどき欲しいことがあるが、
これはC++の文法上できない。
仮にis_declarated<foo>::valueのようなトレイツを作ろうにも、
fooがクラスなのかオブジェクトなのかにより構文規則が変動してしまい、
このためパースできない。

286 名前:デフォルトの名無しさん [2015/09/18(金) 12:48:17.69 ID:vvw8eaFK.net]
opencvのcv::matが分からん。画像処理とかムリポ。

287 名前:デフォルトの名無しさん [2015/09/18(金) 17:58:07.46 ID:5wBzpDO5.net]
#include <iostream>
using namespace std;
template<typename T>
struct A{
using type =int;
};
template <typename T>
auto f(typename A<T>::type& a){
return a;
}


int main() {
typename A<int>::type x;
cout<<f(x)<<endl;
// your code goes here
return 0;
}
どうやってマッチするようにできますか
>>280
ありがとうございます

288 名前:デフォルトの名無しさん [2015/09/18(金) 18:27:30.80 ID:5wBzpDO5.net]
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;

template<typename T>
struct A{
struct B{};
using type =B;
};
template <typename T>
auto f(typename A<T>::type& a){
return a;
}

int main() {
typename A<int>::B x;
f<typename A<int>::B>(x);
// your code goes here
return 0;
}
ソースコードを間違えました。
こちらでお願いします。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


289 名前:デフォルトの名無しさん [2015/09/18(金) 18:37:33.56 ID:5wBzpDO5.net]
すみません
ソースコードをまた間違えました
これが最後です
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;

template<typename T>
struct A{
struct B{};

};
template <typename T>
auto f(typename A<T>::B a){
return a;
}

int main() {
typename A<int>::B x;
f<typename A<int>::B>(x);
// your code goes here
return 0;
}

290 名前:デフォルトの名無しさん [2015/09/18(金) 19:41:08.07 ID:5wBzpDO5.net]
これが最後の最後です。
コードを短くしてわかりやすくしてみました
#include<vector>
using namespace std;
template <typename T> auto f(typename vector<T>::iterator t){};
int main() {
std::vector<int> a;
f<typename vector<int>::iterator>(a.begin());
return 0;
}

291 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 20:07:17.89 ID:5egfmsiH.net]
ideone に貼っとくれ

292 名前:デフォルトの名無しさん [2015/09/18(金) 20:44:44.53 ID:5wBzpDO5.net]
ideone.com/iKRfDL
自己解決しました
ありがとうございました

293 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 23:40:50.48 ID:ctwqb5Ko.net]
何をしたいのか全くわからんのだが



294 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 00:49:03.07 ID:yY3lA1m6.net]
>>280
>C++の文法上できない

ほんとか?
すぐ出来そうな気がするんだけど
ideone.com/IuwOg1

295 名前:デフォルトの名無しさん [2015/09/19(土) 03:17:45.05 ID:8Pb114IF.net]
>>289
ちょっと言ってることと違う
using foo = int;
int main() {
cout << is_declared<foo>::value; //1
cout << is_declared<bar>::value; //0
}
これはできるのか?

296 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 05:09:41.19 ID:O1tI28gd.net]
>>290
それできて何の意味があるの?

297 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 05:35:18.13 ID:YQpUAMED.net]
STLなんて言葉は無い厨の馬鹿さが証明されてしまったな

298 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 08:22:51.87 ID:e8fiNzCd.net]
STLはあれだが、iterator_treitsはねーわ
どうやったら、こう、間違えるんだよ

299 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 12:03:44.27 ID:q2VPyPCF.net]
Visual C++の超拡張機能ならSFINAEでnon-dependent typeもdependent type扱いだぜ

300 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 16:46:44.70 ID:JTlp29uf.net]
ここに書いてあることって今見るとどうですか?もう8年前の記事ですが
espresso3389.hatenablog.com/entry/20070204/1170538374
自分は速度欲しいところはC++、GUIとかはC#、両者をつなぐときはP/Invokeなり
C++/CLIを挟むなりとしてきましたが、全部C#で閉じないものかと思うことはあります

301 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 17:15:28.41 ID:XzxcjOEi.net]
思うに、ポインタが危険と熱く語っているけど、C#にも参照が有るし、
ポインタ演算が出来ない点を除いては、ほぼポインタが有るのと同じ状況じゃね?
参照がnullだとヌルポするんでしょ?危険度は一緒では?
彼はC#に色々期待していたようだけど、今思えば結局VBの置き換えが目的だったんだなって納得できる

302 名前:デフォルトの名無しさん [2015/09/21(月) 17:17:30.30 ID:8N0qbHVY.net]
windowsのステマを本気にするバカはいないだろ

303 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 18:41:13.82 ID:IJWaFyNv.net]
>>296
> 参照がnullだとヌルポするんでしょ?危険度は一緒では?

典型的な C# 脳だな w
危険なのは書き込みの方だよ



304 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 18:42:53.29 ID:0lL32CsL.net]
delegateはstd::functionで代用出来るしマルチキャストデリゲートはBoostにsignal2ってのがある。これは8年以上前からある
GCもshared_ptr unique_ptrで大抵の用途に事足りる
C#はGCのせいでデストラクタが使い物にならないし、そのせいでusingを書かないと解りづらいリソースリークの元になる。どっちが優れてるとは思わない一長一短

他はこの人の言う未来が早く来るといいですねー
が8年たった今でも変わらない感想

>>296
バッファーオーバーフローが予測できない結果をうむのに比べたら安全。だからこそvalgrindなどのメモリチェックツールがある。事実は事実として認めないとね

305 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 18:50:48.72 ID:XzxcjOEi.net]
なるほど、ポインタはmemcpyが怖いって言う認識ですか

306 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 19:09:45.69 ID:4SVIoSBj.net]
ダングリングポインタのこと言ってんじゃね

307 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 19:47:50.10 ID:IzwQBNZR.net]
物理メモリが見えないから、原理的に無限のメモリを使えるキリッ
とか書いてあるんだけどさ、、、

前々から疑問なんだけど、C/C++ってデフォで関数が動的(staticでない)なんだけど、
あれって何で?メリット無いよね?
教えてエロい人。

C#やJavaはランタイムがある前提だから、実行時に動的関数のアドレスを再利用することも出来る。(やろうと思えば)
だから、確かに原理上はどんな大きなプログラムでも、一時的に使用するメモリが十分小さければ実行できる。
結果、C#やJavaには動的関数にするメリットがある。

でもC++ってないよね?
あれって分割コンパイルを円滑に行うための方便?
別にstaticである必要もないんだけどさ。

308 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:02:23.73 ID:qBJEaPVd.net]
>>302
>C/C++ってデフォで関数が動的(staticでない)なんだけど
よくわからない,もう少し説明がほしい
メンバ関数は「デフォ」でstatic じゃないインスタンスメソッドだがそれはC#/Javaと同じ
C#/Java はクラスに属しない関数は存在しえないが,C/C++ はクラスと結びつかない関数はありえる,ということはあるね

ランタイムの存在とインスタンスメソッド/クラスメソッドの有無とに何の関係も見出せないが?

309 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:02:28.82 ID:0lL32CsL.net]
>>302
何言ってるか解らないんだけど
関数のアドレスが枯渇するプログラム?何それ?

310 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:06:20.03 ID:4SVIoSBj.net]
関数が動的ってどういう意味なんだろう
ぐぐったらこんなのが出てきたけど
ttp://www5b.biglobe.ne.jp/~suugaku/vc++kougi/ckougi/dai8koudai3wa.html
関数それ自体が消滅するわけじゃないよね

311 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:08:30.59 ID:0lL32CsL.net]
>>302
前々から疑問に思ってるんならそのままにせずにちゃんと調べた方がいいよ

あんたの書いてる事読むと基礎を全く理解しないまま放置して自分の中でこういうものと思いこんでる物が育ってる感じしかしないよ

312 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:08:47.78 ID:QVf3KibQ.net]
>>302
メモリ管理はOSの仕事だろう

313 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:11:04.82 ID:XzxcjOEi.net]
単にstaticといわれても
メンバ関数と普通の関数では意味が変わるし
それを加味しても言ってる意味が良く分からないんだが

それともライブラリの静的/動的リンクの話か?
それなら実行ファイルのサイズ削減と実行時のメモリ節約だ
同じライブラリを複数のプロセスから動的ロードすると
ライブラリのメモリ上での実態がプロセス間で共有される



314 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:16:03.88 ID:qBJEaPVd.net]
DLLはあまり成功しているようにみえないが‥

315 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:17:39.45 ID:QVf3KibQ.net]
>>305
仮に動的生成をしてるとしたら、
f()を直接呼ぶ場合と、
何かの関数を呼び、その中から呼んだ場合で
アドレスが変わると言うこと何だろうけど、本当?

316 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:21:39.99 ID:XzxcjOEi.net]
>>309
成功も失敗も・・・
OSのAPIはDLLにするしかないだろ
そうしないとアプリにOSそのものを静的リンクしなければならなくなるだろ、ありえん
DLLは絶対必要な仕組み

317 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:26:20.93 ID:XzxcjOEi.net]
>>310
>>305のページは殆ど無茶苦茶で頭痛くなるので君のような初心者は読まないほうが良い
有る程度分かった人がニヤニヤしながら読む以外に存在価値のないページ
関数のコードが動的に生成されたりはしない
スタックフレームが動的に生成されるだけ

318 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:27:30.64 ID:4SVIoSBj.net]
>>310
ttp://www5b.biglobe.ne.jp/~suugaku/vc++kougi/ckougi/dai8koudai3wa.html
関数にstaticつけるとメモリに駐留するとか適当なこと言ってて
単に知識がないか間違って覚えてるっぽい

319 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:34:16.96 ID:0lL32CsL.net]
>>305
>>310
リンク先読んで吹いた
やべぇなこれ。思い込みでここまで書けるのもすごいが、こんなの公開して誤った知識を持つ奴が増えるのも恐ろしい。
C言語界におけるテロ行為や〜

>※ プログラミングの学習において、完全に理解してから次に進むという完全主義は、学習を妨げることになります。基本は、意図したとおりコンピュータが動けばよいです。

とかかいてるけど理解しないのと誤った理解をするのは別だよな…

去年までページ更新してるみたいだし連絡したら削除してもらえんかなぁこれ少なくともC言語に関わるところ全て

320 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:34:19.78 ID:f8ZVmSR1.net]
>>305>>314
ワロタwww
これ絶対にわざと間違えて書いてるだろうww

321 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:42:48.62 ID:az+bvJoo.net]
なんかよくわからなくなってきたんだが、自由関数のアドレスっていつ決定されるの??
プログラムのロード時?だとすると、なぜ関数ポインタをテンプレートに渡せるの?
テンプレートがインスタンス化された時に相対的なアドレスが決定されるからという理解でいいのかな??

322 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:58:13.63 ID:0lL32CsL.net]
>>316
関数のアドレスはリンク時に決定する

テンプレートに関数を渡せるのはマクロと一緒でテンプレートを実体化したコード内に関数名そのまま埋め込まれるから

323 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:25:16.23 ID:/zbs+z1X.net]
>>313
ヤベー、コーラ吹いたわ

変数の知識から、頑張って類推で理解しようとしているのか
もしくはファンクタとごっちゃになってるのか



324 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:30:27.57 ID:K/qYM/td.net]
そこはファンタ吹いとけよ

325 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:31:25.34 ID:XzxcjOEi.net]
その人類推するのは大好きみたいで掛け算についても色々類推して
リボン計算とやらを発見したらしんだが、
どうみても普通の筆算の書き方を変えただけなんだが
www5b.biglobe.ne.jp/~suugaku/neko/dai1koudai6wa.html

326 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:37:25.15 ID:IzwQBNZR.net]
>>305のリンクが話題になっているが、
実は俺もそのリンクにしかたどり着けず、長年の疑問を解消できていない。
そのリンク先での内容はスタックの存在を考えていないことが間違いだ。(static変数とstatic関数を混同している)
多分、C言語は仕様にスタックの存在が仮定されていると思う。

ただ、関数自体はそのように動的に生成され、消滅しても良いことに仕様としてはなっている。
(と断言できるほど明確に記述はされていないが)
ただこの場合関数ポインタが使えなくなるため、通常のC/C++では実際には生成/消滅はしない。
結果的にC/C++の場合の静的関数(static void hoge()等)と動的関数(void hoge()等)に大差はない。
だからこそ、静的関数のメリットが分からない。

C++の場合、templateは静的に展開される。
つまり、必要なものを全てコンパイル時に生成し、実行体に埋め込む。
templateは使った分だけきっちりexeが膨らむ。
従って、template等を使い尽くした場合、場合によってはアドレス空間が枯渇する。
(ただし parametar pack の場合だけ別扱いかもしれないが。)
en.cppreference.com/w/cpp/language/parameter_pack

>>310
C++/CLIでは関数は動的に配置される。
そのクラスが使用される時にメンバ関数がメモリ上に配置され、不要になれば回収される。
従って原理的には32bitマシンでも4GB以上のexeを動作させられる。(C#も多分同じ)
クラス外部から関数のアドレスを参照する場合は static である必要がある。
これは実行時に仮想関数等のアドレステーブルに配置できることを保証するため。
つまり、staticを付けるかどうかは明確に違いがある。

分かりやすくいえば、

・4GB以上のexeを32bitマシンで実行できるか?(データではなく、命令部分だけで4GB以上)

となる。C++/CLI、C#は出来る。Javaも多分出来る。
C/C++は多分できない。(動的関数ならできる)

327 名前:デフォルトの名無しさん [2015/09/21(月) 21:40:23.93 ID:QaJZDGlp.net]
そのページの人はがんばって考察してるのは好感が持てる

328 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:46:12.22 ID:XzxcjOEi.net]
>>321
>結果的にC/C++の場合の静的関数(static void hoge()等)と動的関数(void hoge()等)に大差はない。
>だからこそ、静的関数のメリットが分からない。

つまらない事を長年悩んだり、長文書き込む前に
まず基本的なCの文法を学習しては?
static void hoge()のメリットなんか初心者でも知ってる事
たぶんC言語の初心者用のサイトでも載ってる筈

329 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:46:34.32 ID:4SVIoSBj.net]
>>321
関数にstaticを付けた場合その関数は内部リンケージになるってだけだぞ
一体どっから動的関数やら静的関数やらが出てくるんだ…

330 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/21(月) 21:53:27.69 ID:3iy+9eBG.net]
typedef void (*FN)(void);
void *p = malloc(...);
memcpy(p, ...);
FN fn = (FN)p;
(*fn)();
free(p);
「動的関数」ってこんな感じ?

331 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:59:22.27 ID:XzxcjOEi.net]
はーそんな例とか
むしろ
proc = GetProcAddress(
の方が一般的だろうに
普段散々使っておいて
残念な人だ

332 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:09:21.94 ID:/rzmNe57.net]
mallocの領域を実行したらメモリ保護で落ちるだろ
20年前からワープしてきたのか

333 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:09:54.13 ID:rFlrDRn6.net]
型を変数として扱うことってできない?
型を格納する型 Typetype だとしたら
Typetype ttype1 = 引数の型をハッシュ化する関数(var);
if (ttype1 == ttype2) {}
みたいに



334 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:11:28.95 ID:rFlrDRn6.net]
ただsizeofってのはなしで

335 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:12:05.09 ID:0lL32CsL.net]
>>321
> ・4GB以上のexeを32bitマシンで実行できるか?(データではなく、命令部分だけで4GB以上)
>
> となる。C++/CLI、C#は出来る。Javaも多分出来る。
> C/C++は多分できない。(動的関数ならできる)

そりゃあ間にVMをかましてるんだから原理的には出来るだろうけど(一時記憶にメモリを使わずファイルに書き出すとかね)
まともな実効速度が出るはず無いしメリット何も無いから誰もやらないだけ。
それを出来るというには無理がある。

C/C++だって同じようにVM作れば出来る。同じようにメリット無いから誰も作らないだけ

336 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:12:17.14 ID:tvQQ1s/5.net]
>>328
typeid

337 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:15:54.75 ID:rFlrDRn6.net]
>>331
ありがとう
こんな機能があったとは知らなかった

338 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/21(月) 22:17:34.32 ID:3iy+9eBG.net]
VirtualProtectみたいな関数ってMacやLinuxでもあるの?

339 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:20:25.72 ID:0lL32CsL.net]
>>321
大体クラスとか関数単位でプログラムをロードして実行出来たところで4GBのメモリ制限に蚊に刺されるほどしか影響しねえよ
お前は実行されるコードが数GBになるプログラム作ったことあるんか?と
そんなのより普通はデータを記憶するためのヒープが圧倒的に足りなくなる

340 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:21:24.48 ID:0lL32CsL.net]
>>333
mprotect

341 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:34:48.88 ID:IzwQBNZR.net]
>>323-324
確認した結果、確かにそのようだ。こちらの勘違いだった。
こちらは純粋C++ではなくVC++遣いなので、少し混乱していた。すまん。

>>325
手動ならそういうことになる。CLRはそれを自動的にやっている。

>>330,334
CLRはそうなっている。文句はMSに言ってくれ。
個人的には、自分で書いた部分だけで4GBを越えることは今後とも無いとしても、
C/C++の場合はDLLも含めて4GBだから、こちらは越える時があるのかもしれないとは思う。

生ポインタを渡さず抽象化している場合は、一つのarrayにつき4GBの制限になる。
だから実質的にデータ部分も含めても4GBの制限がないのと同じ。
ただ素直に64bitに移行する方がいいと思うし、実際にMSもそういう判断だと思うが。

342 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:39:34.79 ID:tvQQ1s/5.net]
>>336
あんたの使ってるのはVC++ではなくてC++/CLIなので
ttp://peace.2ch.net/test/read.cgi/tech/1268613679/
スレはこっち

>>310のサイトでもC++/CLIをC++だと間違って書いていて
迷惑この上ない

343 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:49:46.15 ID:QVf3KibQ.net]
数GBにもなるプログラムってあるのかな
何か間違っている様な気がする。
分割して10個〜20個くらいに分割した方が良くないかな・・



344 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 22:53:28.63 ID:0lL32CsL.net]
>>33
MSに文句も糞もねえよ
仕様上は出来る、同じようにC言語だって仕様上は出来る
でも使える速度にならないから使えねえって言ってんの
MSだってそんな事わかってるからそんな実装にしてないだろ

実質使えないものを出来るって主張して何がしたいのか?

345 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:01:45.88 ID:IzwQBNZR.net]
>>337
> >>310のサイトでもC++/CLIをC++だと間違って書いていて
なるほどそういうことか。そう思って読めば確かにそうだ。
以前おかしいと思っていた説明部分も見あたらない、、、こちらも勘違いだったのかも。すまん。

> あんたの使ってるのはVC++ではなくてC++/CLIなので
使っているのはVC++だぞ。
C++はVC++6.0までだというのならそれは認めるが。

ただ、Windows上で一番お手軽なC++風の環境はVC++なんだよ。
ただそれは実はC++/CLIであり、似て非なる言語なところが問題なんだが。
とはいえ、アンマネージで全部書けば限りなくC++に近くなるはずではあるし、
「初心者のための」なんだから、その辺はいいとは思うけど。

346 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:04:28.14 ID:tvQQ1s/5.net]
初心者こそC++/CLIなんて変態言語ではなく
CLRを使うのならC#を使うべきだ

347 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:11:16.76 ID:XzxcjOEi.net]
>ただ、Windows上で一番お手軽なC++風の環境はVC++なんだよ。
>ただそれは実はC++/CLIであり、似て非なる言語なところが問題なんだが。

ほら、もう何にも分かってなくね
プロジェクトを作る時にCLRにするかどうか選べる
CLRにしなければ普通のC++だ
どこまで勘違いでスレを混乱させたら気が済むの?

348 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:12:45.18 ID:IzwQBNZR.net]
>>339
勘違いしているのだと思うけど、
C#は完全にCLR上で動いていて、関数は動的配置だぞ。これはいいか?
批判的なのはいいが、事実としてC#は既にそうなんだよ。

ランタイムまで自分で作る気ならCでもできるとも言えるが、それは普通は出来ないと言うよ。
C#の場合はそこまで含めて勝手にやってくれる。
つまり、ポインタのサイズを意識する必要がない。
Javaに至ってはポインタがないんだからポインタのサイズも糞もない。

ランタイムなんて糞遅いというのは事実なんだけど、
実際、そういう糞遅いアプリでも問題ない場合の方が大半なんだよ。

349 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:16:50.51 ID:XzxcjOEi.net]
それってJITのためであって
32bitの壁とか関係なくね?
C++はコンパイル言語なんでJITは無いから
始めから関係なくね

350 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:17:06.84 ID:tcBLogIW.net]
>>331
意地悪な回答だな
type_index教えてやらないと使いにくくてしょうがないだろ

351 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:19:54.09 ID:IzwQBNZR.net]
>>338
DLLのロード/アンロードはOSがやるから出来るのだけど、
C/C++の場合はDLL先の生関数ポインタも仕様的には掴めるはず。
だから、実質的にはDLLのアンロードは出来ない。
(正確に言うと、アンロード後の空間に別のDLLを配置しなおすことは出来ない)

よって、同様に、C/C++の場合は、DLLやフレームワークまで全て含めて4GBの制限になる。
今のところまだかからないけど、今後は分からないよ。

それとは別に、マルチプロセス/プロセス間通信で実現するというのはありだ。

352 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:26:54.98 ID:IzwQBNZR.net]
>>342
> CLRにしなければ普通のC++だ
そうだったのか。了解した。

>>344
> 32bitの壁とか関係なくね?
いや、関係ある。
生ポインタを渡す限り、アドレス空間の再利用が出来ない

353 名前:から、
一切合切含めて4GBの制限がかかってしまうという話。
生ポインタを渡さない場合は、この制限が無くなる。

ただその制限がないとして、今の時点では特にメリットが無いというのも認める。
[]
[ここ壊れてます]



354 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:27:29.86 ID:tvQQ1s/5.net]
CLRだろうが32bitアプリのvirtual sizeが4Gを超えることはないんじゃないか

>>346
FreeLibraryすればdllは解放されるだろ
そのあとつかんだ関数ポインタの先は無効になるだろうし
解放した領域に別のdllが読み込まれても問題がない

355 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:30:33.86 ID:XzxcjOEi.net]
>>348
これ以上引っ掻き回さんでくれ
彼が言ってるのは明示的なFreeLibraryじゃなくてOSが強制的にDLLをアンロードしてスワップする事

356 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:31:24.91 ID:IzwQBNZR.net]
>>341
今はそう思うけど、
C既習だと、C++と付いている方が安心するんだよ。

357 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:31:52.49 ID:XzxcjOEi.net]
あと、C#の関数が動的なのはJITの為であって
32bit空間でスワップしてやろうって意図はないはず
C++にJITは無いので動的である必要もなし

358 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:32:52.24 ID:0lL32CsL.net]
>>343
それで、そのCLIは何で実装されてるのかな?どうやって動くのかな?
そこまでちゃんと考えてる? 4GBの制限はポインタサイズだけの問題だと思ってないよね?

359 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:35:35.38 ID:IzwQBNZR.net]
>>349
> 彼が言ってるのは明示的なFreeLibraryじゃなくてOSが強制的にDLLをアンロードしてスワップする事
そういうこと。

>>348
自分で管理してFreeするのならそれは出来る。
ただこの場合は自分で掴めるアドレス全体が4GBの制限にかかる。
CLRだと仕様的にはいくらでもつかみ放題だということ。管理する必要もない。

360 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:40:33.83 ID:IzwQBNZR.net]
>>352
どうやら君は理解できていない。
動的再配置の場合は、今まさに使っているもの以外は見えないんだよ。
だから、全体で4GBではなくて、各部品が4GBの制限になる。これは理解できているかい?

すまんが空回りするようならこの話はここら辺で終わりでいい。
他の人は理解できているから。

361 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:44:22.13 ID:XzxcjOEi.net]
嫌、俺も理解できてないし、バカなこと言ってるなって思っているから
もっと続けていいぞ

>>352の言いたい事は、CLRそのものは何ビットで動いているんだという事
CLRそのものが32bitで動いていては、どの道4GB以上は扱えないよね

362 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:47:39.61 ID:0lL32CsL.net]
>>354
ほらまた自分の思い込みを積み重ねて…
なんか相手するのがめんどくさくなったから >>355 さんに任せようかな!

363 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:49:41.24 ID:IzwQBNZR.net]
>>351
なるほどその通りだ。
関数がGCされるのは結果的なことかもしれないね。



364 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:50:48.00 ID:0lL32CsL.net]
まぁ最後に一つだけこれは理解出来るだろうというのを
そんなに簡単な話だったら32bit版.netフレームワークに4GBの制限なんてないよね

365 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 23:57:39.16 ID:IzwQBNZR.net]
>>355
MMUでググレ。
32bit空間でリニアに使えるのは4GBなんだけど、交代で再配置するのなら実はいくらでもいける。
ただしユーザに与えた生ポインタを変更することは出来ないため、C/C++では4GBに事実上制限される。
GC前提の場合は、この制限は見えなくなる。

366 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:04:04.39 ID:JsyQDq8z.net]
他人が書いたコードを読むのは
超労力がかかる

オナニーコードは
超面倒な

367 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:06:58.92 ID:ThaQ2i1X.net]
32bit上で4GB制限を突破させる機能の名前はx86ならPAEな
それを使ってもMMUの管理する仮想アドレス空間は4GBのまま

368 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:12:11.77 ID:dkFhdmkv.net]
CLRが勝手に関数(コード)をアンロードするわけないだろ。何考えてるんだ?

369 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:18:17.64 ID:FQwXFz67.net]
アンロードはしないけどシリアライズしてメモリ以外に保存する実装があってもおかしくはないな
もちろん使う側からは透過的に

370 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:24:52.12 ID:ThaQ2i1X.net]
>>363
それ実行ファイルがディスクにあるはずなのにシリアライズして保存する意味がわからねーな
直前にJITコンパイルしたバイナリを一時的にディスクに保存してから実行するとかならまぁ解るけど

371 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:26:02.37 ID:PT+IC+/U.net]
>>363
CLRはMSILという中間言語を実行時にJITして配置するから、
結果的に各関数は使うまで配置されないし、使い終わったら捨てられるのかと。
多分オリジナルのMSILはstaticに存在するのではないかと。
ただそれがメモリ上である必要はないが。
結果的に透過的になる。
https://msdn.microsoft.com/ja-jp/library/z1zx9t92.aspx

372 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:36:49.33 ID:PT+IC+/U.net]
>>361
そこまで知っているのなら俺が言っていることの意味は分かるはずだが。
PAEまで使えばとりあえず4GBx10までは見える。

ただ、PAEがマトモに使えるようになったのはWin8からだ。
そして、そんなことをやるより64bitに移行するのをMSは選択した。
XPにPAEという声も根強かったが、ガン無視したからね。(それで正しいと思うが)

373 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:42:01.36 ID:dkFhdmkv.net]
>>365
コードの場合「使い終わった」を自動的に判定する方法が無いでしょ
勝手なアルゴリズムで判定されても困るので、現実にはそんな実装は使い物にならない
現実にはプログラマーが明示的に指定するしかないんだよね



374 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:53:02.41 ID:rOSfUNAw.net]
>>367
いえ関数の実行が終わったら捨ててもいいです

375 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 00:57:27.51 ID:PT+IC+/U.net]
>>367
各クラスのメンバ関数は、そのクラスのインスタンスが全て無くなれば要らなくなる。
当たり前だが、GC上のオブジェクトについては全て「型」を知っている。
だから、GCヒープしか提供していない言語であれば、全く問題なく回収可能。

それ以前に、JIT前提であればとりあえず回収して例外処理で再配置も可能。
コピーオンライトの関数版だ。

とにかく君達が懐疑的なのは分かったが、実際CLRはそうなんだよ。

376 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:00:19.19 ID:WExvsg0o.net]
そんなゴミ実装してるわけねーだろ
常識で考えろ

377 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:03:28.46 ID:rOSfUNAw.net]
>そのクラスのインスタンスが全て無くなれば要らなくなる

なんだその非論理的な思考は
X x = new X();
x.Baka();
x = null; //よし、いらなくなった!かいほうだ!!
x = new X();
x.Baka();

378 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:09:52.47 ID:RZYVlzX/.net]
GCの実装を妄想で語るスレ?

379 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:11:24.05 ID:PT+IC+/U.net]
>>371
X x = new X(); //ここで初めてオブジェクトのメンバ関数も配置される
x.Baka();
x = null; //これ以降解放してよし。GC対象。
x = new X(); //ここで再びXがメンバ関数と共に配置される
x.Baka();

380 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:15:38.85 ID:RZYVlzX/.net]
.NETのGCも一般のGCの機構も理解してないみたいだね
全てが参照カウントだと勘違いしてる

アセンブリの機構考えれば、即時開放がありえないとわかると思うけど
何でそんな実装だと思ったんだろ?

381 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:16:15.49 ID:ThaQ2i1X.net]
>>369
どうなんだよ
実際32bit版で4GB越えれるのかよ?
仕様上はできるっていうならC言語でもできるって言ったよな?

382 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:17:40.85 ID:PT+IC+/U.net]
てかまあもうスレチだし止めよう。

とにかくCLRはそうなんだよ。
ググッてもなかなかでてこないのだけど、(いいキーワードが思いつかない)
例えば delegate というのは関数ポインタなんだけど、これはへまをするとGCされる。
https://msdn.microsoft.com/ja-jp/library/43yky316(v=vs.110).aspx
kchon.blog111.fc2.com/blog-entry-139.html
https://msdn.microsoft.com/ja-jp/library/17sde2xt(v=vs.90).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3

383 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:19:10.62 ID:PT+IC+/U.net]
>>375
分かりやすく書いただけ。
もっと分かりやすく言えるのなら、君が371にレス付ければいい。

要するにエラーにはならないということが明確に分かればいいだけだろ。



384 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:23:12.34 ID:rOSfUNAw.net]
そうかそうか
>>373はクラスロード時にJITコンパイルが行われると勘違いしちゃったんだな
それでオブジェクトの寿命とリンクするという珍妙な発想に至ったと

385 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:24:00.21 ID:PT+IC+/U.net]
>>375
32bit版とかいう概念がJavaやC#の仕様にないってことだよ。
そこは既に抽象化済みなんだよ。

はいもうこの件は終わり。
PAEまで使って32bitを延命させる意味はないとMSが判断した以上、.NETもそれに追従だ。
今後はどうなるかは知らない。

386 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:28:11.27 ID:ThaQ2i1X.net]
>>375
> 32bit版とかいう概念がJavaやC#の仕様にないってことだよ。
> そこは既に抽象化済みなんだよ。
長々続けて結論それ?

387 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:28:25.18 ID:RZYVlzX/.net]
>>376
最初のコード例、自分でGC呼んでる時点で即時開放理論が破綻してるじゃん
なんで自分で理解できてないサイトをなんで出すの?

388 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 01:37:37.39 ID:RZYVlzX/.net]
あー…、読み返したらプロセスアドレス空間もまともに理解せずに
MMUで拡張できるとか言ってるレベルなのねこの人

389 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:17:16.45 ID:+Z/sOppv.net]
なんかスレ伸びてると思ったらスレ違いのことで伸びてるのか。
> そのクラスが使用される時にメンバ関数がメモリ上に配置され、不要になれば回収される。
C#なら回収されるのはアプリケーションドメイン単位
>>376
それはおそらく関数ポインタを入れてる変数がGCされている

390 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:20:50.96 ID:PT+IC+/U.net]
>>375
ちなみに知らないのだとおもうが、PAE対応アプリもあるにはある。
SQL Server とか、他にも一つか二つくらいあったはず。逆に言えばそれくらいしかなかったと思う。
> この結果、アプリケーションは 15 GB までの物理メモリにアクセスできます。
https://msdn.microsoft.com/ja-jp/library/Cc785115(v=WS.10).aspx
https://technet.microsoft.com/ja-jp/library/ms175581(v=sql.105).aspx

APIはMapUserPhysicalPagesで窓アクセスになる。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa366527(v=vs.85).aspx

てかこの件について君らがムキになる意味が分からん。
ランタイムで隠蔽すれば普通に出来る。(ユーザーが全く関知する必要がない=同じソースコードで動く)
ただし出来るのとやるのは別で、MSは64bit化を急ぐという判断だった。
PAEは延命で、64bit化は解決なのだから、妥当な判断だと思う。
逆にLinuxはPAE派だったと思ったが、どうなったのかは知らない。

391 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:21:26.35 ID:PT+IC+/U.net]
広範囲にランダムアクセスをするのでなければ、窓アクセスでもそこそこ使える。
オブジェクト指向なら見えないもの(privateやスコープ外)の方が多いのだから、
ランタイムがしこしこ貼り直してくれれば問題ない。
これを手動でやるとなると、実際には管理しきれないから、
単純なキャッシュ的使い方にするか、あるいはラッパを用意するかになる。
もちろんそれでもやりたい人はやれるようにAPIがあるわけだが。
> 大量のデータを操作するアプリケーションが、ハード ディスクの代わりにメモリにデータを維持することで、パフォーマンスが向上します。
https://msdn.microsoft.com/ja-jp/library/cc775523(v=ws.10).aspx

C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ。(ポインタは常にアクセス可能)
だから4GBの壁が直接見える。
C#とかはそもそもメモリモデル自体が必要ない。
変数はただの箱で、前回入れたものが出てくるだけ。共用体は禁止だ。
だから4GBの壁なんてものがそもそも存在しない。
ランタイムさえ対応すれば同じソースでPAE/AWEで15GBまでヒープ上に確保できることになる。
(C#のArrayは必ず添字チェックをしているため、ランタイム側で細切れに貼り直すことが出来、
結果、ユーザ側に15GBの一つのArrayを確保することも可能。)
ただしMSはこれを目指さなかった。

特に不思議なわけでもなく、ムキになる話でもないと思うが。
GCヒープ自体が一つのオブジェクトみたいなもので、get/setしかインタフェースを提供してない。
だからこういう事が普通に出来る。
(ただし繰り返すが、出来るのとやるのは別)

392 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:33:20.14 ID:ThaQ2i1X.net]
>>385
だから何度も言ってるように仕様はそうかもね、でも仕様の話だったらC言語でも可能だよ
で実装はどちらも対応してないよね

393 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:36:37.45 ID:RZYVlzX/.net]
そらあらゆる機能を使えば「可能」だろうが
あんた「実際」とか「たぶん」とか実装の話してただろ
.NETは無闇にアンロードはしないよ



394 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 03:37:04.93 ID:RZYVlzX/.net]
>>387>>385宛てね

395 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:21:48.04 ID:RZYVlzX/.net]
C#単体での仕様にすら注意書きに
実装では不要かどうかは将来使われるか解析してから決めるだろうとか書いてある
ちょっとひどすぎませんか?

396 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:22:58.08 ID:PT+IC+/U.net]
>>386
そうじゃなくて、Cの場合は sizeof(void*) が確定的なんだよ。
だから32bit版というものが絶対的に存在してしまう。
C#にはそれがないって話。

ただこれは379と同じなんだけどね。

397 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:24:02.48 ID:PT+IC+/U.net]
>>384
> C#なら回収されるのはアプリケーションドメイン単位
了解した。

> それはおそらく関数ポインタを入れてる変数がGCされている
その線は考えたが、、、まあ上記と合わせて冷静に考えればそのようだ。

ここの人達は関数の動的配置/回収をそもそも信じていない。
だから回収事例として用意したつもりだが確かに間違いのようだ。
動的関数生成をしないのなら、GCする必要もなく、回収がAPドメイン単位なら静的展開してそれっきりだね。
ちなみに回収タイミング/単位自体は俺は気にしておらず、動作できる例として出していたのだが、
そこに噛みつく奴がいて余計におかしな事になった。
ただまあ、APドメイン単位での回収で確定だし、助かった。
> プロセス全体を停止せずに、個々のアプリケーションを停止できます。 アプリケーション ドメインを使用すると、1 つのアプリケーション内で実行されているコードをアンロードできます。
> 個々のアセンブリや型はアンロードできません。 アンロードできるのはドメイン全体だけです。
https://msdn.microsoft.com/ja-jp/library/2bh4z9hs(v=vs.110).aspx

ただこれならもうちょっとC++/CLIは緩くてもいいはずなのだが、、、
他クラスのpublicメンバ関数を呼ぶ場合もstaticじゃないとC2352エラー(下側例)になるのだが、これは何故?
APドメイン単位で展開してるのなら呼ばせてくれよーと思う。(これがあるから型単位だと思っていた)
https://msdn.microsoft.com/ja-jp/library/2x426hte.aspx

なお回答頂けるのであれば、CLIスレで構いません。
peace.2ch.net/test/read.cgi/tech/1268613679/

398 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:25:27.88 ID:PT+IC+/U.net]
すいません、>>391>>383宛て

399 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:36:51.05 ID:RZYVlzX/.net]
>>390
sizeof(void*)は確定的じゃないし
そもそもメモリアドレスって物理アドレスそのまま使ってるわけじゃないよ

400 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 04:44:57.21 ID:RZYVlzX/.net]
>>391
>とにかく君達が懐疑的なのは分かったが、実際CLRはそうなんだよ。
って言ったんだから自分でGC呼んじゃ駄目でしょ

401 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 05:53:43.52 ID:ThaQ2i1X.net]
>>390
Cのソースコードに32bit版も何ももありませんけど?
ついでにいうと事前にネイティブコードに変換しなければならないというCの仕様もありません
C言語のインタプリタも可能ですし実際にあります
で、何が確定的ですか?

402 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 06:51:30.72 ID:4+3Ce3pv.net]
専用ハード作って動かせばなんでもできるよ

403 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 06:59:57.30 ID:BmBfsQQC.net]
>>305
> これが何故、ビルドエラーしないのでしょうか。

この一文で読む価値のないページってわかる w



404 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 08:40:28.48 ID:lcSEArpd.net]
自説に絶対の自信ニキ
vs
違う、違うよ(その他全員)

の構図が大変面白い
よろしい、続けたまえ

スレ移動して誘導先張ってくれると
なおありがたい

405 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 08:51:45.99 ID:QigibK2U.net]
>>385
>C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ

いえ、ISO/IEC 14882:2014はそうはなってないと思います

406 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 11:22:32.99 ID:LojobDxZ.net]
やっぱりマシンがどのように動作しているか理解するには、c言語が理解できる程度の脳ミソがないと難しいのかね。

407 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 11:52:36.13 ID:PT+IC+/U.net]
>>399
どれのこと?Nxxxxでよろしく。またはググるからキーワードをくれ。
www.wdic.org/w/TECH/ISO/IEC%2014882%3A2014

408 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 11:54:51.98 ID:PT+IC+/U.net]
スレチだが、動的関数配置に関してはもうちょっと分かりやすい例があった。
> DynamicMethod クラス
> コンパイル、実行、および破棄できる動的メソッドを定義し、表します。 破棄されたメソッドは、ガベージ コレクションの対象となります。
> Just-In-Time (JIT) コンパイラ によって作成された実行可能コードは、DynamicMethod オブジェクトがクリアされたときにクリアされます。
https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.dynamicmethod(v=vs.110).aspx

C/C++ではやってない話だから気味が悪いのだと思うが、とにかくCLRの世界はこんな感じなんだよ。
なおこれは既存のMSIL(中間言語)をコピーするようなので、生成ではなく流用になる。(evalではない)

409 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 12:49:28.58 ID:RZYVlzX/.net]
>>402
それ標準実装じゃないだろ
それを「とにかくCLRの世界はこんな感じ」って無茶言うなよ

410 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:10:51.94 ID:ThaQ2i1X.net]
>>401
お前が
>C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ

な根拠を出さなきゃいけない立場なの

あと確定的ってのも

411 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:33:48.83 ID:LojobDxZ.net]
そういう機能を実現するために使う言語だからそういう機能の標準化がしづらいんだよ。

412 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:34:44.79 ID:dkFhdmkv.net]
まだやってるのか…
>>402
元々staticキーワードの有無によってできる関数の違いの話じゃなかったっけ?
なんでプログラムが実行中に組み立てたメソッドの話になってるの?

それで100レスくらい使って>>302>>321で書いてた疑問や間違いについて少しは理解できた?

413 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:45:48.19 ID:39XjsZ/s.net]
どうでもいいが、32bit版の.Netアプリって
32bit版の.NET Framework上で動くんじゃないの?
というのも32bitアプリからは64bitDLLを読み込めないから
だから32bit版の.Netアプリは32bit版.NET Framework上で動くと思うんだけど
(その辺の事情はスレ違いだしよく知らんが)
フレームワーク側、.Net側、管理側が32bitで4Gの壁があるのに、
その制限の中で4G以上のコードのスワップの運用をするの?
そんな実装はありえないと思うんだが

MMUの話が上がっていたが、あれはハードウェアで高速だし、
MMUは物理メモリが足りない場合にスワップする用途だが、
今足りない前提になっているのは論理アドレスの方なわけで
論点がズレてるわな



414 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:57:03.37 ID:PT+IC+/U.net]
俺の疑問(302)は解消したよ。
お前らの疑問はあるみたいだし、それについて説明も出来るけど、もう面倒なので止める。
誰か分かる人は回答してやってくれ。

てかお前らもうちょっと他言語も触った方がいいぞ。
Cの世界だけで閉じているから、Cを客観的に見れてないんだよ。


それとは別に、401に対する回答は募集する。

415 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 14:05:36.49 ID:RZYVlzX/.net]
虚勢ばっかりだな

416 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 14:15:49.93 ID:WwQzZTLz.net]
いい加減スレ違いの話は収束して欲しい。

417 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 14:41:30.97 ID:ThaQ2i1X.net]
ブーメランな捨て台詞で終わったな

418 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:14:28.65 ID:o5uWY3Fx.net]
>>408
C++はオブジェクト以外の領域をポインターで指すこと自体出来ないんだからわかれよ
int a;
(&a + 1); // undefined behavior

1.7 The C++ memory model
The memory available to a C++ program consists of one or more sequences of contiguous bytes
"sequence"は複数形だぞ

419 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:31:50.22 ID:LojobDxZ.net]
そもそも16bitアプリでfarやhugeでそれ以上の領域扱うなんて当たり前だったろうに。
cにもc++にもリニアなメモリ空間という縛りはない。
だいたいポインタが何者かすらその挙動でしか定義されていない。
実装次第でどうにでもなる。

420 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:34:20.90 ID:FVa42+rI.net]
>>412
本題とはずれてくるけど、 &a + 1 は undefined じゃないよ。
*(&a + 1) にアクセスしたり &a + 2 すると undefined になる。

421 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:34:29.27 ID:nPjcOL1Q.net]
そもそもメモリ空間やリニアうんたらまで考慮してプログラムしなきゃあかんのか。

422 名前:デフォルトの名無しさん [2015/09/22(火) 16:37:24.66 ID:4a3z373J.net]
俺が感じるのは
int a;はaのアドレスの位置を直接番号で示していると思うんだ
int a[10];と書くとアドレスの先頭のアドレスの番号を示していると思うんだ
a=a+1と書くとaは変数ではなく番号だからエラーになるんだと思うよ

423 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:40:57.49 ID:BmBfsQQC.net]
>>414
配列じゃないんだけど?



424 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:42:13.67 ID:gQIVdZQM.net]
>>416
配列名を示す識別子を,配列要素を指定する[] を伴わずに単独で使用する用法は,特異点にしてC/C++にて一番醜いところ

425 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:51:41.05 ID:WExvsg0o.net]
いちいち&a[0]と書けと?
&a[0]のほうが醜いと思うが

426 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:59:16.98 ID:PT+IC+/U.net]
>>412
> contiguous bytes
他の言語ではこの必要すらない。
これがリニアって事だよ。

ちなみに君はC以外の言語一つでも使えるかい?
だったらその言語でこの必要があるかを考えてみるといい。

427 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 16:59:35.71 ID:FVa42+rI.net]
>>417
配列じゃないオブジェクトへのポインタ演算のルールは要素数 1 の配列といっしょ。
5.7 [expr.add] p4
> For the purposes of these operators, a pointer to a nonarray object
> behaves the same a

428 名前:s a pointer to the first element of an array of length
> one with the type of the object as its element type.
[]
[ここ壊れてます]

429 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:07:12.07 ID:gQIVdZQM.net]
>>419
構造体・クラスの場合は,単独の識別子でアドレスを示すことはないだろう?
それと同じことだ

430 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:16:16.72 ID:WExvsg0o.net]
構造体と配列は大きさが違うだろう

431 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:30:38.04 ID:RZYVlzX/.net]
>>420
それ実装じゃなくて抽象機械相手のもので
x86の論理アドレスや物理アドレスなどとポインタと同一なんて規定は書いてない
JITにしてでコンパクションしてアドレス変更されようがCは関係ない

お前本当都合が良いと思った事しか答えないな
いい加減どこが決定的な問題なのか説明しなよ

それとずっと逃げてないで
sizeof(void*)が確定的という事についても説明してね

432 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:33:33.60 ID:gQIVdZQM.net]
>>423
大きさ?なんの話だ?
struct a { int n1; int n2; int n3; }
int b[3];
どちらも同じ集合体だが a と b で意味するものが違うのは不整合だろう?

433 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:38:23.04 ID:RZYVlzX/.net]
つか言語仕様にunsafeとfixed持ってる時点で同類なのにアホなのかなこの人



434 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 17:40:24.63 ID:RZYVlzX/.net]
>>426>>425宛てじゃないからね

435 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 18:22:00.45 ID:WwQzZTLz.net]
>>425
それ、違くない?
struct {int n1; init n2; int n3;} a;
int b[3];
printf("%p",a);
printf("%p",b);
エラーにはならない。

436 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 18:26:29.93 ID:WwQzZTLz.net]
>>428
ごめん、a,bの前に&がいる。

437 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 18:53:37.56 ID:BmBfsQQC.net]
>>421
なるほど、勉強になったわ

438 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 18:59:44.87 ID:PT+IC+/U.net]
>>424
別に逃げているわけではなくて、
今の君の知識範囲では理解できないだろうから諦めたんだよ。
もう既に十分説明している。
俺の疑問は既に解消したのだから、君の突っかかりにいちいち答える必要もない。

君は知っているつもりなんだろうけど、全然分かってない。
元々のブログ(>>295)、以下のくだりは真なんだが、そもそもこれを理解できてないだろ。
> たとえば、32bitのCPU上では、通常のプログラムは、4GBのメモリ空間に制限され、4GB以上のメモリを利用することは非常な困難を伴います。
> ところが、JavaやC#といった言語は、原理上、そのような制限を受けません(バンク切り替えだとか、セグメントだとかの話はあえて無視)。
> あくまでも原理上の話ではあるので、現状がそうなっているわけではないのですが、ポインタといった概念が言語上に出現しないことによって、
> データをメモリ上の番地で表現する必要がないためです。

俺はこの部分の説明をしていただけなんだよ。ただ、君が理解できていないとなると、その前の部分
> C/C++のプログラマの住んでいる世界は、ポインタがあるおかげで、ある意味では、何でも出来るアセンブラの世界ではあるのですが、
> そのことが逆にC/C++プログラマの発想を狭い範囲に閉じこめてしまっていることが多々あります。
> JavaやC#のようなポインタのない世界が実は、
> アセンブラのようなポインタというかアドレスに支配されている世界では想像しにくい新たなパラダイムや手法を与えてくれることもあります。
も真なのかな、とも思えてくる。(個人的にはこの部分はハズレだと思っていた。)


君が無知なままでいるのは君の責任だ。
誰かが君のことを可哀想と思うのなら、いつか教えてくれるかもしれない。
俺はここに認めてもらいに来たわけではなくて、疑問を解消しに来ている。だから用は済んだ。
君が俺のことを誤解するのも君の自由だ。それを修正する必要もない。

ただなあ、とりあえず最初のブログの中身も理解出来ないのにその態度は、痛いよ。
そういうのは止めた方がいい。
傍観している連中の中にも明らかに分かっている奴もいるはずだが、誰も出てこないのはそういうことだよ。

439 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:11:33.18 ID:FVa42+rI.net]
>>431
>> ところが、JavaやC#といった言語は、原理上、そのような制限を受けません(バンク切り替えだとか、セグメントだとかの話はあえて無視)。
>> あくまでも原理上の話ではあるので、現状がそうなっているわけではないのですが、ポインタといった概念が言語上に出現しないことによって、
>> データをメモリ上の番地で表現する必要がないためです。

これがポインタの存在によって C や C++ に限っては成り立たないと言われているようだけど、
そんなことはないと思うんだ。

言語上の「ポインタ」を Java や C# の参照と同じように実装することは禁止されちゃいないわけで。
そこらへんわかってて言ってるの?

440 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:20:45.42 ID:ThaQ2i1X.net]
>>432
こいつは何言っても解らないよ
可哀想なやつだと思うけど俺は諦めた

441 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:23:21.47 ID:39XjsZ/s.net]
毛の壁風の人なんじゃね?

442 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:24:45.07 ID:PT+IC+/U.net]
>>432
生ポインタを使えないC言語なんて存在価値がないだろ。

実際それがあったとして、使う奴がいるとも思えないが、
ネイティブコードを吐くJavaが欲しい時に使うのか?

443 名前:432 mailto:sage [2015/09/22(火) 19:26:32.23 ID:FVa42+rI.net]
>>433
そうだね >399 からそう言われてるわけで、説得できるとはあんまり思ってない。
堂々と「以下のくだりは真」というのにツッコミ無しっていうのはマズいだろうと思った。



444 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:27:26.06 ID:ThaQ2i1X.net]
ほらなw
Emscriptenとかも知らないんだろう

445 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:33:20.20 ID:FVa42+rI.net]
>>435
存在価値の話は関係無いと思うんだ。引用箇所は
>>> あくまでも原理上の話ではあるので、現状がそうなっているわけではないのですが
という話だからね。 C や C++ でも同じことでしょ、と言っている。

446 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:34:46.81 ID:PT+IC+/U.net]
>>432
ちなみに禁止されていないのは確かだが、C言語では実現出来ないだろ。
C++で演算子のオーバーロードを基本型にも全部やってラップすれば達成可能な気もするが、
ポインタのところに若干制限があった気がする。(ただこの辺は余り詳しくない)

447 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:36:47.03 ID:ThaQ2i1X.net]
>>439
Emscriptenでググれ
生ポインタの扱えないC言語(に限らないけど)だぞ

448 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:42:18.38 ID:PT+IC+/U.net]
>>437
いやちょっと待て。実はEmscriptenは使用を検討しようとしていた。
理由は生JavaScriptが色々糞だからで、TypeScriptも検討中だ。

それはEmscripten用の書き方だということか?
ならば確かにその記述方法は妥当だろう。
LLVMからの変換だと思っていたが、それ以前にLLVMに生ポインタコードが出ないようにラップするわけだな。

449 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:44:12.61 ID:FVa42+rI.net]
>>439
>385 で言ってた↓の根拠は不明で「ポインタのところに若干制限があった気がする。(ただこの辺は余り詳しくない)」ということでいいかな?
> C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ。(ポインタは常にアクセス可能)
> だから4GBの壁が直接見える。

なんかはっきりした根拠を思い出したら教えて欲しい。

450 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:58:38.83 ID:39XjsZ/s.net]
いやもう、彼の頭をデバッグするのバカらしいし、やめようよ

451 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:58:39.53 ID:PT+IC+/U.net]
>>438
それは繰り返しにしかならないが、以下の通り。

原理的な話なら、抽象化された変数領域しか持たない言語(C#,Java)では、アドレスというものがそもそも見えない。
だから、4GBの壁がそもそもユーザーに見えない。
これに対して、C/C++では4GBの壁がユーザーに丸見えだ。

>>432のように、ポインタをユーザーがラップして全てint**とかにした場合、それは「ユーザーがそう記述した」という。---(A)
そうではなくて、ユーザーが通常通り int* のまま使っていて、
それをコンパイラだけで int* のネイティブにするのか、int** のJava的参照ポインタにするのかをコンパイルオプションで切り換えられるのなら、 ---(B)
それは「コンパイラで4GBの壁を越えた」という。
いずれにしても、C/C++言語自体で4GBの壁を越えたというのは言い過ぎだ。

ところで、Emscriptenは(B)のどちらなのか、知っていたら教えてくれ。
(ユーザ側で int** と意識して書く必要があるのか、
もしかしてユーザーは int* のままで書いてもEmscriptenが int** に完全に変換できるのか)

452 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 19:59:56.93 ID:39XjsZ/s.net]
この感じ、知っている人は知っている、毛の壁臭

453 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 20:06:26.45 ID:PT+IC+/U.net]
>>442
違う。

> ポインタのところに若干制限があった気がする。
演算子のオーバーライドは俺は使ってないので詳しくないのだが、
最近読み直した「プログラミング言語C++」には11.2.3に(第3版ならP317)
> 特に、ポインタだけを操作する演算子関数は定義できないことに注意して頂きたい。
とあって、この件について本の中で別に説明されていたのだが、今見ても該当部分がすぐには出てこないということ。
たしかC言語との互換性を保つために、ポインタ演算子については自由に上書きできない部分があったはず。

> C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ。(ポインタは常にアクセス可能)
> だから4GBの壁が直接見える。
根拠も何も、そのまんまだ。

逆に聞いてみよう。
君はC#が使えるみたいだが、C#のマネージドコードだけの世界で、4GBの壁を意識することはあったかい?
無いだろ。そういうことだよ。



454 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 20:14:07.69 ID:FVa42+rI.net]
>>444
> これに対して、C/C++では4GBの壁がユーザーに丸見えだ。
これも「気がする」かな。断言するなら根拠をはっきり示せることを確認してね。

> いずれにしても、C/C++言語自体で4GBの壁を越えたというのは言い過ぎだ。
だれもそんなことは言ってないと思うんだ。

「C/C++では4GBの壁がユーザーに丸見えだ」などという人が一人いるので、それは
言い過ぎだと言っている。

>>446
「演算子が上書きできない」→「4GBの壁」っていうつながりがあると思ってるのか。

ループ気味になってきたし、ここまでの書き込みをちゃんと読んで理解しようとしてくれていれば
この流れでそんなこと言えるわけが無いと思うんで、僕もそろそろ降りさせてもらうよ。

455 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 20:21:17.81 ID:PT+IC+/U.net]
>>447
> これも「気がする」かな。断言するなら根拠をはっきり示せることを確認してね。
いや見えてるだろ明らかに。
void*が32bit環境では4GBまでしか表せない。だから4GBの壁が見える。
C#やJavaにはこれがない。それだけの話だよ。

> 「演算子が上書きできない」→「4GBの壁」っていうつながりがあると思ってるのか。
あるだろ。というか言い出したのはそちらだが。
4GBの壁は変数領域が抽象化されていないから見える。
だから、int**にして抽象化すれば直接は見えなくなる。
これがC#やJavaで4GBの壁が見えない理由そのものだ。ブログ主もこの観点で言っている。


まあいいよ。完全にループだし、君の論法もループしている。
降りで了解だ。こちらもその方が助かる。

それはそうとEmscriptenの情報があればよろしく。

456 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 20:30:45.91 ID:39XjsZ/s.net]
何かっこつけてんだよ、初心者の癖に

457 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 21:15:01.03 ID:ozShReaP.net]
クサカベは知ってるけど
毛の何とかは知らないなあ

458 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 21:58:18.19 ID:PT+IC+/U.net]
>>444,448
スレチだが自己解決した。
生ポインタはTypedArrayにマッピングされるようだ。
まあ、冷静に考えれば当然だった。

459 名前:デフォルトの名無しさん [2015/09/22(火) 22:12:42.50 ID:hQ0EouVl.net]
4GBの壁か。
配列を使う場合など、データサイズの上限なんかは
何言語であろうと普通に何らかの了解のもとに使っているよなあ。
C++ みたいにsizeof(void*)がはっきりしてれば自明の理として納得いくが、
そうでない言語では怪しげなご託宣に従うしかないという
理詰めな性格の人には優しくない話だよね。

460 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 23:39:14.16 ID:PT+IC+/U.net]
むしろ俺は話の通じなさにびっくりだったわ。
32bit環境でのC言語で4GBの壁が見えるのは自明でしかない。
それを見えないと言われても頭おかしいとしか思えない。 >>447

マジでお前らは他言語少しでも触った方がいい。
完全に盲目になっている。

461 名前:412 mailto:sage [2015/09/22(火) 23:51:24.00 ID:7b9YUjXM.net]
むしろ
わざわざ>>412で『"sequence"は複数形だぞ』
って書いてやったのに目に入らない盲目にびっくりだわ

462 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 23:55:40.08 ID:PT+IC+/U.net]
>>454
いやそこは関係ないんだよ。

ちなみに君もC/C++しかできないのか?
ちょっとマジで他言語、何でもいいからやってみた方がいい。

463 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 23:57:25.78 ID:LojobDxZ.net]
特定の処理系でvoid*が32bitという話でしかない
まあ、それで99.9%困らないからcpuの機能に薄い皮被せて見せているだけのはなし

16bit時代にhugeやfarでそれ以上にアクセス出来るようにしてあったのは、それですまないほど不便だったから

cやc++はの扱うcpuはハーバードだったり1ワード16bitがアドレスの指し示す最小単位だったりとなんでもあり



464 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:02:54.19 ID:M/UFFhhb.net]
32bitで表現できるポインタが4GBまでだが、仮に1アドレスが4バイトでも良いんじゃないかとも思った。
文字列は2文字ないし4文字でワンセットになるけど

465 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:07:22.49 ID:Q8fOJWKp.net]
>>453
「32bit環境でのC言語で4GBの壁が見える」が言えるのと同じように
「参照を32bitアドレスで表現しているJava/C#処理系では4GBの壁が見える」とも言える
・・・んじゃないの?

466 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:15:57.36 ID:qfkgp73Y.net]
バカに物事を理解させるのって本当に大変だね
教師には頭が下がるよ
俺にこんなバカで尊大な生徒が居たら無視していじめ問題とかになってるわ

467 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:24:11.18 ID:MwhyHk4V.net]
>>458
それはその通り。
ただ、参照自体のサイズをユーザーが関知する必要がない。(ソースコードに現れない)
そこが決定的に違う。
だから、処理系が勝手に64bit参照にしていたとしても、同じソースコードがそのまま動くことになる。

ただ悪いが、この件に関して俺がいちいち回答する必要はマジでない。
俺が言っているのは本当に自明なことばかりであるし、君達も少し他言語をかじるだけで分かる話だ。

468 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:28:22.82 ID:nPFFi/Oi.net]
ほうほう、C++だとポインターのサイズがソースコード上に現れて同じソースが使えないのですか
もちろんポインターのビットイメージを操作する場合を除いてですが

469 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:33:24.68 ID:qfkgp73Y.net]
>>461
わざわざコードを書くときにポインタのサイズを意識して同じソースコードで動くように書かないんだろうよ
無能な働き者ってやつだ

470 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:51:40.95 ID:KSDSHGp7.net]
staticの意味すら知らなかったんだからC/C++をろくに知らないんだろう。
JavaやC#ですら思い込みによる間違った認識に囚われていた。
ISO/IEC 14882:2014と言われてどのNxxxxかと尋ねるあたりは勘違いのしやすさを象徴していたな。
それでこの態度だから、まわりもろくに間違いを指摘してくれないんだろう。かわいそうに。

471 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:52:34.21 ID:MwhyHk4V.net]
悪いがいちいち面倒なので、アホレスしたIDはそれ以降無視することにするよ。
とりあえず現在の無視対象は ID:nPFFi/Oi, ID:qfkgp73Y

マジでお前ら他言語触った方がいい。

そもそも他言語ではアドレス自体を取れないことが多い。
次に、取れたとしてもキャストできなかったりする。
だから、どうやっても sizeof(void*) 依存のコードを記述できない言語の方が多い。

C言語において無理なキャストをしなければ void* のサイズはコンパイラが自動的に判断して確保してくれる。
結果、32bitと64bitで同じコードが動く。
これはID:nPFFi/Oi, ID:qfkgp73Yみたいな馬鹿でも知っている、当たり前の話だ。

ただこれはユーザーがちゃんとそう記述したことを保証しなければならない。つまり、ユーザー依存だ。
上記のように、そもそもアドレスを取れない言語では、ユーザーがどうやっても sizeof(void*) 依存のコードを記述できない。
だからそもそも 32bit とか 64bit とか気にする必要もない。ここが決定的に違う。

何度も言うけど、お前ら本当に他言語を少しでも触った方がいい。

472 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 00:58:25.97 ID:nPFFi/Oi.net]
そういやVisual Basic 6.0って文字列のアドレス取れたし
ビット数依存の糞コードが散乱していたな

473 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:04:51.91 ID:qfkgp73Y.net]
>>463
思い込みの塊みたいなやつだから周りが指摘しても意味が無いんだろ
それはここで証明されてるじゃないか

指摘すると思い込み一つ増えたみたいだしね。
ここの住人が他の言語を触ったことがないって



474 名前:デフォルトの名無しさん [2015/09/23(水) 01:05:07.72 ID:AnQ6XBDy.net]
アドレスを扱えるのは機能性の一つであって欠点ではないよ?

475 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:06:11.71 ID:i5QbssGO.net]
なんか時々現れるよな
新手のキチガイが

476 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:08:10.92 ID:qfkgp73Y.net]
>>467
場合によっては欠点になるよ
上にも書いたけど無能な働き者によって他の環境で動かなくなる

477 名前:デフォルトの名無しさん [2015/09/23(水) 01:13:44.76 ID:AnQ6XBDy.net]
そりゃ書いたとおりにしか動かないでしょ。

478 名前:デフォルトの名無しさん [2015/09/23(水) 01:16:15.46 ID:AnQ6XBDy.net]
1+1を間違えて1+2と書く恐れがあるから+演算子を無くすべき!とか言ったって仕方ないよ。

479 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:21:28.78 ID:MwhyHk4V.net]
>>467
もちろんその通り。
生ポインタを扱えることこそがCの最大の特徴であり、それをやらないのならCを使う意味はほぼ無い。

ただ生ポインタってのは実際は両刃の剣で、生ポインタさえなければ色々なことが単純になるんだよ。
そこは元のブログにも書かれているし、もっと他にも色々ある。
結果、Java作者はない方がいいと思ったから廃止したし、
C#作者は無いと困るがふんだんに使われても困るということで例外的使用に留めている。

ただまあ、本当にここら辺は一般論で、別に俺がわざわざここで言い直す必要もなく、
他でもさんざん言われていることだ。あのブログの中でも然り。
そしてそう思う奴も覆いから他言語も賑わっているわけで。

てゆうかもういいっすかね。特に俺である必要ないはずだし。

480 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:23:01.21 ID:0mJKXhs3.net]
いや、皆がお前だけ消えてくれることをのぞんでるぞ

481 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:23:53.95 ID:v0Nc4YZQ.net]
>>472
うん、もういいよ
お前の代わりは居ないけど要らないから

482 名前:デフォルトの名無しさん [2015/09/23(水) 01:28:45.41 ID:AnQ6XBDy.net]
今はどの環境でもリークをチェックできるし困ることは何もないけどなあ。
後始末の必要なリソースはメモリーに限らないので、メモリー管理によって鍛えられた
C++戦士は凄腕プログラマへの近道。

483 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:31:43.38 ID:nPFFi/Oi.net]
>メモリー管理によって鍛えられた
>C++戦士は凄腕プログラマへの近道

もうC++を使わないで下さいね他人がきっと迷惑してます



484 名前:デフォルトの名無しさん [2015/09/23(水) 01:32:57.44 ID:AnQ6XBDy.net]
>>476
なるほど、キミはバトルプログラマーを知らないんだね?

485 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:38:23.42 ID:M/UFFhhb.net]
最近はスキルが有効かどうかが環境より言語に左右されるような気がする。

486 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:45:30.10 ID:iC4K+Xaq.net]
>>472
>結果、Java作者はない方がいいと思ったから廃止したし、
Java8で復活した部分がある,C++ では ->*, ::* で扱うポインタ
Java での呼び名:メソッド参照

peace.2ch.net/test/read.cgi/tech/1434079972/12

487 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:49:55.57 ID:nPFFi/Oi.net]
危険を伴う有用な機能を具備することのリスクが
説明を受けても理解できない低能はどうしようもないな
だから>>479みたいなとんちんかんなレスをするんだろう

488 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 01:55:54.98 ID:IndlIx5T.net]
散々論破されてるのに悪いと思わない時点でただのキチガイだろ

489 名前:デフォルトの名無しさん [2015/09/23(水) 01:58:32.17 ID:AnQ6XBDy.net]
はあ、また論破してしまった。
やはりC++は最強だな。

490 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 02:02:23.55 ID:IndlIx5T.net]
>>464
>そもそも他言語ではアドレス自体を取れないことが多い。
>次に、取れたとしてもキャストできなかったりする。
>だから、どうやっても sizeof(void*) 依存のコードを記述できない言語の方が多い。
君の大好きなC#はポインタもsizeofも取れるよ
君は他言語を触る前にC#について勉強しなさい

491 名前:デフォルトの名無しさん [2015/09/23(水) 02:04:33.69 ID:AnQ6XBDy.net]
しかし今日の敵は弱かったな。
今までで最弱じゃないか?

492 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 02:12:08.91 ID:MwhyHk4V.net]
>>479
これか?
qiita.com/pepepe/items/3d810e1bbed25768caa0
これは危険なタイプの生ポインタではないんだ。だから問題ない。

493 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 02:12:34.07 ID:qfkgp73Y.net]
最初は32bit環境で4GB越えのバイナリを実行できる
CやC++は出来ない

だったはずなのに、指摘されても誤りを認めず最後の方には

参照が32bitであることを関知する必要がない

に変わってた。



494 名前:デフォルトの名無しさん [2015/09/23(水) 02:18:39.97 ID:AnQ6XBDy.net]
C/C++で出来ないことはレジスタをいじること。
他は何でもできるから。

わかったらもうケンカ売ってくるなよw

495 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 02:51:39.64 ID:iC4K+Xaq.net]
キャリーフラグは触れてほしかったね‥
キャリーの読み込み,書き出しをしたいんだ
インラインだと後で最適化という介入があって心配だ

496 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 05:09:46.93 ID:DOrhv1Zg.net]
>>448
> void*が32bit環境では4GBまでしか表せない。

この時点でなにもわかってないことがバレバレじゃん w

497 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 05:12:56.52 ID:sl1FEDPC.net]
>>487
インラインアセンブラはダメか

498 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 06:12:19.83 ID:kDaXs3BE.net]
メモリマップドレジスタみたいに環境によっては弄れるよね

499 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 11:53:18.53 ID:dAcDykGY.net]
>>490
ありゃ規格の範囲外だからな。
gcc に慣れすぎて、他の使うとつらい。

>>491
I/Oレジスタじゃなくて、CPU のレジスタの話じゃないかな?

500 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 13:59:22.37 ID:DOrhv1Zg.net]
>>491
レジスタは読むだけでフラグリセットしたり複数回読むと違う値になったりする奴があるから高級言語で読み書きするのはちょっと怖い

>>492
どこまでを CPU レジスタって言うかによる

501 名前:デフォルトの名無しさん [2015/09/23(水) 20:23:32.33 ID:VRhTdQAB.net]
メモリマップドI/Oではなく、
メモリマップドレジスタね
制御記憶が主記憶空間にマッピングされているという

502 名前:デフォルトの名無しさん mailto:sagete [2015/09/23(水) 20:32:04.80 ID:1jqGrEyR.net]
2Dゲーム当たり判定総合 [転載禁止]c2ch.net
peace.2ch.net/test/read.cgi/tech/1442990347/

503 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 20:43:11.41 ID:3ci5dXPK.net]
0ページレジスタもね



504 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/23(水) 20:54:04.93 ID:KfupEJ55.net]
△ マップド
D マップト

505 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 21:07:34.84 ID:D/ibv0yF.net]
クソコテは日本語もマトモに書けないのか

506 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/23(水) 21:15:35.76 ID:KfupEJ55.net]
>>498
添削の時間は限られている。まる、ばつ、さんかくだけで採点できる。

507 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 22:20:05.97 ID:lyPqrQHB.net]
>>499
添削?採点?
突然何を言い出すのですか。頭は大丈夫ですか。
それにまるばつさんかく以外の記号が書かれているようです。

508 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 01:42:54.1 ]
[ここ壊れてます]

509 名前:3 ID:/TjFSMYs.net mailto: 基地外が新たな基地外を呼び寄せるカオスなスレ []
[ここ壊れてます]

510 名前:デフォルトの名無しさん [2015/09/24(木) 22:11:32.00 ID:O8aOI61G.net]
初期化子でthisを渡すと警告が出ていたと思うんだけど、いつの日からか出なくなった。
どこかの時点で規格が変わったの?

511 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 23:09:55.66 ID:y5NlXAUf.net]
>>502
普通のコンパイラーでは
警告と規格は関係ありません

512 名前:デフォルトの名無しさん [2015/09/25(金) 00:05:04.36 ID:WA9ffgJV.net]
もしかしてthisへの代入があった
ごく初期のC++のことか?

513 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 01:39:59.76 ID:hOC+hAXG.net]
>>502
これ?
https://msdn.microsoft.com/en-us/library/3c594ae3.aspx
> 'this' : used in base member initializer list
...
> This warning is off by default. ...



514 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 23:34:43.11 ID:IdnO5CBH.net]
STLのコンテナcで*(c.begin())とやるのとc.front()とやるのは何か違うの?
同じだとしたらどっちがどっちの糖衣構文?

515 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 23:55:05.37 ID:Ku6iuwWR.net]
>>506
糖衣構文では無いよ。
先頭要素にアクセスすると言う目的に対して、同じ結果が得られる別の手段があったというだけの事。
より目的に合っているのは後者だと思うけど。

516 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 00:00:24.18 ID:9hL7F3GQ.net]
かなり長いことC++触って無いけど
もうboostは、標準仕様になってるんですか?
まぁ、コンパイラによるから、何とも言えないかも
しれないけどさ

517 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 00:06:37.49 ID:cPpGYmLk.net]
>>508
boostのどのライブラリ?
全てなら永遠にその時は来ないよ

518 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 08:10:46.09 ID:OajUOnCA.net]
boostの社内における認識が、「誰が作ったか分からないハイリスクなライブラリ」から
「実績があり安心して使える準標準ライブラリ」になるのはいつですかね…

519 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 08:23:46.53 ID:ySVgmYih.net]
boostに重大なバグがあって会社に損害を与えたとき誰も責任を取れないでしょ?
永遠にその時は来ないよ。

520 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 09:17:56.96 ID:teqXcjFQ.net]
boostは、その全てが必ず標準化されるわけでは無いよ。

521 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 09:21:36.35 ID:T1LoOiMi.net]
↑ごらんください! これがアスペです!!

522 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 09:37:29.93 ID:cPpGYmLk.net]
>>511
OSS全く使えない会社か
勤めたくないね

523 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 11:02:45.10 ID:xWCYZ6+4.net]
そういう会社はboostよりも先に自分が作り込んだ重大バグで潰れるから心配ない



524 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 11:30:42.93 ID:FH4mU5/4.net]
そう言えば、バグがあった時直せないからって理由で、C++開発なのにC++標準ライブラリ禁止って職場があったわ

525 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 12:50:25.19 ID:9hL7F3GQ.net]
>>516
スゴイ会社だな
会社で使ってるコンパイラが信用出来ないのか……
もしかしてVectorとかのSTLが禁止?
まぁ、VC++6.0ではVectorで醜いバグあったらしいが

って事は、コンパイラ作ってる様なもんだな
(コンパイラは言い過ぎかも知んないけど)

526 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:00:09.30 ID:FH4mU5/4.net]
>>517
コンテナはOKだった
と、言ってもstring、vector、mapくらいしか使ってなかった気がする
algorithmは全面禁止だった
なので、ループ文とそのコピペの嵐で読むのも辛かったしバグも多かった記憶

527 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:05:49.06 ID:FH4mU5/4.net]
書いてて思い出し笑いしちゃったよ
「バクがあった時直せない」って理由で標準ライブラリ使わずに、自作コードでバクだらけとか、草生えまくりだなwww

528 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:19:28.92 ID:uKQbY5Ux.net]
A a = A();
ってやったとき
・単にaが構築される
・右辺が構築されてから左辺のコピー(ムーブ)コンストラクタが呼ばれる
・左辺と右辺がそれぞれ構築されてから左辺のコピー(ムーブ)代入演算子が呼ばれる
どれ?
デバッガで追ってみるとコピー(ムーブ)コンストラクタ/代入演算子は呼ばれてないから
・単にaが構築される
のはずなんだけど
コピー(ムーブ)コンストラクタ/代入演算子がないクラスでこれやると
なぜかエラーが出るんだよね
A &a = A();
ってやるとコンパイル通るけどMSVCの独自拡張みたい?
素直に
A a();
ってやればいいんだけど
A *a = new A();
ってやったときとシンタックスの一貫性がなくて微妙。
(常に 変数 = コンストラクタ の形にしたい)
あと関数宣言として解釈されることがあってイライラ。
標準規格とかでどう定義されているのかとか、説明できる方がいたら教えて下さい。

529 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:34:13.70 ID:GN/a0FjA.net]
>コピー(ムーブ)コンストラクタ/代入演算子がないクラスでこれやると
>なぜかエラーが出るんだよね
マジ?
ここがおかしいような気がする

530 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:34:31.65 ID:8isGWqIv.net]
普通にコピコンだろう

531 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 13:37:52.70 ID:xWCYZ6+4.net]
コピペをしない自作なら、自分で理解できるだろう、直せるだろう。
なのかな?
そういえば、GCC使って開発してたとき、GPSに触れないよう
使うライブラリを全部自社開発したことはあったな

532 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 14:33:54.80 ID:NFyEOKoE.net]
規格上はコピーコンストラクタが走るけど、
コピコンに副作用が無さそうと判断されたら、
最適化の際にただのコンストラクタによる構築に勝手に変更されている
と我が脳内コンパイラは申しております

実際のところどうなんだろう

533 名前:デフォルトの名無しさん [2015/09/26(土) 15:45:53.15 ID:b1WQaLX+.net]
設定ファイル(1行には設定項目名と値が1つずつ書いてある)を読み込んで、
設定項目ごとに対応する変数に値を格納する関数があります。
設定項目は200個くらいあって、それに応じてif文が200個くらいあります。
静的検査で、「循環的複雑度」とかいう指標が200とかになって、
これをもっと小さくしなければならないことになりました。(40以下くらい)
どういう風に作るのがスマートだと思いますか?



534 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 15:50:09.12 ID:snRIqmgr.net]
そんな変な書き方は今すぐ止めればいいと思います

>A a();
>ってやればいいんだけど
>A *a = new A();
>ってやったときとシンタックスの一貫性がなくて微妙。

やってること、やりたいこと、が別なのに
一貫性を求める必要は無いと思います
タイプ量が増えるだけでしょう

535 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 15:53:15.68 ID:snRIqmgr.net]
>>525
mapを使うか
もしくは設定項目文字列とenumのテーブルを用意して配列に突っ込む

536 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 16:49:06.14 ID:mVMjJSEh.net]
>>520
>・単にaが構築される
>・右辺が構築されてから左辺のコピー(ムーブ)コンストラクタが呼ばれる

のいずれか。規格ではどちらも許される
ただし仮に後者を採用したとしてコンパイルエラーになるコードは
許されていない(コピーコンストラクターがprivateなど)
呼ばないことによる副作用の有無は関係無い

537 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 18:22:01.93 ID:9hL7F3GQ.net]
C++でコード書くの嫌い
最適化云々で、クラスを.hで書いてメンバ関数は.cppに
書くべきだから、正直メンドクセ。
でもテンプレートはヘッダー内に全部書くべきだし……

全部volatileつければ、問題無いのか?
でも、それもメンドクセ。

最近はAndoroidアプリ作ってるから、クラス内に全部書けるけど
javaだから、unsignedがなんてcharだけなのか
そんで、オペレーター無いし
あと、いくらGCでも、「ちゃんとこっちで始末しますから」
って思ったりもする。
それと、C++みたいにprivateのラベルの様に
「こっからここまでprivate」みたいに………

愚痴は、いくらでも出るのに、ロクなコード書けない俺が
一番やっかい。

538 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 19:00:14.27 ID:1RpaQohZ.net]
>>525
使えるのならリフレクション。
キーワードが共通の時にテーブルを書く手間をケチれる。
一応C++でもモドキがあるようだからいけるはず。
taichino.com/programming/1945

539 名前:デフォルトの名無しさん [2015/09/26(土) 23:32:48.30 ID:5mMoR0BV.net]
>>525
自分の上司に訊きなさい。

540 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 23:47:31.13 ID:G4HmjC7J.net]
上司にきくことじゃないな
>>531みたいなバカは脳がスカスカなので
次にタイプする文字も上司に訊いてるんだろう

541 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 00:28:15.57 ID:Aie1F5/k.net]
>>525
辞書(HashMap)、関数ポインタなどで、

vTableのように、文字列と処理を結びつける

542 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 00:57:34.05 ID:IK6WV2UC.net]
関数内で関数の宣言したらコンパイル通って驚いた

void Func()
{

543 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 00:58:05.23 ID:IK6WV2UC.net]
void A();
}
みたいな感じでね



544 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 01:06:55.56 ID:YOaTuDE7.net]
>>520
A && a = A{};
これでOK

545 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 01:21:55.60 ID:7JlNsb+t.net]
Cから受け継いだクソ仕様だな

546 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 11:47:05.82 ID:+LbsO3cu.net]
>>537
どれがどういう理由で糞なの?

547 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 12:26:51.51 ID:Wa6E2D6E.net]
>>489
やり方教えて

548 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 13:53:17.26 ID:0R68gjtE.net]
>>534-536
こんなやり方あったんだ。便利そうだな

549 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 14:37:12.97 ID:hEAZFQJb.net]
A && a = A{};

これマジで安全なの?
オブジェクトの寿命はどうなるの?

550 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 15:00:57.98 ID:zsE9aaJl.net]
>>541
なにも問題ない
参照のスコープまで生き延びる
確か規格の8.5.3か12.2あたり

551 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 15:13:07.68 ID:zsE9aaJl.net]
12.2一時オブジェクトの段落5か
The temporary to which the reference is bound or the temporary that is the complete object of a subobject to which the reference is bound persists for the lifetime of the reference except:

去年Visual C++は
Sub && s = Full{}.sub;
の寿命が延びないバグがあったのでバグ報告しといたけど、直ったようだ

552 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 15:14:15.81 ID:hEAZFQJb.net]
aが右辺値参照なのはどうして?
右辺値参照と何の関連性が?

553 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 15:15:29.74 ID:zsE9aaJl.net]
>>544
右辺値を受け取ってるんだから右辺値参照なのは当たり前だろう



554 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 17:14:48.82 ID:x2H664Vf.net]
>>539
やり方?
何を指摘されてるかすらわかってないだろ w

555 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 17:37:38.84 ID:1KsOvSTX.net]
>>546
自分は全くの通りすがりですよ。
わからないので聞いてるだけ。

556 名前:デフォルトの名無しさん [2015/09/27(日) 17:42:40.55 ID:IjMgIUn3.net]
>>544
const左辺値参照でもよいはず

557 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 17:44:07.83 ID:hEAZFQJb.net]
ユーザーモードとカーネルモードがあるのに
そういうことに言及せずにざっくり4GB制限とか言ってるから
バカにされてるだけじゃね

558 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 17:51:25.33 ID:hvy9lckk.net]
そういう話とはちょっと違うと思ったけど、どうなの?

559 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 17:55:09.33 ID:Tcvq0fDO.net]
ID:hEAZFQJb が馬鹿な事は分かった。
ユーザーモードとカーネルモードで空間分離していれば3GBの制限も無いはずなんだが。

560 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:05:02.17 ID:hEAZFQJb.net]
誰も別空間とは言っていないのだが
むしろ同じ空間を目分量で分離しているからこそ問題であり
メモリの上限の話をする上で
言及しないのはおかしいのではと言う話なのだが

561 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:12:42.15 ID:Tcvq0fDO.net]
>>552
お前が賢いつもりなら、さっさと>>539に対して明確に回答すればいいだけ。
それも出来ないのに喚いているだけだから、お前は馬鹿なままなんだよ。

562 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:13:02.34 ID:Pogh5WEF.net]
32bit環境でもポインタのサイズを64bitにしてハードウェアを活かさない実装にしてもC及びC++の規格上問題ない

563 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:15:56.97 ID:hEAZFQJb.net]
いや別にそういう立場ではないんで



564 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:20:03.99 ID:Tcvq0fDO.net]
ID:hEAZFQJb : カーネルモード知っている俺カッケー
ID:Pogh5WEF : 屁理屈言える俺カッケー

だからお前らは馬鹿なままなんだよ。

565 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:22:11.81 ID:Pogh5WEF.net]
>>556
屁理屈もなにも一番元の話がそれなんだけど

566 名前:デフォルトの名無しさん [2015/09/27(日) 18:26:28.84 ID:IjMgIUn3.net]
sizeof(void *)の話とカーネルモードは本質的に無関係
無理やりこじつける実装も存在するというだけ

そもそも命令デコーダとアドレスデコーダは別物

567 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 19:00:43.12 ID:nW+23lOG.net]
C++インタプリタがあるんだから
何Gあろうが関係なくね

568 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 19:51:34.01 ID:YOaTuDE7.net]
もはや何を言い争っているのかわからん

569 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 19:53:58.16 ID:1KsOvSTX.net]
全然教えてくれないんじゃん

570 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 20:28:04.86 ID:Af4kFVrx.net]
元はJava,C#空想実装と現実のC,C++実装を比較するのはおかしいという話
空想実装でよければC,C++だってそんな制限はないと言ってるだけ
文脈嫁

571 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 21:41:42.41 ID:VW7AXb3O.net]
だけ

572 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 21:49:51.60 ID:KfU5Es7n.net]
空想実装と現実の実装の違いについては
JavaとCで違いがあるのか?
どちらも現実はビット数の制限受けてるだろ

573 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 22:48:35.59 ID:Tcvq0fDO.net]
>>561
そりゃまともな奴なら出来ないって言うからね。回答しようがない。
ここで引っかかっている馬鹿はその程度でしかない。
こいつらはCスゲーしか認めないようだが、そういう問題ではないんだがな。



574 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 01:23:45.19 ID:8FV3B/V7.net]
いいんだよ
各自好きな事言っとけ
ここは落書き

575 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 06:44:48.23 ID:Rj5Nu0nM.net]
>>565
>>546

バカがアホに諭すとか滑稽すぎ w

576 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 07:05:49.65 ID:oN5IJNc7.net]
もはやなんのスレか分からない

577 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 11:08:56.51 ID:BV7UhKgt.net]
C++のコードで参照渡しをやたらと多用する人がいますが、意図がよくわかりません。
ポインタの代替として使われているのでしょうか?

int hoge(Foo &foo);

再代入を行わない場合、普通にポインタ渡しでも意味は変わらない気がするのですが。
開発上の利便性を考えてのことなのでしょうか。
個人的な考察として、以下の可能性を想定しています。

1. "->"による値参照が嫌で、"."を用いたい。そのために参照渡しを多用している
2. オブジェクトの状態変化の可能性を示唆させるために参照渡しとポインタ渡しを使い分けている

578 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 11:21:34.67 ID:VY24hflb.net]
A a;
hoge(&a);
が面倒ってだけ

てか、C++ならスマートポインタ使え

579 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 11:21:55.29 ID:3TMmR4lP.net]
>>569
2の意味がわからんけど場合によってポインタで渡すより幾つか利点ある
null参照を渡せない
参照先を関数内で変更出来ない(ポインタでもconst付けりゃ出来なくする事出来るけど)

あと普通にポインタ渡しとか参照渡しを多用とか言ってるけど参照渡しは普通だから
むしろnullpointer渡すことが出来る時か文字列リテラル渡すときぐらいしかポインタ渡しは使わない

580 名前:デフォルトの名無しさん [2015/09/28(月) 11:26:57.20 ID:DQYQoyfG.net]
ポインター版の関数とポインターじゃない版の同じ関数を2回書かなくていいという意味もある

581 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 12:49:29.07 ID:4w+sdak1.net]
特別必要がない限りポインタ渡しなんてヤメレ

582 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 13:35:58.94 ID:BV7UhKgt.net]
レスありがとうございます。
C++の世界では参照渡しがデフォと考えた方が良さそうですね。

C++は他人のコードを眺める程度なのですが、
同じような用途なのに人によって参照渡しで統一している人やポインタ渡しで統一している人がいて不思議に思っていました。

583 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 13:47:22.82 ID:iX8okw0+.net]
メンバ変数を引数として渡す関数の場合、参照は使いにくい



584 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 14:26:10.97 ID:wVFkh7Dk.net]
>>574
はい、その通りです。
C++はポインタとプリプロセッサマクロの撲滅を目標の一つとして開発されています。
そのためC++ではポインタよりも参照が推奨されています。

C++であってもポインタを多用する人はいますが、
その人の勉強不足でCのポインタを引きずっているとも言えますし
C++の参照がポインタからの全面移行を促すだけの魅力が無いとも言えます

C形式のポインタを捨ててもらえるよう、C++は永遠に進化中です。

585 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 17:34:31.23 ID:rUo6g3/R.net]
例えば関数の引数なんかでオプション的な引数がある場合
(その引数があってもなくても関数が動作するような場合
例えばログ出力先の指定など)
ポインタだと楽なんだけどね
void runSomething(const std::string* log)
{
// log = 0なら何も出力しない
}
これってなんか横着せずに参照でやるべきなんだろうか

586 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 17:35:18.80 ID:rUo6g3/R.net]
上記constはおかしいな

587 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 18:47:53.83 ID:wVFkh7Dk.net]
>>577
俺ならデフォルト引数か関数オーバーライド使うかな?

参照はデフォルト引数出来たっけ?
ダメなら関数オーバーライドで。

String位ならデフォルト付き値渡し引数にconst付けてコンパイラさんお願いっ!てしちゃうかも

588 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 18:53:56.76 ID:VY24hflb.net]
オーバーライドじゃなくてオーバーロードやろ?

589 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 18:58:09.96 ID:XXoDc2O6.net]
>>577
ところでこの例の場合引数が省略された時に0が渡されるのは保証されてたっけ?

590 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 19:05:58.93 ID:4w+sdak1.net]
577の引数が省略されたらコンパイルエラーになることが保証されてるよw
NULLを渡されたら特別な処理をしたいならポインタ使ってもいいんじゃないか
俺ならそういう設計は可能な限り避けるけどな

591 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 19:07:49.95 ID:P8/hbuJG.net]
>>581
この例のままだと引数の省略は出来ない

void a(const std::string *s = 0);
とするか、意味は少し変わるが
void a(const std::string& s=std::string());
としてempty()の場合無しとして扱うか
俺は後者をよく使う

592 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:02:10.71 ID:91/ACm3S.net]
>>575
ん?
なんか面倒なことあったっけ?

593 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:07:14.94 ID:91/ACm3S.net]
>>582
> 577の引数が省略されたらコンパイルエラーになることが保証されてる

そんな保証あったっけ?



594 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:34:23.74 ID:tAj/1R7q.net]
もちろんです

595 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:21:10.12 ID:qXJ0fmsD.net]
>>570
何でもかんでもスマポにすればいいと言うわけではない
スコットメイヤー先生の糞本でも読んで出直せ

596 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:23:31.06 ID:1BrOiTcA.net]
うっせーハゲ

597 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:30:32.73 ID:AY6OxaHG.net]
>>583
>void a(const std::string& s=std::string());
void a(const srd::string& s = ""));
でええやろ

598 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:33:11.06 ID:mUEYl4pK.net]
スマートポインタってオーバーヘッドでかいでしょ
一度に大量の解放が起こると性能ガタ落ちだし
速度を追求するためにC++使ってるのに、本末転倒

599 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:35:19.98 ID:1BrOiTcA.net]
unique_ptrならいいだろ

600 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:38:52.17 ID:tAj/1R7q.net]
>>589
お前はいいかも知れないが
許容出来ない人も居るだろう

>>590
スマポのオーバーヘッドはアセンブリレベルで
マナポと完全に同一にまで改善されたというのが
ハーブサッターとスコットメイヤー教祖の教えなのだが
ただしunique_ptr<T>に限る

601 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:39:23.89 ID:ynPwQZO2.net]
つか、uniqlo_ptrしか使わんな

602 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:40:52.11 ID:ynPwQZO2.net]
///
unique_ptrだ
予測変換入ってもた

603 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:54:34.42 ID:FIIzSoGf.net]
つかstd::unique_ptrの構文が参照ではなくてポインタのそれである件について:

やっぱC++においては参照の方がおまけ概念
const T&以外の参照渡しは禁止



604 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:55:27.14 ID:0rYiKgaG.net]
>>583
>void a(const std::string& s=std::string());
>としてempty()の場合無しとして扱うか

おお、これでちゃんと動いた!
大抵はこれでどうにかできそう
良いこと聞いた

空文字列と文字列が無いことを区別して取り扱いたい時が稀に良くあるが
仕様変更できる場合が大半だな
文字列以外ではあまりないし

605 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:57:51.67 ID:mUEYl4pK.net]
>>592
いやでも、shared_ptrは遅いんでしょ?
unique_ptrが使える場面なんて限られてるし、片手落ちかと
だいたい、新技術を導入するか否かの決定権を持っている上の人たちは
長年生ポインタのやり方で染み付いている訳で、
便利だから乗り換えましょう、とはそうそういかないかと

606 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:57:53.72 ID:0rYiKgaG.net]
>>595
生ぽさえ撲滅出来ればそれでいいんじゃよ

607 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:01:49.61 ID:1BrOiTcA.net]
むしろshared_ptrのほうが使える場面が限られてる
遅いといってもshared_ptrのコストが問題になる場面なんてめったにないだろう

608 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:04:24.66 ID:tAj/1R7q.net]
ナマポをスマポに

609 名前:書き換えるときに
unique_ptrじゃなくてshared_ptrしかダメ
というのは作りが相当おかしい
[]
[ここ壊れてます]

610 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:20:39.17 ID:XXoDc2O6.net]
>>597
うちはナマポ使ってると、レビュー時にその必要性について議論させてるぞ

Cできちんとポインタを使いこなしていた人ほど
すぐにC++ではナマポ不使用派に転向しちゃう

基本、実績のある古いコードをそのまま持ってきた場合とシステムコールとかのC形式ライブラリ呼ぶところ位しかナマポは残らないな


shared _ptrが遅いというのは、ナマポで安全対策を入れていない場合と比べてだ
ナマポに安全対策を入れたら大抵はshared_ptrより遅くなるぞ

ナマポの方が速いと主張する人たちは
レビューとプロファイラーの前で生き残れなかった

ま、うちだけかもしれんが

611 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:24:13.61 ID:XXoDc2O6.net]
でもC++のスマポは記述が冗長なのが好きになれない

ナマポはレビュー時に見落とすくらいシンプルなのにね

612 名前:デフォルトの名無しさん [2015/09/28(月) 23:36:28.90 ID:FF3rjUqv.net]
動的記憶が前提だからね
あくまで用途はその範疇で

613 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:38:37.64 ID:FIIzSoGf.net]
いくらスマポが良いといっても
やめて!メモリの動的確保する気でしょう?
エロ同人みたいに



614 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:45:35.35 ID:0rYiKgaG.net]
う、、、ネタがわからん

615 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:55:41.35 ID:0rYiKgaG.net]
実際、スマポも生ぽもほとんど使わないな

メモリ操作はSTLのコンテナとイテレータにお願いしちゃうし

ポインタ渡しは参照使うし

型変換とかも名前付きキャストとunionでどうにかなるし

616 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 00:42:40.24 ID:0lZfHTgJ.net]
まあポインタでも参照でも好きなもんを使えばいいよ。プログラムなんて動けばいいのさ。

617 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 01:17:31.36 ID:HqSuUkpS.net]
こまけぇこたぁ
    いいんだよ!!
  /)
 // /)
`///  __
|イ二つ/⌒⌒\
| 二⊃ (●) (●) \
/  ノ/⌒(_人_)⌒  \
\_/|  |┬|   |
 / \  `ー′  /

618 名前:デフォルトの名無しさん [2015/09/29(火) 02:44:20.18 ID:NXR0Nytt.net]
よくねえよヴォケ

619 名前:デフォルトの名無しさん [2015/09/29(火) 07:18:55.18 ID:UCFlulCD.net]
ナマポの利点ってなんなの

620 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 08:27:03.26 ID:4NffsMzC.net]
働かなくても生活出来ること

621 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 08:30:36.21 ID:Y2fWXifr.net]
>>571
>参照先を関数内で変更出来ない
意味がわからない
codepad.org/mXQd0mNP
参照であっても参照先を関数内で変更できるようだが

622 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 08:42:57.14 ID:Y2fWXifr.net]
>>576
STLのイテレータをみていると、これはポインタと同じ使い方
本当にポインタを撲滅する気があるようにはみえない
codepad.org/gQY11puS

623 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 08:46:58.42 ID:GdgkSls5.net]
>>612
参照が示す場所と言えば良かったかな?
参照先の値を変更出来るのは当たり前だからわざわざコード書かなくてもいいよ



624 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:18:41.17 ID:kfE15Zdi.net]
C++になっても生ポインタを結局ばりばりに
使うのだよな・・・みんな。

625 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:38:09.16 ID:bCmPOTpj.net]
>>613
それはナマポ派のひとを取り込むためにわざと記法を似せてるんじゃないかな?

626 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:42:32.67 ID:2BMWd/g5.net]
どうしてもイヤならC++なんか手を引くべき

627 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:43:37.29 ID:bCmPOTpj.net]
>>614
よく分からんがポインタのアドレス値そのものを書き換えるってこと??

もらったポインタをfor文の中でインクリメントしてデータアクセスする以外の用途が思いつかないな

上記の用法ならイテレータの参照を渡すかのが普通だからわざわざポインタ使うほどのものでもないし

628 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:46:03.17 ID:bCmPOTpj.net]
>>615
それがC++の良いところでもあり悪いところでもある
清濁併せて飲み込んじゃう混沌さがC++らしさ

629 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 09:51:42.83 ID:GdgkSls5.net]
>>618
> よく分からんがポインタのアドレス値そのものを書き換えるってこと??

そう
変更出来ない事を(細かい事だが)メリットとして挙げてる
ポインタもconst付ければ変更出来ないけど面倒くさいからな

630 名前:デフォルトの名無しさん [2015/09/29(火) 11:25:09.86 ID:NXR0Nytt.net]
標準アルゴリズムはナマポ前提でそ
ナマポとイテレータを透過的に置き換えられるってだけで
ナマポ撲滅を主張するような作りにはなってない

631 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 11:39:27.99 ID:9FBYnxt5.net]
ポインタを使うて事にそんなにアレルギーがある人がいるんだ…
コードを全部配列で書いてもアレルギーでるの?

632 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 11:49:34.30 ID:Fziu4eIr.net]
>>622
Cかよと面倒臭い気持ちにはなる
んで、しぶしぶtraitsを書こうと思って、c++ array specializeでググる

633 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 12:13:37.73 ID:XovM8eOK.net]
生ポがわいてんのか



634 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 12:35:12.59 ID:Y2fWXifr.net]
>>614
ますます意味がわからない

>>571
>参照先を関数内で変更出来ない

できちゃってるよ‥
codepad.org/6rGzlzmc
参照を使っても呼び出し元に影響を与えないわけではないのだが、どういうメリットを強調したかったの?

635 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 12:37:23.78 ID:bCmPOTpj.net]
>>620
あ、了解。やっとわかった。

ポインタのメリットとして書き換え可能をあげてるのかと勘違いしてた

参照のメリットとしてアドレス値(?)が書き換わる可能性が無いと言うことね

636 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 17:06:50.42 ID:0lZfHTgJ.net]
参照はだいたい理解したんだが
&& と言うのだけが理解出来ないよ。

637 名前:デフォルトの名無しさん [2015/09/29(火) 19:52:43.47 ID:NXR0Nytt.net]
テンポラリへの参照

638 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 20:32:38.62 ID:rSzsIUwL.net]
new, deleteを生で書かないという前提なら生ポでいいじゃん

639 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 20:37:38.49 ID:XSRpVFiu.net]
>>627
右辺値への参照です
 int a=0;
 int & lr = a; //左辺値参照
 int & rr = 0; // 右辺値参照

 void f(int &); void f(int &&); //両方のオーバーロード
 f( a ); // f(int &)
 f( 0 ); // f(int &&)

 int g();
 int && rr2 = g(); //g()呼び出し結果は右辺値

640 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 20:38:39.97 ID:XSRpVFiu.net]
失礼
int && rr = 0; // 右辺値参照
だった

641 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 20:42:24.19 ID:XSRpVFiu.net]
class A {
 void f() &;
 void f() &&;
}

A a;
a.f();//f()&
(new A())->f(); // f()&&

642 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 20:59:50.06 ID:UeLWTQcw.net]
shared_ptrが遅いって言ってるやつはどの操作にとんなコストがかかるか理解して言ってるんだろうか

643 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 21:05:55.31 ID:Z5H58J48.net]
shared_ptrを使ってみて遅いと評価することと
どの操作にとんなコストがかかるか理解
することにどのような因果関係があるのでしょう



644 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 21:09:20.14 ID:VAPx39zG.net]
まあ、実際sharedは遅いよ。
それでも多言語のGCやらに比べればマシだけど。
要は機能豊富過ぎるんだよね。

殆どの用途にはuniqueで十分

645 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:00:15.35 ID:UeLWTQcw.net]
どの操作にどんなコストが掛かるのか知らないと効率的な利用が出来ないだろ

646 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:06:58.07 ID:xQzivTWI.net]
shared_ptrの効率的な利用のためにshared_ptrの仕組みを理解することと
shared_ptrをナマポの代替で使ってみて遅いケースがあると判断することに
何の関係が

647 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:13:09.38 ID:VAPx39zG.net]
実装の詳細は知らんけど
ナマポと比較して
shared_ptr1つ目生成時中間バッファ作成コスト、コピー作成時とコピー削除時に同期コスト、weakも入れた最後の削除時に中間バッファ削除コスト、
デリファレンス時ノーコスト

ってな感じじゃね。

648 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:13:19.41 ID:diX6sJrx.net]
(new A())->f() は f() && でなくf() & が呼ばれる
*(new A()) が左辺値だから

649 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:31:50.55 ID:mPnf6nOs.net]
>>636
こないだstd::mapのstd::setを使ったらスゲー請求書が来てびっくりした

650 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:46:20.57 ID:diX6sJrx.net]
そういやshared_ptrのカスタムデリーターってtype erasureしてる?
制御情報と別にさらに動的領域が必要になりそうな

651 名前:デフォルトの名無しさん [2015/09/29(火) 23:01:51.29 ID:NXR0Nytt.net]
>>639
だよな、俺も変だと思った
ビルトイン演算子の単項 * は常に左辺値を生じるわけで

652 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:17:58.28 ID:H886HULU.net]
shared_ptr使ったらいつのまにかuse_countが万単位になっててビビった

>>635みたいなバカは実測もしないでshared_ptrがGCより速いと勘違いしてんだろw

653 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:18:59.34 ID:OUPKSVtA.net]
万の共有してるお前がバカなだけ



654 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:27:46.40 ID:mPnf6nOs.net]
やっぱスコープを超えて生きつづけるような動的メモリ確保は悪
個数に上限がない上に、ソースコードの検索で実体を特定できない分グローバル変数より性質が悪い

1スコープ1画面すなわち25行未満とするの正義

655 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:35:18.44 ID:LyudXVtb.net]
2015年に於いて一画面が25行の環境の>>645
ムーブセマンティクス全否定だそうです

656 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:42:59.40 ID:mPnf6nOs.net]
動的メモリ確保を必要以上に有りがたがって多用する奴は
グローバル変数を多用するビギナー未満の存在、

チューリングマシンあたりからやり直せ

657 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:56:13.74 ID:VAPx39zG.net]
そりゃ実行時のデータで必要なオブジェクトの数や種類が変わらないなら必要は無いのだろうが。

658 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 00:49:17.79 ID:k73k1QZf.net]
>>638
make_shared使ったら中間バッファ作成コストは無くなる
その代わりweak_ptrを使った場合それが残ってる間も解放されない


あと、shared_ptrのコピー速度が問題になる程コピーするか?
そんな設計だと生ポインタだったら所有権の管理出来ないと思うんだが

>>643
糞実装というのは置いといてもshared_ptrの速度と何の関係が?
gcのある環境だと数万も参照持つ程長い間生きてるといざ解放するときstop the worldになる糞コスト高い世代のgcになるだろうけどな

659 名前:デフォルトの名無しさん [2015/09/30(水) 01:08:31.92 ID:YymjgiCr.net]
GCとshared_ptrの速度を比較する馬鹿がいると聞いてきました。
しかもネタじゃなくて本気で書き込んでるらしいと聞きました。

660 名前:デフォルトの名無しさん [2015/09/30(水) 01:44:40.15 ID:wkMyE1bD.net]
どっちが速いかって問題じゃないから
ここが通じないやつと話しても不毛なだけだよ

661 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 07:07:44.73 ID:L4DkDpWh.net]
>>630
分からん。
そもそも右辺値参照する理由は何ですの?

662 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 08:23:18.30 ID:FCo7WZBm.net]
>>652
ま、もったいないお化けの呪いです。

663 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 11:52:14.07 ID:Q1Di+uY9.net]
関数の戻り値を変数に受けずに直接ゴニョゴニョするときに有益



664 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 12:49:31.47 ID:4JsedgFo.net]
>>652
右辺値参照はパフォーマンス向上のために導入されたもので、参照先は、以後のスコープで使われる機会のない(デストラクトを待つだけの)一時オブジェクトと見なされる。

実際に使われる機会のないことはプログラマーが保証する

665 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:08:20.36 ID:vdDHGEBP.net]
>>652
右辺値参照が導入された第一の理由はmoveセマンティクスを実現するため

666 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:16:43.24 ID:L4DkDpWh.net]
分からん。c++以外の言語で右辺値参照と言う機構は有るんでっか?
もしc++固有の機構なら何でc++だけそんなもん導入する必要があるのですかい?

667 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:39:20.73 ID:VnaX2NHk.net]
C++はスタックにオブジェクトを確保するから

668 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:45:19.98 ID:VnaX2NHk.net]
いや、もちろんヒープに確保する事もできるんだけどGCが無いから

669 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:55:13.48 ID:XhnAqUEm.net]
unique_ptrのmoveコンストラクタの存在とコピーコンストラクタがないことでどういう効果があるか考えれば分かると思う。

670 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 14:19:24.56 ID:7iKwfO2h.net]
>>657
俺様的個人見解では
コピーでなくムーブで済ませるのは本来ならコンパイラやインタプリタの最適化ルーチンのお仕事

それを言語仕様上「いいか、絶対にコピーするなよ、絶対にだぞ!」
と明記することが出来るようにしたのが右辺値参照


ムーブできなくてコピーが発生するくらいならコンパイルエラーにしてくれ
俺(プログラマ)がムーブ出来るように手順を考え直すから
と言うことを&&でコンパイラさんに伝えてる

他の言語は「こまけーことはいいんだよ!」でできています。

671 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 14:28:06.26 ID:vdDHGEBP.net]
>>657
C++は他の高級言語と比べて高パフォーマンスであることを特に重要としてるから
プログラマの工夫で高速化できる機能が備わってる

672 名前:デフォルトの名無しさん [2015/09/30(水) 14:49:50.37 ID:R06l1h0q.net]
C++以外はすべて糞言語だから右辺値参照が無い。

673 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 21:51:39.92 ID:L4DkDpWh.net]
>>661
うーん、まだ分からん。



674 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 21:58:53.58 ID:lnfdPqWh.net]
コピーよりスワップのほうが早い場合があるだろ

675 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:00:11.74 ID:VnaX2NHk.net]
srad.jp/~taro-nishino/journal/507551/
これ読んで分らなかったらあきらめな

676 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:01:27.44 ID:k73k1QZf.net]
>>664
存在する理由が解らなければ使わなければいいよ
標準ライブラリを使ってるだけで割と恩恵受けてるから

677 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:16:34.76 ID:L4DkDpWh.net]
>>666
読んでいる途中で諦めた。明日再挑戦するわ…

678 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:19:44.01 ID:VnaX2NHk.net]
こんなやつ・・・

679 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:34:51.73 ID:IxoD0KLd.net]
>>666
『名前を持たないなら、それは右辺値"なのである』
その理屈で行くと*(new int)が右辺値になってしまうな

680 名前:デフォルトの名無しさん [2015/09/30(水) 23:35:15.70 ID:aEcL3JaV.net]
peace.2ch.net/test/read.cgi/internet/1401535906/107
  ↑ ↑ ↑ ↑ ↑ ↑ 

681 名前:デフォルトの名無しさん [2015/10/01(木) 00:18:26.56 ID:MrcZAfOx.net]
メンバ変数とメンバ関数の定義ってどういう順序で書くのが一般的なの?

【VC++方式】
publicメンバ関数
privateメンバ関数
publicメンバ変数
privateメンバ変数

【Google方式】
publicメンバ関数
publicメンバ変数
privateメンバ関数
privateメンバ変数


貴様らはどっちを使ってるの?

682 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:23:26.58 ID:W6dzHXP5.net]
全部パブリックだし無駄なアクセサとか作らない性質なんで関係無いですね

683 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:26:52.37 ID:yE0+l/d1.net]
統一されてりゃいい



684 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:28:09.19 ID:0eXwX1cj.net]
変数は全部上に持ってってる。
何で下に配置しようとするのか理解できない。

685 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:34:01.87 ID:e+Nqpsc9.net]
クラスを利用するときは変数なんて見ないだろう

686 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:43:09.13 ID:j4gRyYlh.net]
変数が上だな
つーかデフォルトprivateなのだから
そこから書くのが自然な気がする。

687 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:43:40.25 ID:P62utjXs.net]
何で上に持っていくのか理解できない

688 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:46:42.51 ID:KtuKSkrc.net]
ヘッダファイルが誰のためにあるのか考えろや

689 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 00:47:30.33 ID:W6dzHXP5.net]
これはね、
内部仕様を大事にする東洋哲学と
外部仕様を大事にする西洋哲学の
違いですね

690 名前:デフォルトの名無しさん [2015/10/01(木) 01:06:55.36 ID:W4wdkuI5.net]
>>635>>640の話をよくよく聞いてみたところ、彼ら、ソートを再帰で作ってたらしいです。
引数としてstd::shared_ptrを渡していたのでコピーコストが凄いことになっていたようです。
ソースを戴いたのでループに修正してあげたところ、かなり驚いた様子で改心していました。

691 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 01:17:32.02 ID:aA9UfTOs.net]
>>681
shared_ptrを引数として渡すならconst参照でいい

692 名前:デフォルトの名無しさん [2015/10/01(木) 02:12:38.73 ID:W4wdkuI5.net]
>>682

>>635の人ですか。
また何か疑問がわきましたか?

693 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 02:32:50.77 ID:aA9UfTOs.net]
>>683
ちげえよ

引数でshared_ptrを渡すならコピー渡しじゃなくて
const std::shared_ptr<T>& p
にしろ
その関数内で所有権が欲しいならその時にコピーしろ



694 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 02:52:40.21 ID:aA9UfTOs.net]
何でソートをオレオレ実装してんだstd::sort使えよとか他にも突っ込み所あるけどね

695 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 08:01:51.69 ID:ZyUEx0el.net]
つーかキチンと所有権管理の意識をしていたら、わざわざsharedを使う場面が殆ど無いことに気づくはず。

696 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 09:58:06.89 ID:LB18ex5+.net]
std::sortはpredを値渡しだが、少し複雑なpredのメンバにshared_ptrを持たせたことがあった。それが正しい判断だったのか余計な心配だったのか不明。

697 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 15:43:10.33 ID:mZxAmtu3.net]
faithandbrave.hateblo.jp/entry/20121116/1353047948
boost::threadのスタックサイズはthread::attributes::set_stack_sizeで設定できるようですが
std::threadではどのようにして設定するのでしょうか?

698 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 16:41:46.71 ID:lsGbndod.net]
You can't.

699 名前:デフォルトの名無しさん [2015/10/01(木) 19:19:35.56 ID:BUCLrkun.net]
Oh,no.

700 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 20:12:32.90 ID:LB/4icN7.net]
C++のクラスとか実は構造体なのだからデータ1stに決まってるだろ;
メンバ関数から書く奴は頭おかしい(もしくはclassとstructの明示的使い分けを説明できねばならない

まあ一応概念上は「手続きに与えるデータ」の側面(手続きがメイン)を強調したいときがstructで
それ以外はclassではある

701 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:11:20.09 ID:P62utjXs.net]
>>691
関係ない

702 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:21:12.13 ID:WeiZCb/T.net]
>>691
>もしくはclassとstructの明示的使い分けを説明できねばならない
互換性以外でstruct意味あるの?
自分のコードでは使おうと思ったことない

703 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:31:33.68 ID:QENZiec8.net]
使い分けなんか決まりが有るわけでもないし適当でいい。
それより「クラスとか実は構造体」なんてアホなこと言ってる奴は
早く病院行った方がいい



704 名前:デフォルトの名無しさん [2015/10/01(木) 21:35:17.70 ID:BUCLrkun.net]
構造体をクラスで特殊化しようとしたら出来なかったから同じではないみたい

705 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:39:07.38 ID:BshYJ+by.net]
TMPにはまってた頃はstructばっかりだったな。
データを持つなんてことは滅多にないし。

706 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:41:20.18 ID:QENZiec8.net]
「構造体」などという定義の不明な用語を用いる奴は
アビバに行ってエクセルでも勉強してた方がいい

707 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 21:55:36.66 ID:LB/4icN7.net]
>>692-695
structの実体は全メンバがデフォルトでpublicなだけのclassにすぎないと
ストラストロウpップ本のどっかに書いてあった

一方クラス名と構造体名は同ではないが理由は知らん

708 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:03:04.84 ID:QENZiec8.net]
「全メンバがデフォルトでpublicなだけのclassにすぎない」
そんな嘘つき本は
早く窓から投げ捨てた方がいい

709 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:21:18.99 ID:BshYJ+by.net]
親クラスがデフォルトでpublic

あとは何だっけ?

710 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:23:51.58 ID:+UnsXPfG.net]
classから/への継承ができない
POD型になれる(Cと共用することができる)

711 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:32:16.11 ID:CWBNpZAW.net]
classもPODになれるぞ

712 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:32:25.91 ID:LB/4icN7.net]
classにできてstructにできないこと(あるいはその反対)とは?
2011年の規格になるがn3337.pdfならタダでダウソできるので
classとstructの違いがどこに書いてあるか指摘してくれると嬉しい

713 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:35:10.94 ID:QENZiec8.net]
三つ前のレスも読めない奴は
早く眼科に行った方がいい



714 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:40:03.08 ID:LB/4icN7.net]
>POD型になれる(Cと共用することができる)
classもPOD型になれる
n3337.pdfのChapter 9より
>A POD struct109 is a non-union class that is both a trivial class and a standard-layout class, and has no
>non-static data members of type non-POD struct, non-POD union (or array of such types).
で、
>A standard-layout struct is a standard-layout class defined with the class-key struct or the class-key class.
なのである

classがCと共用できないのはそれはその通りだがC++内の話題か?

715 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:40:18.43 ID:o05Ai7EN.net]
>>686
unique_ptrは逆に、所有権のない生ポの代替にはならないところがなぁ。
前に誰かが言っていたけど、コピー不可の「ほぼuniqueな」shared_ptrがあったらよさそうなのにな。

・基本、コピー不可
・使いまわす場合はweak_ptr(相当のもの)で
・それをlock()して得られるのも「ほぼuniqueなshared_ptr」
・それをローカルスコープの外に持ち出すには明確な記述が必要なんで
非ユニークな期間の管理は容易

自分でも作れるかもしれないけど、なんか落とし穴があったりするかな?

716 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 22:41:52.40 ID:LB/4icN7.net]
>>704
で、classにできてstructにできないこと(あるいはその反対)とは?

717 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 23:12:05.84 ID:P62utjXs.net]
>>699
どこが嘘つきなの?

718 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 23:41:36.26 ID:YVTNhxF0.net]
>>706
それweak_ptr経由したら無限にコピー作れるよね

719 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 23:46:09.70 ID:BshYJ+by.net]
クラスのメンバとして「所有権は持ってるけどコピーは可能としたい。だけど

720 名前:自分でnew deleteを書きたくない。」
っていう一番素朴ともいえる需要にはunique_ptrもshare_ptrも答えてくれないんだよね。
要素1個のvectorを持てば目的には合うけど、それはちょっと。
[]
[ここ壊れてます]

721 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 00:09:17.73 ID:Ty2xSLut.net]
所有権の無いナマポはナマポでいいんじゃ。
getして作る物じゃないの?

722 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 00:12:30.94 ID:E6p9V3H1.net]
>>709
意図的にそうすることはできるけど、このポインタ使う人にとっては意図せずにそうなることを
防げれば十分でしょ、って理屈。

723 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 01:37:40.67 ID:qg2lMJZH.net]
使い道が良くわからない
unique_ptrでgetで良いじゃんって思う



724 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 01:42:57.88 ID:UOnaTtLl.net]
>>706 が言ってるのは「基本的にはいつ勝手に解放されてもいいけどlock中に解放されるのだけはやめてほしいweak_ptr」じゃないかな

725 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 01:53:10.11 ID:UOnaTtLl.net]
あるいは「必要なときだけ一時的に強参照に変えられるweak_ptr」か

726 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 02:04:44.52 ID:t/H9126e.net]
>>715
それただのshared_ptr

727 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 02:12:07.99 ID:UOnaTtLl.net]
>>716
そだね
今リファレンス読み直してみたけど、普通にshared_ptrとweak_ptrでいいじゃんと思ってしまった

>>712 の言い分もわからなくはないけど、ちょっと動機としては弱いよね

728 名前:デフォルトの名無しさん [2015/10/02(金) 03:28:41.26 ID:ONuETOP6.net]
weak_ptrをスレッド跨ぎに使うととても便利だぞ。

スレッドAからスレッドBに作業を依頼するとき、スレッドA内でコールバックする
オブジェクトをweak_ptrに入れてスレッドBに渡す。
スレッドBは結果を返す時、weak_ptrを一緒に返す。
スレッドAは結果が返されたとき、weak_ptrが生きているかどうかで処理を継続するか
破棄するか決定する。

729 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 04:11:04.12 ID:mB2ii6Jd.net]
>>718 C++ でおk

730 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 05:15:26.18 ID:XsCDb17v.net]
おれは生ぽ派

731 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 06:56:56.47 ID:K61YkWCE.net]
ちゃんと後処理できるならなんでもいいのではないかな

732 名前:デフォルトの名無しさん [2015/10/02(金) 07:00:41.57 ID:BtQI5LIk.net]
unique_ptrを使うべき典型的な例くだちゃい

733 名前:デフォルトの名無しさん [2015/10/02(金) 07:01:11.19 ID:BtQI5LIk.net]
shared_ptrの間違いでちゅ



734 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 08:06:56.11 ID:ZDJdmWRt.net]
>>723
>>687

735 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 08:13:15.20 ID:t/H9126e.net]
>>723
CopyOnWriteを実装する時とか

736 名前:デフォルトの名無しさん [2015/10/02(金) 18:07:26.95 ID:7Yht83rO.net]
C++ って実際どういうところで使われてるん?

737 名前:デフォルトの名無しさん [2015/10/02(金) 18:12:29.97 ID:TpeMyO1f.net]
基本的なソフト、ライブラリの多くはC++製だろ。
スクリプト言語とかもC++製が多くてC++なしでは実装できないのが多い。

738 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 18:41:39.93 ID:8WzixXxl.net]
webブラウザ

739 名前:デフォルトの名無しさん [2015/10/02(金) 19:07:51.07 ID:AwBeWBui.net]
Haskellで書きなおせば省メモリーかつ10倍高速になるという人もいるね。

740 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 19:16:46.43 ID:8WzixXxl.net]
>>729
やってから言えって話だな

741 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 19:47:03.73 ID:0lgmsqw8.net]
Haskellが省メモリだと…?

742 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 22:01:36.63 ID:PixdrOkR.net]
コードサイズが省メモリという意味では。
「関数型ならこんなにシンプルにかける!」って宣伝よく見るし。
ってか仕方ないことだけどC++がコードサイズ大きい

743 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 22:50:51.68 ID:oFtaSIUa.net]
>>726
3Dのゲーム開発はみんなC++だよ
C++じゃないと重すぎてまともに動かん



744 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 22:57:22.05 ID:w2Lswr2g.net]
>任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
>そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
>このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
>より手軽にゲーム開発を行う方法が説明されるようだ。

745 名前:デフォルトの名無しさん [2015/10/02(金) 23:00:04.35 ID:TpeMyO1f.net]
それはないかと。ウェブブラウザで3Dしたり、3Dエンジン・ライブラリを呼ぶ形だと言語速度差少なかったり。

746 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 23:36:20.41 ID:dTb/cHoI.net]
C++使う目的がスピードなのは今も変わらないと思うが、RustやGoがいくら早くなろうが、C++は使われ続けると思う。
最適化にこだわろうと思った場合C++以外の言語では話にならない。

747 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 23:39:28.76 ID:07KUSVzt.net]
C++は柔軟性が抜群

748 名前:デフォルトの名無しさん [2015/10/03(土) 00:29:39.75 ID:mC8UjI5p.net]
Haskellが一番速いといわれてるけどな。

749 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 00:37:13.63 ID:TzdXrt85.net]
>>738
Haskellが一番速いという言葉に強い魅力を感じるのですが、数値演算では、C++やFortranと
較べてどれくらい速いでしょうか。
そもそもHaskellには、数値計算用の函数(三角関数、対数、指数などの初等函数)は
インプリメントされているでしょうか。そしてその有効桁数はどれくらいでしょうか。
少なくとも12桁できれば、16桁以上欲しいのですが。

750 名前:デフォルトの名無しさん [2015/10/03(土) 01:40:39.95 ID:F9VAPS7W.net]
Haskellはやめとけ。理想的なコンパイラが実現したらとかいう想定なんだろ?
現実では未実装で。
純粋関数型言語とそのコンパイラが完成されれば速いんだろうが。

751 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 01:48:15.69 ID:OaBps6Fz.net]
そんなに早いならHaskellの動画エンコーダーがあっていいはず

752 名前:デフォルトの名無しさん [2015/10/03(土) 01:48:36.78 ID:F9VAPS7W.net]
Haskell   自動並列化でググッた結果。





マルチコアでスケールするようになった Haskell2015年2月12日
Glasgow Haskell Compiler(GHC)は、関数型言語Haskellの主要コンパイラです。
GHCは(並列性に加えて)並行性を主要な目的として長年開発されてきました。
www.iij.ad.jp/company/development/tech/activities/haskell/


マルチコア時代の最新並列並行技術〜 Haskellから見える世界 〜 [PDF ...
www.iij.ad.jp/company/development/tech/techweek/pdf/141126_2.pdf


Concurrent HaskellおよびParallel Haskell
www.kotha.net/ghcguide_ja/7.0.4/lang-parallel.html


【Async】Haskellによる並列・並行プログラミングを読了した (2)【Concurrent】 | FiS Project
www.fisproject.jp/2015/08/parallel-and-concurrent-programming-in-haskell-2/


未来の並列プログラ ミング言語としての Haskell
ll.jus.or.jp/2008/slides/6/shelarcy.pdf

753 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 02:07:18.42 ID:4GRc9B1x.net]
URL貼るだけで自分の見解を何も述べられない低能は去れ



754 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 03:44:12.63 ID:RI5yhOba.net]
知らんHaskellは
しかしインタプリタ言語であるErlangがとある大規模並列案件についてC++より早く動いたという話をどっかで聞いた

そりゃー開発コストとバグのリスク(コードの読み辛さ)を考えずに最適化設計すれば最終的にはC++が勝つだろうけども

755 名前:デフォルトの名無しさん [2015/10/03(土) 04:40:55.15 ID:HrivTQ+h.net]
Haskellは強力な型システムのおかげでコンパイルが通ればバグが無いことが保証されるといわれてるけどな。

756 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 04:44:51.70 ID:mgovDRA4.net]
何その都市伝説

757 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:02:15.82 ID:I2+KZq9W.net]
>>744
Java以下の速度のErlangがC++に勝てるわけねーだろwwww

758 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:12:08.92 ID:I2+KZq9W.net]
Erlangが使われれる理由は速度じゃなくて、強力なフォールトトレラント性
Haskellは遅延評価がある時点で並列向いてない
触った事あればすぐわかるだろうに、本当に恥ずかしい奴だな

759 名前:デフォルトの名無しさん [2015/10/03(土) 08:47:05.87 ID:QGdOGmK1.net]
そう、Erlangは強力なフォールトトレラント性が特徴。
生命維持装置のような何十年も安定して稼働し続けなければならない物には
Erlang以外使えない。
エラーが起きた時点で国際宇宙ステーションの全員が死ぬことになる。
再起動も許されない。
そういったミッションクリティカルな場所で使うためにErlangが開発された。

760 名前:デフォルトの名無しさん [2015/10/03(土) 08:50:57.42 ID:QGdOGmK1.net]
Erlangの最大の美点は静的検査によりコンパイルが通ればバグが無いことを保証できる点。
この特長によってJavascript並みの安全性を確保できるといわれている。

これはC++では絶対に実現できない。

761 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:52:47.18 ID:OaBps6Fz.net]
>Javascript並みの安全性
ここ笑うところなのかな

762 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:53:15.81 ID:I2+KZq9W.net]
Javascript並みの安全性?
ポエムは自分のブログでやってくれよキチガイ

763 名前:デフォルトの名無しさん [2015/10/03(土) 08:58:23.08 ID:QGdOGmK1.net]
また、Erlangは強力な並列性を持ち、2000万スレッドのベンチマークが行われたこともある。
C++プログラムとの比較でErlangは文字通り2000万倍の性能をたたき出した。
これは大きな差であり、現在のスーパーコンピュータではErlangが主流となっている。



764 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:59:57.30 ID:I2+KZq9W.net]
ErlangがC++より型付け強いってのも笑うところ
名前以外全く知らないのがわかる

765 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:06:44.71 ID:I2+KZq9W.net]
あ、これ本物のキチガイだ

766 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:07:13.61 ID:eQmk9cX0.net]
>>750

Erlangはチューリング完全じゃないのか?

767 名前:デフォルトの名無しさん [2015/10/03(土) 09:28:38.72 ID:QGdOGmK1.net]
C++が負けたのがそんなに悔しいですか。

768 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:35:22.34 ID:hNjBKdKI.net]
あーくやしいくやちくてしょんべんちびっちゃうわー

769 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:37:58.97 ID:RI5yhOba.net]
>>747
gccと比べたら確かに遅かったorz
ttp://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=erlang&lang2=gcc&data=u64q
しかし事はユーザーが書いたコード断片の実行速度ではないのかも知れぬ、

>>748
>Haskellは遅延評価がある時点で並列向いてない
ぬんで?遅延評価しようがすまいがimmutableなオブジェクトだけの世界なら排他とか生じないんじゃ…

770 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:00:51.34 ID:I2+KZq9W.net]
>>759
Haskellの遅延評価はあらゆる物に適用される
で、サンク取り払ってメモ化される度に止まって逆説的に向いてないというオチ
ここらへんは自分で制御しようと思えばできるから
飽くまで他の並列化を前提とした言語と比べて向いてないという意味

771 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:37:40.95 ID:R/xGcqGB.net]
>>745
でもコンパイルエラーを突き止めるのに専用のツールが必要だったり
コンパイルが通るまでに半年かかったりするんでしょ?

772 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:42:17.61 ID:R/xGcqGB.net]
>>748-749
フォールトトレラントのおかげで
内部で死にまくってても見過ごしてるだけというオチじゃなかろな

773 名前:age [2015/10/03(土) 11:02:06.53 ID:xcjdOcxh.net]
Queueに関して教えて下さい。

queue<BYTE> fifo;

として定義した場合、pushできるfifoの最大の深さはどこで確認できるのでしょうか?
fifoに書き込まれているバイト数はsizeで確認できますが、
深さに関する事が調べたのですがどこにも書かれていませんでした。

用途としては、10MByte位のFIFOを用意しておいて、
fifoに半分位たまったら一括でファイルにライトする様な処理を考えています。



774 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:09:56.72 ID:OaBps6Fz.net]
深さとサイズがどう違うんだ

775 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:36:19.09 ID:UaQHAHfU.net]
その場合は、dequeを調べればいいんじゃないかな?

776 名前:デフォルトの名無しさん [2015/10/03(土) 11:38:25.79 ID:JIliozMV.net]
自分がハッカーかどうかわからないのですが
ハッカーになると自分はハッカーであるとわかるものなんですか?
それとも人に言われてはじめて気づくものなんでしょうか?

777 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:49:29.97 ID:UaQHAHfU.net]
ハッカーはハッキングします。
あなたはハッキングしましたか?

778 名前:デフォルトの名無しさん [2015/10/03(土) 11:52:29.29 ID:JIliozMV.net]
それはクラッカー

779 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:56:32.43 ID:y6+evVSu.net]
あたり前だ

780 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 12:05:26.41 ID:UaQHAHfU.net]
ハッキングによって入手した情報を悪用し、罪を犯すのがクラッカーです。
ハッカーは罪を犯すことを目的にハッキングはしません。

781 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 14:23:52.05 ID:bfkpTtOm.net]
まあ、俺クラスになると自分がハッカーだと自覚できてるな

782 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 14:45:00.58 ID:bKUFTYSg.net]
俺がこんなに強いのも…

C++関係ないね。

783 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 15:03:31.31 ID:6CgBohu1.net]
カーしか共通点無い



784 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 15:04:24.02 ID:6CgBohu1.net]
クラッカーの話題が出てたのか。スマン

785 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:05:55.00 ID:8AFtPGV4.net]
まあ、俺クラスになると自分が馬っ鹿ーだと自覚できてるな

786 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:08:13.17 ID:DbjSwrzl.net]
禿げてないとハッカーにはなれない

787 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:09:09.20 ID:4asnCA7K.net]
俺クラスになるとその点も問題ない

788 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:12:08.77 ID:H2im6CWF.net]
自作クラス最強説

789 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:46:46.05 ID:hZCkGPov.net]
やっぱりナビスコだな

790 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 17:03:29.86 ID:5Y3yXyVr.net]
C++使ってる時点で十分ハッカーだと思うけど。

791 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 18:24:19.53 ID:bfkpTtOm.net]
>>779
それはクラ…リッツとかオレオ!

792 名前:デフォルトの名無しさん [2015/10/03(土) 20:23:09.16 ID:HRif353B.net]
ハッカーの大部分が悪いことをするので、ハッカーは悪事を働く人を意味するようになった。
そこで、ハッカーたちはクラッカーという新しい言葉を作り、俺はハッカーだから
悪いことをしていないと取り調べで言うようになった。

793 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 20:24:08.26 ID:I2+KZq9W.net]
リンゴマークをこよなく愛する



794 名前:デフォルトの名無しさん [2015/10/03(土) 20:27:19.39 ID:25KCQVnt.net]
ハッカーの彼女ってペンギンだろ

795 名前:デフォルトの名無しさん [2015/10/03(土) 20:28:46.01 ID:HRif353B.net]
クラッカーという言葉を作って、犯人はクラッカーだと言うようになった。

796 名前:デフォルトの名無しさん [2015/10/03(土) 20:30:44.43 ID:HRif353B.net]
電話を無料でかける装置を50ドルで売った。
これは良く売れた。
マンハッタンのビジネスマンが一日に50台注文することもあった。
この利益でいくつかのフリーソフトウェアが完成した。

797 名前:デフォルトの名無しさん [2015/10/03(土) 21:34:06.93 ID:GmUX5JOa.net]
2つの矩形(XYWH)を覆う四角形Z(XYWHR)を求めるにはどのような計算式を書けばいいですか?

798 名前:デフォルトの名無しさん [2015/10/03(土) 21:40:46.15 ID:8iRLWTDj.net]
std:::min と std::max を使うと簡単だよ

799 名前:デフォルトの名無しさん [2015/10/03(土) 21:47:00.05 ID:GmUX5JOa.net]
>>788
矩形から矩形ならそれで出来ますが、矩形から傾きのある矩形を求める方法が知りたいです

800 名前:デフォルトの名無しさん [2015/10/03(土) 21:48:38.22 ID:DW8kiwr4.net]
ちょっと図で書いてみて

801 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 21:53:58.07 ID:wd3SBpbJ.net]
傾きありだと飼いは無数にあるから条件が必要

802 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 21:58:00.99 ID:8iRLWTDj.net]
>>789
これでどう?
動画も有るよ
sssiii.seesaa.net/article/194921654.html

803 名前:デフォルトの名無しさん [2015/10/03(土) 22:07:52.43 ID:GmUX5JOa.net]
シューティングゲームのすり抜け防止に使いたい
1F前の矩形+現在の矩形で矩形を求めて判定した後高速判定)、当たっていれば傾きありの矩形で判定したい(厳密判定)



804 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:18:40.75 ID:eQmk9cX0.net]
頂点8つだし、厳密なものでなくていいなら、最も遠い頂点間を長径とする長方形でいいんじゃないの?

805 名前:デフォルトの名無しさん [2015/10/03(土) 22:30:23.52 ID:GmUX5JOa.net]
線分でしてみます。

806 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:31:15.33 ID:RI5yhOba.net]
指定した点Pが凸多角形Xの内側か外側かはベクトルの内積で判定できるので、
凸多角形Yが凸多角形Xと重なりを持つかどうかなら、Yの辺を構成する全部の画素について上と同じことをやれば良い、

もし、YとXが非接触の状態から、Yの内側にXがいきなり飛び込むケースが在る場合は、
念のためXとYを入れ替えた判定もやる
単純にビットマップのANDでも取る方が幸せ鴨、

本当かどうかは知らん

807 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:34:55.68 ID:RI5yhOba.net]
訂正
誤:単純にビットマップのANDでも取る方が幸せ鴨、
正:が、小さい判定領域であればそこまでやるより単純にビットマップのANDでも取る方が幸せ鴨、

808 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 01:30:06.66 ID:RUTa+wSI.net]
>>793
簡単
頂点を引き伸ばせばよい
uploda.cc/img/img56100238268d5.png
↑適当な図

809 名前:デフォルトの名無しさん [2015/10/04(日) 03:21:04.05 ID:ZIaV4muE.net]
>>798
そういう図は何で描いてるの?

810 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 04:42:29.50 ID:r2m0aNE2.net]
C++スレなんだからC++じゃないの
ちな、このレスもC++で書いてる

811 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:03:01.78 ID:J4whK/1Y.net]
JavaScriptの、isPointInPath のように、
その点が、図形のパス内にあるかどうか、判別できないの?


それか、RGBAのアルファ値の、250〜255を、
アルファ値として使わず、
物体の判定用フラグとして使うとか

812 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:06:56.41 ID:yZJnSbHB.net]
>250〜255を、アルファ値として使わず

30年前のC++使いが考えそうなクソ設計だな

813 名前:デフォルトの名無しさん [2015/10/04(日) 10:40:50.29 ID:+wQ6czRK.net]
内積で判定するのってどうやるの?



814 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 11:26:51.95 ID:r2m0aNE2.net]
>>803
言いたかったのは
ttp://www.nttpc.co.jp/technology/measurement.html
の「線分と点の位置関係の判定」の部分
(最後の方の簡単な式。前半の大量の式は内外判定ではなくて距離の算出方式の解説に費やされている。

だが、上の記事の第2回目にさらにいろいろ書いてあったわ;
ttp://www.nttpc.co.jp/technology/number_algorithm.html

世間は広大だわ、

815 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 19:47:31.94 ID:T8eNBhl9.net]
boost::geometry に何かないの?

816 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:18:19.75 ID:VFapxPBu.net]
VC++2015にて

std::map<std::wstring, std::wstring> testmap;
testmap[L"Hello"] = L"World";
const std::map<std::wstring, std::wstring>& testmap2 = testmap;
std::wstring val = testmap2[L"Hello"];

この4行目でC2678
二項演算子 '[': 型 'const std::map<std::wstring,std::wstring,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' の
左オペランドを扱う演算子が見つかりません (または変換できません)

が発生するんだけど、要は「鍵と要素がwstring」で「constな」mapを上記のようにリテラル文字列で[]参照する書き方ってできる・・・?
const std::wstring ws = L"Hello";
std::wstring val = testmap2[ws];
とかやってもだめだった

エラーの詳細としては、mapのoperator[]に「wstring&」と「wstring&&」の両方があって曖昧だからNGらしい
そもそもconstなmapなのに要素変更にも使える[]を呼んでいるのがダメってことかいね?const外せば動くし

817 名前:デフォルトの名無しさん [2015/10/05(月) 14:26:27.32 ID:9/62paZL.net]
同じ質問が最近にもあったような

818 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:37:36.36 ID:VFapxPBu.net]
本スレの過去をmapで検索してもそれらしき件は見あたらず・・・(過去ログは読めない)

819 名前:デフォルトの名無しさん [2015/10/05(月) 14:41:46.58 ID:HSAikNuy.net]
>>806
testmap[L"jerk"];
これだけで副作用が生じるわけで諦めるしかあんめー

std::wstring val = testmap2.find(ws)->second;
あえてendが返ったか見てないけど、
それはoperator[]と同質の問題ってことで

820 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:43:47.49 ID:zntwOtDH.net]
std::mapはconst版( operator[](const Key&) const )は無いよ−。
キーがなかったら新しい値を挿入するという動作だから。
ja.cppreference.com/w/cpp/container/map/operator_at
findしましょ。

821 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:48:47.23 ID:VFapxPBu.net]
そうか、[]の時点で要素増えるからダメか

822 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 23:43:18.77 ID:EGogu2NJ.net]
C++の文法はクソだからな
コンパイラーが手を抜いてプログラマーが不利益を被る良い例だ

823 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 00:10:39.56 ID:1Ze1Ogug.net]
>>806 https://www.google.co.jp/search?q=std+map+at



824 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:05:09.41 ID:CpsQkQ9O.net]
C++の仕様がいい加減だからなのか、
regexのマルチライン対応なんかは、VCは対応でGCCは非対応だからな
行頭の^が文字列の頭になると行頭じゃえらい違いだよな

825 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:23:22.63 ID:EO5+cWSu.net]
STLに問題があるようだな

826 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:25:23.49 ID:eWd5i2Y2.net]
>>812
文法はあまり関係ないけど?
低脳が口挟んでも

827 名前:pかくだけだぞ []
[ここ壊れてます]

828 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 11:20:11.67 ID:k9h8FU3j.net]
むしろ文法があんなだから
コンパイラは手を抜けないとも

829 名前:デフォルトの名無しさん [2015/10/06(火) 11:54:27.84 ID:+syJpT4+.net]
文法じゃなくて意味が糞なんだよな

830 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 12:27:05.15 ID:Zn1/MkM8.net]
そうそう、mapで思い出したけど
テーブルって実行時に初期化したくないやん

ある程度の大きさのmapの初期化を出来るだけ実行時の生成コストを少なくするように記述するにはどうしたらいいのかな?

環境によって違うけど
構造体の配列とかだと、初期化子リスト付けとくと、.dataセクションに即値が書かれてて
初期化時にはそれをコピーしてポインタをセットして準備完了

それと同じようなことをmapでやって見たい

c++11だとmapでも初期化子リスト使えるからそれでいけるのかな?
何年か前にg++でコンパイルして.dataセクション見てみたけど当時はmapの即値になってるように見えなかった

c++03とかだとどんな手があるんだろう??

831 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 12:35:26.69 ID:k9h8FU3j.net]
そうそう、mapで思い出したけど
テーブルって実行時にメモリ使いたくないやん

ある程度の大きさのmapは実行時にメモリのコストが大きいけどどうしたらいいのかな?

https://research.preferred.jp/2011/07/stllike-containers/

832 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 16:00:02.92 ID:wWQ1shVW.net]
初期化はだって実行時じゃないか?

833 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 20:34:00.60 ID:hYLbQ3+q.net]
どうしてもdataセクションにそのままアクセスしたいのであればキーと要素を持つクラスをキーでソート済みの配列で書いてstd::mapのconstメンバ関数と同じものを持つラッパークラス書くとかかな



834 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:14:23.94 ID:mXRqVUnf.net]
>>821
要するに map を実行時に構築するんじゃなくてコンパイル時に構築しといて実行時はメモリーコピーだけにならんもんか?
っつーことでしょ
たまに俺もそう思うことがある

835 名前:デフォルトの名無しさん [2015/10/06(火) 21:27:26.34 ID:jUDOLtzl.net]
確かにねー
そんな気することよくあるよな
constexprなコンストラクタでどこまでできるのかと

836 名前:デフォルトの名無しさん [2015/10/06(火) 21:34:08.29 ID:MCB0h3nq.net]
シリアライズかデータベースつかえ

837 名前:デフォルトの名無しさん [2015/10/06(火) 21:37:47.97 ID:MCB0h3nq.net]
>>820の意図するところと、>>823は別で>>820は省メモリにしたいって話だろ。

838 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:54:53.32 ID:2Pt1OMoQ.net]
配列に入れて線形探索
要素数が小さいうちは線形探索はもともと他より致命的に悪いわけではないし
今日日のCPUならキャッシュと分岐予測とOOOの華麗な連携プレーを目の当たりにできる

839 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 22:43:09.92 ID:8+tr+OYB.net]
これは遅くなりそうだからってがんばってマップ作ったら
線形探索ゴリ押しの方が速かったことならある

840 名前:デフォルトの名無しさん [2015/10/06(火) 22:47:58.27 ID:Cu8Zkmdv.net]
二分検索じゃだめなの

841 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:07:19.25 ID:hYLbQ3+q.net]
std::sortもstd::lower_bound もあるんだからバイナリサーチぐらいしようぜと

842 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 05:07:06.28 ID:vlTfjNXN.net]
>>826
>>823>>819

> ある程度の大きさのmapの初期化を出来るだけ実行時の生成コストを少なくするように記述するにはどうしたらいいのかな?

の話だよ
データベースとか頓珍漢過ぎ

843 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 07:13:23.42 ID:JsRvQDZJ.net]
コードの工夫で初期化コストを改善するのではなく
データベースでの永続保存という別手法での改善方法もあり得ることを示すことが
それほどトンチンカンとも思えないが



844 名前:デフォルトの名無しさん [2015/10/07(水) 08:23:24.99 ID:PbTUGDDG.net]
mapはエントリーを追加できるんだからドンダケ待ってもそうはならないと思。

845 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 08:34:53.72 ID:q7nyuwNL.net]
>>832
なにを改善したいかも理解してないアホ w

846 名前:デフォルトの名無しさん [2015/10/07(水) 08:52:16.49 ID:d/PBWwg/.net]
static_mapみたいな名前になるんだろか。

847 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 09:44:01.58 ID:0iwSPjqO.net]
Rubyでは、Hashの要素数が増えていくと、再編成される

バケット数は、2の累乗付近の素数を使う。
つまり、倍々に増やしていく
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...

1つのバケットには、平均して5つの要素を入れる(衝突)。
11*5=55, 19*5=95, 37*5=185...

つまり要素数が、56, 96, 186...個になると、
バケット数を増やして、再編成する

普段、1万個の要素を追加するのに、8msかかるが、
再編成するタイミングでは、20msかかる。
要素数が増えていけば、もっとかかるだろう

848 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 11:02:09.32 ID:8pl0pVx/.net]
C++のスレでRubyとかアホなの?
環境も書かずに2msとかアホなの?
C++なら1万個追加で1msだ

849 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 11:19:07.99 ID:vH7WjwMJ.net]
昔、某オンラインゲームの支援ツール作って、プロセスメモリ上にあるVC++2008実装のstd::mapの
テーブルを直接アクセスするコードを書いたのを思い出した

850 名前:デフォルトの名無しさん [2015/10/07(水) 11:20:45.74 ID:Qd1lXfpw.net]
そういった成功体験は捨てたほうがいい

851 名前:836 mailto:sage [2015/10/07(水) 11:50:30.95 ID:0iwSPjqO.net]
「Rubyのしくみ」という本に書いてあるのだが、
RubyのHashは、Peter Moore が考案したもの。
C++でも、彼のロジックを使っているのなら、同じかなと思って

mapの要素数が増えていくと、
バケット数を増やして、再編成されるので、
その際、全要素が移動するから、どうしても遅くなる

だから、メモリ的には損だが、
最初から大きめのバケット数を確保しておけばよい

852 名前:デフォルトの名無しさん [2015/10/07(水) 13:03:07.75 ID:gQOBln3k.net]
ん、std::hashって算法まで規定されてたっけ?
17.6.3.4を見る限りそうではなさそうだが

853 名前:デフォルトの名無しさん [2015/10/07(水) 14:19:20.92 ID:4iZc7XH3.net]
struct hoge{};
const hoge h;
をコンパイルすると
error: uninitialized const 'h'
と出ます。何故ですか
constを外すとコンパイルできます。GCC4.4です。



854 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 15:58:16.91 ID:2UUkd3/F.net]
定数は値が書き換えられないわけで
最初の時点で値を代入しなかった場合、「お前なんのために定数宣言したの?」って突っ込まれてる

855 名前:デフォルトの名無しさん [2015/10/07(水) 16:15:42.33 ID:4iZc7XH3.net]
vcではエラーにならないのは何故ですか
どっちが正しいですか

856 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:35:55.12 ID:vH7WjwMJ.net]
どっちかというとGCCのほうが余計なお節介?

857 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:40:45.70 ID:jyxNZJK8.net]
そうそう、馬鹿が作ったプログラムがちゃんと動かなくてもコンパイラの責任じゃないしね…

858 名前:デフォルトの名無しさん [2015/10/07(水) 16:42:23.02 ID:Qd1lXfpw.net]
ideone.com/Sr2PO1
エラーにならないけれど

859 名前:デフォルトの名無しさん [2015/10/07(水) 17:24:17.24 ID:gQOBln3k.net]
842は警告ではなくエラーなのはなぜかと聞きたいんだろ

860 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 17:42:19.19 ID:tt9P1ak1.net]
どっちが正しいも糞もないのでは

861 名前:デフォルトの名無しさん [2015/10/07(水) 19:09:00.13 ID:qAlHmwsj.net]
gccはいつも糞だから、これもgccが悪いんじゃねーの。

862 名前:デフォルトの名無しさん [2015/10/07(水) 19:11:12.75 ID:Qd1lXfpw.net]
gccではエラーにならないと言っているだろ

863 名前:デフォルトの名無しさん [2015/10/07(水) 20:31:15.75 ID:lwnukUe8.net]
なるから言ってるんですアホなんですか



864 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:27:09.31 ID:BAz1ThzD.net]
>>849
少なくともお前が糞なことは確か

865 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:40:43.83 ID:3DMfLJBU.net]
標準C++ではエラーになるのが正しい
VC++でエラーにならないなら標準非準拠か独自拡張

クラス型のconstオブジェクトをデフォルト初期化(で定義)するときは
そのクラスにはユーザ定義のデフォルトコンストラクタがなければならない

>>847がエラーにならないのは静的記憶期間のためゼロ初期化されて上記には該当しないから

866 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:01:49.00 ID:JsRvQDZJ.net]
>>854
>ゼロ初期化されて上記には該当しないから

フーン、それはISO/IEC 14882:2014のどこに書いてあるのですか?

867 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:06:57.63 ID:pNycS8F+.net]
パーサー書いたことある人いますか
一応作ったけどすごい難しいというか面倒というか
どういったアルゴリズムがいいのか馬鹿だからわからん

868 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:22:04.98 ID:ftNCaisU.net]
BoostにC++パーサーがあったような

869 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:23:53.25 ID:Kru1mWVv.net]
boost::spiritでおk

870 名前:デフォルトの名無しさん [2015/10/07(水) 23:24:01.37 ID:gQOBln3k.net]
(1)文字単位の検査 →エラー文字を弾く
(2)文字を結合してトークンを作る →エラートークンを弾く、コメントなど延期トークンをまとめる
(3)トークンを結合して再帰的ツリーを作る →構造の欠損を弾く
(0)メタな表記がある場合、そのメタ表記についてまた(1)から逆再帰的に繰り返す
できたツリーを意味解析に渡す

871 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:25:58.96 ID:0v/h/3vS.net]
>>856
オープンソースのパーサー腐るほどあるだろそれいっぱい読め

872 名前:デフォルトの名無しさん [2015/10/08(木) 00:13:00.11 ID:p7bZHcv9.net]
>>856
あります。
・(E)BNF
・HTTP
・Sentence segmentation
等書きました。

873 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 04:32:10.77 ID:FlZYA0H2.net]
>>856
LL(5)位がおすすめ



874 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 06:37:28.57 ID:ETVAEvki.net]
>>862
なんでLL(5)んああんだよ?
5記号先読みするパーサなんて一般的じゃないだろJK、

ていうかLL(1)(再帰下降構文解析の一番簡単なやつ)とかは
素人でも勝手に再発見するがそこで理解が止まってしまうと
数式のパーサで死ぬので(そのまま作ると2項演算子が全部右結合になってしまう
、やpっぱまずわ正規言語のパーサあたりからから作ってみて感触をつかんだるのちに
ボトムアップパーサの理解に進むべし、

875 名前:デフォルトの名無しさん [2015/10/08(木) 11:19:30.61 ID:GTAWjzct.net]
LL(1)はLL(1)文法になるように人工的に作り出した言語にしかほとんどつかえないからな
LL(5)位なら適当にある言語ならほとんど解析できるだろ

876 名前:デフォルトの名無しさん [2015/10/08(木) 12:23:57.11 ID:GTAWjzct.net]
左結合にしたければカッコつければいいだけだし
右結合する演算子なんて普通無いしな

877 名前:デフォルトの名無しさん [2015/10/08(木) 12:25:42.38 ID:PEkcocuS.net]
バックトラックはセキュリティの問題をはらみやすいので避けたほうが良い。

878 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 12:28:11.85 ID:GTAWjzct.net]
また例の再帰関数大嫌い君か

879 名前:デフォルトの名無しさん [2015/10/08(木) 12:33:40.58 ID:PEkcocuS.net]
好き嫌いの問題ではないはず。

安全か安全でないか。

880 名前:デフォルトの名無しさん [2015/10/08(木) 12:39:28.24 ID:GTAWjzct.net]
妊娠と同じですとでも言いたいのか?

881 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 13:46:07.06 ID:XT2XQMd7.net]
template関数をvirtualにはできない制限って今後のC++でも続くんでしょうか?
そもそもこの制限の理由は仮想関数テーブルを作るコストが大変だから、ってやつですよね?
コンパイル時間かかってもいいからやってくれ、ってニーズはないんでしょうか?

882 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:03:10.79 ID:jZEKLa+0.net]
具体的にどういう風に仮想関数テーブルを構築したら
template関数のvirtual化が可能なんですか?
分割コンパイルは可能なのですか?
コンパイル単位を守れるのですか?

883 名前:デフォルトの名無しさん [2015/10/08(木) 14:29:05.60 ID:1TGlpU6G.net]
>>871
やってみろよ、まず
struct A
{
template <typename T>
virtual void func(T) { }
};



884 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:40:04.09 ID:jZEKLa+0.net]
そんなこと出来っこないだろう、という返しだったのですが・・・

885 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:48:15.03 ID:jZEKLa+0.net]
プログラムに必要なソースコードをグローバルな視点ですべて解析してから
コード生成を開始するならテンプレートな仮想関数どころか
もっととんでもない事が可能かも知れんが
C++はcpp単位で分割コンパイルするのがルールだから無理っていう
baseクラスをコンパイルしてvtable作る時には
それにどんな派生クラスがあるか分らないし、分らなくてもコンパイルできるように
なってるのがC++のルールだからね

886 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 15:32:00.85 ID:YWpiDxnr.net]
テンプレートのインスタンスの概念すら知らないってことでしょ?
こんなの初心者レベルの内容じゃん
やってみろよじゃねーよ

887 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 17:33:27.84 ID:G0kXf/E8.net]
むしろ出来ないと主張する根拠を聞きたいものだ

888 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:00:23.72 ID:TDkjtQvD.net]
今の仕組みじゃ出来ないだろ。
普通のvtableより更にものすごく遅い
仕組みでやるなら出来ないことはないだろうが。

889 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:07:23.28 ID:G0kXf/E8.net]
ISO/IEC 14882:2014は別にvtableの実装を要求してないのだが
「今の仕組み」が普遍的なものであるかのように語られても

890 名前:デフォルトの名無しさん [2015/10/08(木) 18:11:00.56 ID:1TGlpU6G.net]
vtable以外の実装の具体例もしくは具体案なしに空想論を語られてもねえ
今んとこ「できるわけない」という立場を取っているが
説得力のある反論〜反証は金払ってでも拝聴したい

891 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:12:29.15 ID:jZEKLa+0.net]
普通に考えて無理だろう
実行時に動的にロードする事も有るし
うまくいくとは思えないね

892 名前:デフォルトの名無しさん [2015/10/08(木) 18:12:44.05 ID:GTAWjzct.net]
出来るからやるんじゃない
出来ないからやるんだよ

893 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:13:11.65 ID:TDkjtQvD.net]
vtableより早い仕組みがあれば
vtableに置き換わるだろうが
vtableでできないなら何らかの
遅い仕組みで実装しなきゃいけない。
その機能を使わない場合に遅くならないようにするためおそらくはvtableとのハイブリッドになる。

少なくとも現状の仕様でできないのだから、できるというならリーズナブルな実装の一つでも提案しろと。



894 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:20:47.25 ID:G0kXf/E8.net]
なんだ
「俺の使ってる糞コンパイラーではできない」
ってとか。そりゃしょーがない

895 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:22:57.97 ID:jZEKLa+0.net]
struct base { template< typename T > virtual void method( T ){} };
struct derived : public base { template< typename T > void method( T ){} };
このとき、
base::method< int >();
base::method< float >();
derived::method< int >();
derived::method< float >();
の関数の実態があったとき、仮想関数に詰め込む順番をあわせる必要が有る
これはリンカで行うしかないが、動的にロードする場合はどうなるんだという問題が出る
また、derived::method<double>() を追加したとして
baseの方に対応する関数がなかった場合はどうするんだという問題が出る
リンカエラーにするのかvtableを拡張するのかどうするのか
動的にロードする時にどうするのか

896 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:33:41.15 ID:TDkjtQvD.net]
凄いな。
それができるc++コンパイラを持っているらしいぞ。

897 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:55:11.54 ID:G0kXf/E8.net]
「分割コンパイルするから無理」「テンプレートのインスタンスの考えからして無理」
と言うから理由を聞いてみたのだが
「ボクのvtable実装では無理」とか、話をすり替えるなんて

非仮想関数と非テンプレ仮想関数は追加オーバー無しでテンプレ仮想関数を実現する方法さえ思いつかないらしい

898 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:11:16.86 ID:TDkjtQvD.net]
だから追加オーバーヘッドの無い
実装方法や実装したコンパイラを
具体的に出せと。

899 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:14:33.28 ID:jZEKLa+0.net]
どちらにしても、C++は一つのcppのコンパイル中は、それしか見えない仕様
コンパイル単位とかいう物がある
だからテンプレート仮想関数のvtalbeの構築はリンカに頑張ってもらうしかないが
動的にリンクする場合はどうするんだという問題が出てくる

900 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:20:02.77 ID:e3P/In2F.net]
>>841
されない

901 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:28:15.57 ID:idvE5Tw4.net]
>>888
動的じゃなくてもリンカーがインスタンス化されてないtemplate仮装関数を発見しちゃったらtemplateのコードをインスタンス化してコンパイルやり直さなきゃいけないよね
動的リンクするならコンパイラを実行ファイルに組み込まなきゃいけない
JITありのインタプリタみたいなものになる

そんなものを規格に入れるわけがない

902 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:03:43.82 ID:YWpiDxnr.net]
>>886
黙ってろゴミ

903 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:13:36.43 ID:ETVAEvki.net]
vtable方式は構造体に(メンバ)関数へのポインタを埋め込む方法より
1段ポインタ参照が増えるから不利だが
vtable方式をやめるとdynamic_castの実現で頭を抱えることになると思う



904 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:17:35.06 ID:tERbEPZQ.net]
相変わらず雲をつかむような話で喧嘩できるエスパーなスレですね

905 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:19:58.94 ID:fbjyyooL.net]
え?お前出来ないの?

906 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:43:07.22 ID:YWpiDxnr.net]
そもそも規格で駄目と明言されてる事なのに
自分じゃできないからって、実装方法すら他人を煽るわせびるわ
頭悪いにも程があるだろコイツ

907 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:05:21.80 ID:idvE5Tw4.net]
>>895
現時点での規格で駄目だとしてもそれが将来的に実現可能かどうか、妥当かどうかを考えてみるのは興味深い事だと思うよ
ただ、なぜか彼は偉そうで喧嘩腰なのがいただけないけど

908 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:07:33.55 ID:p4LiiGTw.net]
婆ちゃんのために天ぷら揚げないで

909 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:26:31.48 ID:XT2XQMd7.net]
>>874
>プログラムに必要なソースコードをグローバルな視点ですべて解析してから
>コード生成を開始するならテンプレートな仮想関数どころか
>もっととんでもない事が可能かも知れんが

ですよね
C#の生産性の高さを考えると、C++ももう少しユーザに優しくあってほしいと思うわけです
当方数値科学計算が仕事ですがC++歴は浅いので、戯れ言として聞き流してください

910 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:40:21.99 ID:ETVAEvki.net]
>>874
>プログラムに必要なソースコードをグローバルな視点ですべて解析してから
>コード生成を開始するならテンプレートな仮想関数どころか
>もっととんでもない事が可能かも知れんが

あーそれかなり無理
任意のプログラムに対して有限停止問題が解けるというのと多分同義

911 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:01:41.40 ID:3NeJM4zm.net]
かなり無理は不可能なのかそうでないのか

912 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:08:18.42 ID:GfpzmItO.net]
必要なソースコードをグローバルな視点ですべて解析してからコード生成
と同等のことは他言語でやってること

913 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:09:59.28 ID:m6l+7vgz.net]
言葉の意味まで変更してしまえば当然なんでも可能です



914 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:21:28.96 ID:IUqyiVrM.net]
>>901
へえ、例えば?
そういう言語があるとしたらそれソースコード以外のライブラリが使えないんだけどそういう言語はインタプリタで実行するものしか知らんなあ
そういう言語は大抵そこを実行するときに他のソースを読み込むし

915 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:23:34.66 ID:m6l+7vgz.net]
C#ではジェネリックなメソッドをオーバーライド出切るんだけど、
C#のジェネリックとC++のテンプレートは仕組みが違うからなぁ

916 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:26:43.46 ID:m6l+7vgz.net]
C#はそこそこ頑張っているんじゃないのかねぇ
ヘッダファイルは無いし、複数のファイル間で相互参照があっても
うまいことコンパイルしてくれるって聞いたこと有るぞ

917 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 06:57:51.96 ID:VT/0EZUp.net]
>>899
> 任意のプログラムに対して有限停止問題が解けるというのと多分同義

全然違うと思う

918 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 09:59:13.28 ID:4cEJzv4C.net]
>>904
抽象でしかできないぞ

919 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 13:36:37.06 ID:IUqyiVrM.net]
>>904
ググっても

エラー出るよ助けてよー
出来ないから別の方法使え

しか見つからなかったけど本当に出来るの?

920 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:02:05.60 ID:m6l+7vgz.net]
「ジェネリック メソッド オーバーライド C#」
でググって一番上にあるのに何を検索したんだかww
あまりにも検索能力が低すぎて日常にも支障が有るレベルでは

921 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:22:33.28 ID:IUqyiVrM.net]
>>909
ttp://qiita.com/monry/items/5a512cfedba665b09135
これのことじゃないよね?

922 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:36:34.10 ID:IUqyiVrM.net]
ああ、ここのコメントに書いてあった
オーバーライドしてねえじゃんで読むの止めてしまったわ

923 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:04:30.76 ID:9aZeSACJ.net]
いつも常に自分の足を撃たないように地雷原を歩いてる気がする
新機能がオアシスに見えて逃げ水どころか底なし沼だったり、何だこの、これ



924 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:53:06.45 ID:UhDsPJDp.net]
もし生まれ変わって再びプログラミングの世界に入るとして、C++選ぶのかな?

925 名前:デフォルトの名無しさん [2015/10/10(土) 00:59:46.33 ID:kmqm1hww.net]
生まれ変われるとしたら(C+=2)-1かな
例外のクソすぎるところをやり直させてくれるベルダンディが降臨したら迷わず帰依する

926 名前:デフォルトの名無しさん [2015/10/10(土) 01:03:34.69 ID:kmqm1hww.net]
頼みもしないスタック巻戻しにくっついてくるRTTIだとか
バカ高いコストのくせに RESUME NEXT がないとか

927 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 01:24:55.29 ID:E0664ZmB.net]
>>914-915
コストって何がどれだけあること言ってんの?実行時間?メモリ使用量?コードサイズ?
最近のコンパイラなら問題になることなんてほとんど無いと思ってるんだけど。

928 名前:デフォルトの名無しさん [2015/10/10(土) 01:33:54.53 ID:kmqm1hww.net]
ほとんど無いと思ってて

929 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 01:46:30.25 ID:E0664ZmB.net]
>>917
答えられないってことは、どうせ迷信や10年前のコンパイラでの話を未だに信じてるだけなんでしょ?

930 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 06:51:03.57 ID:fP3IUTM/.net]
resume nextってなんぞやとググったらVBかよ

931 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:05:16.97 ID:CCNhJ4kM.net]
デフォルトのコピーコンストラクタやコピー代入演算子って
コピー時に各

932 名前:メンバに対して(ビットコピーではなく)
コピーコンストラクタやコピー代入演算子を呼び出すことは保証されてる?
ポインタを持たせても、生ポインタではなくshared_ptrを使う限りは
デフォルトのコピーコンストラクタやコピー代入演算子に任せても安全?
[]
[ここ壊れてます]

933 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:25:34.33 ID:QRzKPIbr.net]
>コピー時に各メンバに対して(ビットコピーではなく)
>コピーコンストラクタやコピー代入演算子を呼び出すことは保証されてる?
そうか考えたこともなかった
>>920頭いいな



934 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:29:34.25 ID:fP3IUTM/.net]
>>920
安全

935 名前:デフォルトの名無しさん [2015/10/10(土) 08:40:12.34 ID:kmqm1hww.net]
>>918
なんの今現在の話だよ
ちょっとやってみりゃすぐわかる馬鹿なこと聞くから相手してやんねーの

936 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:50:45.32 ID:fP3IUTM/.net]
>>923
いいからVBつかっとけよ

937 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:35:21.78 ID:C2+tlbor.net]
ちょっと調べればすぐ分かるから教えてやらない(震え声)

いい加減に適当に喧嘩をふっかけてそれを買うとすっとぼけるのはやめようよ
まったく意味のないトラブルばかり招くから…

938 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 16:00:00.63 ID:WQItE+Nd.net]
VBと比較してる時点でどうせネットの風評信じて自分の目で
実際の正常系に影響与えてるかどうか検証してないだけだろう
さもなくばただの条件分岐に例外多用してるアレな人か

939 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 16:53:49.17 ID:E0664ZmB.net]
>>923
ちょっとやってみりゃ↓こんな結果(-2.6%~+4.0%)になるだろうってのがわかってるんだよ。
preshing.com/20110807/the-cost-of-enabling-exception-handling/
この結果でも4年前のだしな。

940 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 17:12:47.93 ID:+pTteXD6.net]
resume nextが欲しいと思う時点でやばい

941 名前:デフォルトの名無しさん [2015/10/10(土) 18:29:23.01 ID:DZQ9wvWi.net]
>>925
調べればじゃねえよ、やってみればだ
とぼけてるのはおまえだろ
怠け者め

なんで4年前の記事なんか引っ張んだよ
おまえがやれ、つーかできねえんならこの板ではROMってろ

942 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 19:31:04.17 ID:WQItE+Nd.net]
>>929
やんのはオメーだろ

943 名前:デフォルトの名無しさん [2015/10/10(土) 20:43:07.08 ID:DZQ9wvWi.net]
なすり合いってことにしたいんなら
そうすれば?

おまえが何も得ないだけだし



944 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:52:50.43 ID:wZWPBuKi.net]
擦り付け合いとかじゃなく、
お前がやれ
その結果は書き込まなくて良い

945 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:53:39.88 ID:WQItE+Nd.net]
馬鹿じゃねーの?押し付けてんのはお前だろ
せめて自分で実際にやってから言えよクズ

946 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:54:33.77 ID:RukYXTRG.net]
まあまあ

947 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:14:34.91 ID:LXdnro1p.net]
えらそうに言う奴は先ずテメーのソースコードをここに貼ってみろや!

948 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:31:15.08 ID:PxJo6CPN.net]
おらおらおらおらー

949 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:43:47.39 ID:0dTjLyRb.net]
やめて!
俺のために戦わないで!

950 名前:デフォルトの名無しさん [2015/10/10(土) 23:11:33.18 ID:6QuLtZGt.net]
以上のような状態をセックスと定義します。

男同士でセックスするのはホモです。
従って>>929以降はホモ野郎という事になります。

気持ち悪い。

951 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:20:00.07 ID:9fj3wNmr.net]
>>938
その定義だとお前もって事になるけど大丈夫?

952 名前:934 mailto:sage [2015/10/10(土) 23:38:35.56 ID:pverhzbk.net]
まず「以上のような状態」を定義してくれ
なぜ俺はホモ疑いに巻き込まれたんだ

953 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:40:41.29 ID:0dTjLyRb.net]
通常の定義と全く異なる俺定義を展開されても
しかも言葉のすり替えでホモに結論づけするとは悪質だな



954 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 01:48:42.13 ID:XDL1o532.net]
homoとhogeって似てるな

955 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 02:35:14.49 ID:cdE875Rm.net]
C++書く人達って無駄に攻撃的な人多いね

956 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 03:49:40.51 ID:Nau1HDji.net]
C++技術者にも色々いるだけだ

957 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:00:43.62 ID:PVe4pURO.net]
ID:kmqm1hww
とかVBだしな
C++に限らない

958 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:51:42.92 ID:gSJDxW7y.net]
おっと江○添の悪口はそこまでだ

959 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 15:18:32.98 ID:OMjxUQhq.net]
ごちゃごちゃ言ってないでしゃぶれよ

960 名前:デフォルトの名無しさん [2015/10/11(日) 21:07:53.47 ID:WBYIj+O0.net]
VBだっておバンバン
それWindows世代だろw

961 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 06:25:32.18 ID:b39cwc+L.net]
>>942
ソフトウェア商品のグレードなんかの
Home Edition てのも Homo Edition に似てるね。

962 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 12:18:52.11 ID:eT/PtTP3.net]
なんだそのクリックすると喘ぎ声が出そうな製品

963 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:00:35.40 ID:ouSN4Vlw.net]
std::coutというか,basic_ostreamのoperator>>についての質問?なんですが,
javaの課題をC++でやってみようとおもって,まだ途中なんですが以下のコードを書きました.
codepad.org/DdMr0gro

これをVS2015環境下でデバッグ実行すると,コマンドライン上に
 [test]
と書かれるはずが
 ] est
つまり,basic_ostreamのイテレータ?が最初に戻ってしまう現象が現れました.
(コマンドライン引数には data/test.txt を指定して,dataフォルダに
「test」と書かれたtest.txtを配置しています.)
おそらくifstreamかgetline()が原因なんだと思いますが,cinとcoutの同期が
原因かなと思ってtieしても解決しませんでした.
なにが原因でこうなってしまうんでしょうか?



964 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:16:39.48 ID:KCAkXS7a.net]
ソース読んでないが、テキストファイル側にbom付いてるだけじゃね

965 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:20:47.78 ID:aH9tdNzV.net]
ios::binaryで読んでるから\r\nが\nに変換されずに読みこまれてる
coutに\rを入れるとその行の先頭にカーソルが移動する

966 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:43:29.57 ID:ouSN4Vlw.net]
なるほど,改行コードのことだとは気付きませんでした.
となると,自分で取り除くか,binaryではなく,ios::inにするとよさそうですね.
ありがとうございました.

967 名前:デフォルトの名無しさん [2015/10/15(木) 20:43:14.49 ID:Z5UOv0gP.net]
ストリームはクソだわ

968 名前:デフォルトの名無しさん [2015/10/15(木) 20:59:33.37 ID:kRNzdeWM.net]
そこでHaskellですよ。

969 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:31:42.27 ID:Pl/e/d+4.net]
Javaの課題を写したんなら当然だがc++らしくないな
いっそ元の問題を晒してみたら?
だれかかっこいいc++を書きてくれるかもよ

970 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:21:39.39 ID:eGvButUC.net]
>>956
IOは副作用がある (キリッ

971 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:39:21.45 ID:4rmzgbky.net]
>>958
そこでモナドですよ(キリッ

972 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:43:57.69 ID:KCAkXS7a.net]
っ ::fscanf

973 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:21:52.64 ID:yFhNulgB.net]
std::fscanfでなく::fscanfを薦める奴に
ロクな奴はいない



974 名前:デフォルトの名無しさん [2015/10/16(金) 01:22:34.18 ID:MCA6CYcJ.net]
extern "C" int fscanf(FILE*, const char* ...);
namespace std {
using ::fscanf;
}

975 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 08:30:18.81 ID:15bBcd+N.net]
可変長引数って
func(const char *s, ...)
func(const char *s ...)
どっちが正しいの?

976 名前:デフォルトの名無しさん [2015/10/17(土) 11:43:59.18 ID:U1ERA7pu.net]
#include <iostream>
using namespace std;
template<typename ...T>
auto f(T...x)

977 名前:{
for(int i:x...)
cout<<i<<endl;
};
int main()
{
f(1,2,3);
return 0;
}

昔こういうことが出来たような気がするんですが
どうやるのか忘れました
教えてください
[]
[ここ壊れてます]

978 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 12:19:44.07 ID:e8xa7PiS.net]
>>963
どちらも正しい

979 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 12:28:14.71 ID:e8xa7PiS.net]
>>964
for (int i: {x...})
initializer_listを構築してそれをイテレートする

980 名前:デフォルトの名無しさん [2015/10/17(土) 12:50:24.84 ID:U1ERA7pu.net]
ありがとうございます

981 名前:デフォルトの名無しさん [2015/10/20(火) 18:25:41.85 ID:3vGCFixJ.net]
ファイルから指定文字列を検索したい。以下のコードだとsearchが実行時にエラーExpression: istreambuf_iterator is not dereferencable
ifstream f("Text.txt");
string s("is");

istreambuf_iterator<char> eof;
eof == search(
istreambuf_iterator<char>(f.rdbuf()),
//f.rdbuf(),
eof,
s.begin(),
s.end())
);

VS2013です
どうすればいいですか

982 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 20:46:00.53 ID:8yDPqMwa.net]
cpprefjp.github.io/reference/iterator/istreambuf_iterator.html
-------引用開始-------
istreambuf_iteratorは、operator++()でイテレータを進めることにより、ストリームバッファのsbumpc()メンバ関数でストリームからデータを読み込む入力イテレータである。
ストリームからのsgetc()メンバ関数による読み取りがTraits::eof()を返した場合に、イテレータはendイテレータと等しくなる。
-------引用終わり-------

って事で、1文字ずつしか読み込まないのでは?

983 名前:デフォルトの名無しさん [2015/10/20(火) 21:44:27.08 ID:RWFAio1T.net]
eofに代入してないね
等値比較して結果を捨ててる



984 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 21:51:20.77 ID:wM4Y4a1V.net]
>>968
案1
ファイルの内容を全部stringに読み込んでfindする

案2
ファイルの内容を全部stringに読み込んでregexする

案3
外部コマンドとしてgrepとかawkとかsedをインストールしておいてc++から起動する


お好きな方法でどうぞ

985 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 22:01:04.78 ID:82Xf4s6u.net]
std::searchはForward Iteratorを要求するから
Input Iteratorのistreambuf_iteratorを渡してもだめだわさ

std::findならInput Iteratorでいいから一文字目だけをfindで見つけて
二文字目以降は別にチェックするとか

986 名前:968 [2015/10/20(火) 23:37:01.59 ID:3vGCFixJ.net]
ありがとう
試行錯誤してみるよ

987 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 23:46:27.98 ID:Kav8lZYy.net]
>>973
一番簡単なのはstd::stringクラスのfindで
一番応用が利くのはstd::regex系を使いこなすこと
だと思うな

988 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 00:48:57.67 ID:k2x/6pgE.net]
#include <iostream>
#include <fstream>
#include <iterator>
#include <cstdlib>

int main(int argc, char** argv) {

std::ifstream ifs("src/main.cpp");
std::istream_iterator<char> is(ifs);
std::istreambuf_iterator<char> ibf(i
fs);
std::istreambuf_iterator<char> ibf_e
of;

std::string istr(ibf,ibf_eof);
std::cout << istr.find("std");

return EXIT_SUCCESS;
}

989 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 01:47:07.42 ID:k2x/6pgE.net]
あ、すまん。std::istream_iterator<char> is(ifs); この行不要な
それとcoutの最後にはstd::endlつけてやってくれ

990 名前:デフォルトの名無しさん [2015/10/22(木) 13:25:09.22 ID:3HJoxiXv.net]
ベクトルのコピーで検索すると
ベクトル同士をコピー代入演算子でコピーするのが一番簡単なきがするのですが
違うやり方ばかり出てくるのはなぜですか?
これがまちがっているということですか?

991 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 13:34:38.59 ID:TivbSMZT.net]
まちがってないで

992 名前:デフォルトの名無しさん [2015/10/22(木) 13:47:47.59 ID:3HJoxiXv.net]
ありがとうございます

993 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 13:55:49.77 ID:CPFSlH5N.net]
違うやり方ってのはstd::vector::assignでbeginからendまでコピーとか?
それのメリットはvector以外の型からもコピーできることかね



994 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 15:52:01.07 ID:wxGQnodN.net]
>>977
単純なコピーの需要が少ないのでは?
単純コピーなら参照でも十分だし

コピーするのは何かを変更したいからワザワザコピーしてを作るわけで
変更するならコピーするタイミングでやるのが簡単だからとか??

あと、要素に参照とかポインタが含まれている場合
シャローコピーになっちゃうわけで参照先の管理が面倒くさくなっちゃう
ディープコピー作るなら一工夫必要だしね

995 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 16:46:09.18 ID:UnQTPRBv.net]
vectorの便乗質問ですが、reserveされてしまった余分な容量を削除する方法としてswap技法
std::vector<T>(x).swap(x)
がありますが、これは一時オブジェクトは全く作成されないのですか?
無名オブジェクトとはいえコンストラクタを呼んでいるわけですから、作成されてるような気がするのですが

996 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 17:44:22.04 ID:TivbSMZT.net]
されてるよ

997 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:39:56.40 ID:UnQTPRBv.net]
>>983
ありがとうございます。やはり作成されるのですね

vectorの容量をシュリンクする効率的な方法としてswap技法を紹介してる人を目にしますが、
コードはシンプルになるものの処理効率が上がるわけではないですよね

998 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:43:29.83 ID:TivbSMZT.net]
>>984
swap技法以外に、方法なくない?

999 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:49:05.63 ID:+o7cqPdB.net]
>>981 は質問の意図をまったく把握してないから無視していいと思う

>>984
複雑で効率的な方法示してみなよ。無いから。

1000 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:53:09.88 ID:UZ6K9ouN.net]
自作のベクタークラスを作る
サイズを縮小する場合はreallocを使う

1001 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:56:31.41 ID:IiO/at8e.net]
shrink_to_fit()

1002 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:59:03.48 ID:E1Ocrnf5.net]
最初から必要なサイズを確保すればいい。

1003 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 20:19:27.23 ID:gQOdFLsP.net]
春よこい



1004 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 21:33:39.08 ID:OXupIzBk.net]
次スレ

C++相談室 part120
peace.2ch.net/test/read.cgi/tech/1445516998/

1005 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 21:55:12.08 ID:kinLxVE3.net]
>>989
必要なサイズがわかってるなら単なる配列でよくね?

1006 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 22:15:13.77 ID:TKCRaEBU.net]
>>992
だったら君は配列だけ使ってれば?

1007 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 22:43:30.77 ID:kinLxVE3.net]
>>993
必要なサイズがわかってるなら、そうしてますが何か?

1008 名前:デフォルトの名無しさん [2015/10/22(木) 23:19:22.19 ID:OwqJeF9X.net]
必要なサイズがわかっててもvectorなドアホがいたw

1009 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:21:34.94 ID:plnHfgiP.net]
ポインタでも参照でもない変数って
仮想関数呼んでも呼ばれる関数が静的に決まるよね
このときもvtable経由で呼ばれる?(仮想関数の呼び出しオーバーヘッドがある?)
それともオーバーヘッド0で呼ばれる?
それとも未定義? 最適化次第?

1010 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:21:45.47 ID:4GjtJ8Lk.net]
「わかる」タイミングの問題だ

1011 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:22:03.08 ID:l1df8Qjo.net]
vectorって配列に比べてそんなにオーバーヘッドあるか?

1012 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:24:06.05 ID:Y4jcRaLX.net]
スタック容量を減らすならarray < vector

1013 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:33:55.59 ID:rvBOfPQs.net]
>>995
それをドアホというお前さんこそドアホである可能性



1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1015 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef