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


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

C++相談室 part129



1 名前:デフォルトの名無しさん(ワッチョイ dfcf-HvS5) mailto:sage [2017/01/09(月) 14:49:27.56 ID:p96WJVyd0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part128
echo.2ch.net/test/read.cgi/tech/1480172629/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
echo.2ch.net/test/read.cgi/tech/1478440682/

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

586 名前:デフォルトの名無しさん (ワッチョイ 1f7f-RJLO) mailto:sage [2017/03/06(月) 02:22:12.19 ID:sc7bChPJ0.net]
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0352r1.pdf
に "An implementation using Clang is being worked on." ってあるけど
どこにおいてあるのん?使いたくて震える

587 名前:デフォルトの名無しさん (ワッチョイ 1f7f-RJLO) mailto:sage [2017/03/06(月) 02:42:26.15 ID:sc7bChPJ0.net]
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0352r0.pdf
の方に書いてあったのね……スミマセソ

588 名前:デフォルトの名無しさん (スップ Sd3f-cA0b) [2017/03/06(月) 17:42:12.10 ID:/kAc8Ta7d.net]
std::mt19937 r(?);
std::uniform_int_distribution<> d(0, 100);
for(int i=0;i<100;++i){
d(r);
}
としないと正しく分布しないですか?

std::mt19937 r(?);
for(int i=0;i<100;++i){
std::uniform_int_distribution<> d(0, 100);
d(r);
}
これでは駄目ですか?

589 名前:デフォルトの名無しさん (ワッチョイ 5fd4-NqFr) mailto:sage [2017/03/06(月) 19:02:57.23 ID:qCc5lDaQ0.net]
どっちでもいいんじゃね

590 名前:デフォルトの名無しさん (ブーイモ MMaf-5QEK) mailto:sage [2017/03/06(月) 20:41:36.90 ID:l2uOsbFVM.net]
仕様読んでないけど擬似乱数列じゃ毎回同じ値がかえるんじゃないの?

591 名前:デフォルトの名無しさん (ブーイモ MMaf-5QEK) mailto:sage [2017/03/06(月) 20:43:46.97 ID:l2uOsbFVM.net]
おおっと、乱数生成器自体を渡してるのか。失礼しました

592 名前:デフォルトの名無しさん (ワッチョイ 0f24-T7IB) [2017/03/06(月) 21:06:44.06 ID:DwMqYVii0.net]
あふぉ

593 名前:デフォルトの名無しさん (ワッチョイ 5b30-EN75) mailto:sage [2017/03/06(月) 22:21:57.67 ID:CDqSwP280.net]
>>576
distribution自体も値を返すごとに変化する内部状態を持ち
同じパラメータで構築されたものは同じ内部状態から始まるという規格の意味を考えると
一般論としては下の方はダメだろう

594 名前:デフォルトの名無しさん (オッペケ Sref-n7ZK) mailto:sage [2017/03/06(月) 22:35:23.34 ID:AKQMS70er.net]
>同じパラメータで構築されたものは同じ内部状態から始まる

distributionがそんな仕様なら
むしろ後者の方が望ましくね?



595 名前:デフォルトの名無しさん (ワッチョイ 8b7b-ERAc) [2017/03/06(月) 22:46:29.85 ID:k6KUwGnB0.net]
コンストラクタで渡した範囲を使わず引数に渡した範囲を使うオーバーロードもあるし、distributionに使わなかったランダムビット値とかの値を残してたら引数で毎回random_engine渡す意義が薄れてきちゃう気がするよね

596 名前:デフォルトの名無しさん (ワッチョイ cb3c-m4jB) [2017/03/07(火) 15:47:09.58 ID:3Q65RUMW0.net]
typedef int* intPtr;
const intPtr hoge;
としたとき
const int* hogeではなくint* const hogeになるのがピンと来ません

597 名前:デフォルトの名無しさん (ワントンキン MM3f-QRNW) mailto:sage [2017/03/07(火) 16:11:26.13 ID:q3Kp0vdwM.net]
>>584
int*
int const*
は別の型だから

int*
int* const
は同じ型だけどconst性の違いがある

598 名前:デフォルトの名無しさん (ワッチョイ 0f24-T7IB) [2017/03/07(火) 18:02:33.74 ID:O/JMqbZP0.net]
>>584
そのconstはintPtrを修飾するだけで、
intPtrの内容は変更できないからだ

intPtrは「非constのintへのポインタ」となっていて
当たり前だがhogeは非constしか指せないポインタになる

おまえさんが付けたconstは*hogeではなくhoge自身を修飾するということだ

599 名前:デフォルトの名無しさん (ワッチョイ cb3c-m4jB) [2017/03/07(火) 19:43:03.39 ID:3Q65RUMW0.net]
>>585-586
マクロみたいにただキーワードを置き換えるんじゃなくて
あくまでも型の定義ってことか
なんとなくわかったようなわからないようなって感じだが
参考になったありがとう

600 名前:デフォルトの名無しさん (ワッチョイ 6bf2-Guy/) [2017/03/07(火) 20:00:54.12 ID:JY4xO0gD0.net]
std::allocatorなんかでもconst_pointerの定義があるし、別途typedefしてくださいって感じなんだろうね

601 名前:デフォルトの名無しさん (アウアウカー Sa6f-tCEH) mailto:sage [2017/03/07(火) 21:59:10.88 ID:GF7WqcJ3a.net]
>>587
構文上の結合の優先順位を理解すれば、複雑な型宣言の意味も理解できるようになるよ。

602 名前:デフォルトの名無しさん (オッペケ Sref-n7ZK) mailto:sage [2017/03/08(水) 00:23:57.60 ID:bj8U/UPWr.net]
typedefがただのキーワード置換でないことに気づいた>>587に対して
>>589は未だにただのキーワード置換と考えているように思えてならない

603 名前:デフォルトの名無しさん (ワッチョイ 0f24-T7IB) [2017/03/08(水) 09:15:55.94 ID:DNe+L ]
[ここ壊れてます]

604 名前:f9O0.net mailto: 確かにw []
[ここ壊れてます]



605 名前:デフォルトの名無しさん (ブーイモ MMaf-x83U) mailto:sage [2017/03/08(水) 09:58:21.79 ID:pkIkDwj+M.net]
あれ、const int*とconst intPtrって同じにならなかったっけ?

606 名前:デフォルトの名無しさん (ワッチョイ 0f24-T7IB) [2017/03/08(水) 10:24:26.87 ID:DNe+Lf9O0.net]
おまえもしかして intPtr a, b; が int* a, b; になるとでも思ってる?

607 名前:デフォルトの名無しさん (ワッチョイ eb9b-x83U) mailto:sage [2017/03/08(水) 10:35:12.10 ID:qFksyWqq0.net]
それとはまた別の話じゃ?

608 名前:デフォルトの名無しさん (ワッチョイ 1fcc-+LoG) mailto:sage [2017/03/08(水) 10:45:04.43 ID:EeDAfYl90.net]
>>592
ポインタに対してのconstだからint const*

609 名前:デフォルトの名無しさん (ブーイモ MMaf-x83U) mailto:sage [2017/03/08(水) 11:04:02.79 ID:pkIkDwj+M.net]
おっと勘違いして覚えてた
これは恥ずかしい、間違えて使ってたかも

でも間違えてたらコンパイルエラーが出そうなもんだけど
なんで今まで気がつかなかったんだろう…

610 名前:デフォルトの名無しさん (ワッチョイ eb7b-2BvX) mailto:sage [2017/03/08(水) 11:14:36.06 ID:VyuA3yza0.net]
なわけで
int* a, b; じゃなくて int *a,b; だよなぁ
とここ30年w

611 名前:デフォルトの名無しさん (ササクッテロロ Spef-prdN) mailto:sage [2017/03/08(水) 13:43:48.82 ID:SntjmOAop.net]
constは後ろに付けるのが本来なんだよ。
自信が無いなら先頭につけるのをやめれば間違わない。

>>595
int *const
じゃねーの?

612 名前:デフォルトの名無しさん (ワッチョイ 0f24-T7IB) [2017/03/08(水) 14:57:04.07 ID:DNe+Lf9O0.net]
あのなあ。。。
ずっこけた状態からもっとずっこけるのは苦痛を伴うんだぞ

613 名前:デフォルトの名無しさん (ブーイモ MMaf-R7fB) mailto:sage [2017/03/08(水) 17:54:01.46 ID:xABa9dNGM.net]
int const * constでおk

614 名前:デフォルトの名無しさん (ワッチョイ eb7b-2BvX) mailto:sage [2017/03/08(水) 18:00:06.17 ID:VyuA3yza0.net]
* の前につけるか後につけるかですな



615 名前: ◆QZaw55cn4c (ワッチョイ ab85-GPt5) mailto:sage [2017/03/08(水) 18:08:42.38 ID:/EX97NIO0.net]
int * const p
int const *p
int const * const p
のどれかは使うが
const int *p
はやらない、これっていったい上の三つのうちのどれになるの?なんでそうなるの?

616 名前:デフォルトの名無しさん (ドコグロ MM2f-gAk7) mailto:sage [2017/03/08(水) 18:22:24.19 ID:dlE+7VUyM.net]
StackOverflowにあった。
stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-const

617 名前:デフォルトの名無しさん (ブーイモ MMaf-5QEK) mailto:sage [2017/03/08(水) 18:43:43.95 ID:zA3nyedyM.net]
>>603
これは分かり易いw

618 名前:デフォルトの名無しさん (ワッチョイ 3b0e-RhaL) mailto:sage [2017/03/08(水) 18:44:03.44 ID:vi7wbAYy0.net]
>>602
3番目は使わんな
参照先変えないならもう参照でいいじゃない

619 名前:デフォルトの名無しさん (ワッチョイ 1fcc-+LoG) mailto:sage [2017/03/08(水) 21:11:05.22 ID:EeDAfYl90.net]
>>598
うむ、少し間違えた

620 名前:デフォルトの名無しさん (ワッチョイ 1fa9-sdpt) mailto:sage [2017/03/08(水) 21:28:15.23 ID:LYwYML6D0.net]
>>602
C の syntax を↓で済ませた結果、各 specifier, qualifier は順不同となった。
declaration:
 declaration-specifiers init-declarator-list(opt);
declaration-specifiers:
 storage-class-specifier declaration-specifiers(opt)
 type-specifier declaration-specifiers(opt)
 type-qualifier declaration-specifiers(opt)

621 名前:デフォルトの名無しさん (ワッチョイ af3c-csvI) mailto:sage [2017/03/09(木) 08:16:39.62 ID:P4eVvEWq0.net]
「cv修飾は左を修飾し、一番左に書いたときだけ例外的に右を修飾する」
という認識で10年以上問題なかった、仕様書でどうなってるかは知らんけど

622 名前:デフォルトの名無しさん (オッペケ Sr57-Yz8R) mailto:sage [2017/03/09(木) 08:46:08.19 ID:nspN5S3gr.net]
そんなはずもなし
unsigned volatile const inline int static long *f();

623 名前:デフォルトの名無しさん (ワッチョイ 2353-pXJL) mailto:sage [2017/03/10(金) 02:51:41.08 ID:DVnkldFi0.net]
>>602
>const int *p
>はやらない、これっていったい上の三つのうちのどれになるの?なんでそうなるの?

マジか const char * なんて毎日数え切れないほど使ってるわ

624 名前:デフォルトの名無しさん (ワッチョイ cff2-j8zu) [2017/03/10(金) 08:56:27.34 ID:B+GguKA+0.net]
const v(^・^)v const



625 名前:デフォルトの名無しさん (ササクッテロル Sp57-f3f6) mailto:sage [2017/03/10(金) 17:04:19.46 ID:Pyfb9YNwp.net]
久々にC弄ったから何となく覗いてみたらconstの話しかしてなくて草

626 名前:デフォルトの名無しさん (ワッチョイ 362b-2hGO) mailto:sage [2017/03/10(金) 18:09:34.58 ID:wy5WfeUq0.net]
const仙人のお出ましだぞ
彼がconstの全てを知ってるらしい

627 名前:デフォルトの名無しさん (オッペケ Sr57-Yz8R) mailto:sage [2017/03/10(金) 18:35:53.93 ID:9izzFXDGr.net]
>>585
>同じ型だけどconst性の違いがある

どこでそんなデタラメを覚えた?

628 名前:デフォルトの名無しさん (ワッチョイ 72cc-hLcU) mailto:sage [2017/03/10(金) 18:47:49.20 ID:OJfHMNpa0.net]
君達、物事はコンスタントに解決することが重要だよ?わかてる?

629 名前:デフォルトの名無しさん (オッペケ Sr57-Yz8R) mailto:sage [2017/03/10(金) 19:03:11.58 ID:9izzFXDGr.net]
>>598
>constは後ろに付けるのが本来なんだよ

ソースは?

630 名前:デフォルトの名無しさん (ワッチョイ f27f-uSLp) mailto:sage [2017/03/10(金) 19:23:12.52 ID:ZjsFj1+i0.net]
>>614
後者では型が修飾されているんじゃなくて変数が const 修飾されている
ということを言いたかったんじゃない?実際

int * a;
int * const b = hoge();
a = b;

はちゃんと通るし。
まあたしかに「同じ型」だと言っていいのかはよくわかんないけど。

631 名前:デフォルトの名無しさん (ドコグロ MMca-TLcY) mailto:sage [2017/03/10(金) 20:18:18.69 ID:HUvVedpnM.net]
>>603のClockwise/Spiral Ruleに異論のある人、居る?

632 名前:デフォルトの名無しさん (ブーイモ MM2b-4Oo7) mailto:sage [2017/03/10(金) 20:38:11.10 ID:K2NxcqGZM.net]
>>618
1つ目の回答のほうが2つ目の回答(スパイラル)より12倍投票数が多いぞ

633 名前:デフォルトの名無しさん (オッペケ Sr57-Yz8R) mailto:sage [2017/03/10(金) 20:56:02.79 ID:9izzFXDGr.net]
>>617
>型が修飾されているんじゃなくて変数が const 修飾されている

などという空想がどこから湧いてきたのか疑問なのだが
ideone.com/dWfpAT

634 名前:デフォルトの名無しさん (オッペケ Sr57-Yz8R) mailto:sage [2017/03/10(金) 20:59:13.64 ID:9izzFXDGr.net]
>>618
まず「clockwise」と言うあたりでオツムが論理的思考に弱いことは明らか



635 名前:デフォルトの名無しさん (ワッチョイ 72c9-qJ3d) mailto:sage [2017/03/10(金) 21:00:42.90 ID:6ypCkPMo0.net]
>>617の理屈だと、
char c;
int i;

これらは同じ型で変数が修飾されてるだけだよ。
実際、

int i;
char c = 3;
i = c;

はちゃんと通るし。
などとも言える。

636 名前:デフォルトの名無しさん (ワッチョイ 723c-ezmg) mailto:sage [2017/03/10(金) 22:22:44.73 ID:PT1UnLZa0.net]
>>620
int const *p
int * const p
の違いもわからんアホは ROM っとけ

637 名前:デフォルトの名無しさん (ワッチョイ 52c0-/Xhi) mailto:sage [2017/03/11(土) 00:12:59.12 ID:XUJAp/M10.net]
ROMはconst

638 名前:デフォルトの名無しさん (ワッチョイ 138b-ldtI) mailto:sage [2017/03/11(土) 06:32:47.43 ID:JvHBeRgs0.net]
ちょっおまwwwwwwww
C++のBNFにtype-qualifierというのはあっても
variable-qualifierとかobject-qualifierとかは無いはず…
>>622のは単に変数のdeclaration
(文脈によっては変数の定義にもなる

639 名前:デフォルトの名無しさん (ワッチョイ d2d1-qBYI) mailto:sage [2017/03/11(土) 06:50:46.51 ID:2/ZkR35y0.net]
ちょっおま
って久しぶりに聞いたわ

640 名前:デフォルトの名無しさん (ワッチョイ 7f4a-/Xhi) mailto:sage [2017/03/11(土) 09:06:46.34 ID:h5T3JHpB0.net]
>>616
二度漬け禁止

641 名前:デフォルトの名無しさん (ワッチョイ f64a-JiRs) mailto:sage [2017/03/12(日) 07:41:49.43 ID:nkYFQTVc0.net]
Visual studio express 2013において、if文以外(変数にデータを代入するとき)に==と書いた時にエラーを返すようにしたいのですが、出来ますか?
(a == 1;と書いた時にコンパイルするとエラーを返すようにするといった感じです)
if文の判定式をコピーした結果、この==を1つにし忘れたため、しばらく困ったのと
現状において、整数への代入で==を使うことが無いので、エラーを出すようにしたいのです

642 名前:デフォルトの名無しさん (ワッチョイ f64a-JiRs) mailto:sage [2017/03/12(日) 08:58:04.75 ID:nkYFQTVc0.net]
すみません、スレ違いでした

643 名前:デフォルトの名無しさん (ワッチョイ 723c-4mgA) mailto:sage [2017/03/12(日) 09:50:45.60 ID:6iMHIBm50.net]
>>628
プロジェクトのプロパティ
>構成プロパティ >C/C++ >詳細設定
特定の警告をエラーとして扱う に 4553 を設定すればいい
(もしくは、コンパイルオプションの /we"4553" を指定)

そうすると
warning C4553: '==': 演算子にプログラム上の作用がありません。'=' を意図しましたか?
のエラーになる。

644 名前:デフォルトの名無しさん (ワッチョイ 138b-ldtI) mailto:sage [2017/03/12(日) 12:13:57.19 ID:OaInj5Km0.net]
「警告レベル」を「Level4 (/W4)」、「警告をエラーとして扱う」を「はい (/WX)」にしたらもっと広範にやってくれてスゲー便利



645 名前:デフォルトの名無しさん (ワッチョイ f64a-JiRs) mailto:sage [2017/03/12(日) 17:42:24.65 ID:nkYFQTVc0.net]
>>630,631
本当に有難う御座いました!!
c++に明るくなく、これに気づかなかったせいで丸三日潰れて困り果てていたのですが、c++系の専門用語が分か

646 名前:轤ネいのと
「c++ ==」といったワードで検索しても記号系のワードが省かれるからか、ヒットせずとても困っていました
[]
[ここ壊れてます]

647 名前:デフォルトの名無しさん (スプッッ Sdb2-K8Mp) mailto:sage [2017/03/13(月) 07:13:56.93 ID:Butu4pJYd.net]
MultiByteToWideCharの1つ目の引数のコード表と二つ目の引数のフラグセットの意味を教えてくれませんか
コード表の意味はなんとなくわかるんだけどそれが使用してたコード表についてなのか、それとも変換先なのかがわからない...

648 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-SsNB) mailto:sage [2017/03/13(月) 13:07:11.48 ID:VNPYsRzKd.net]
>>633
WindowsのUnicodeには、UTF-16が使われている。コードページは、UTF-16以外のマルチバイト文字列の符号化の種類を表している。第2引数についてはUnicodeの基本を勉強してから用語を確認せよ(英語のMSDNページを参照)。

649 名前:デフォルトの名無しさん (ワッチョイ f3c9-Yz8R) mailto:sage [2017/03/13(月) 16:29:57.33 ID:Kr7xjXLG0.net]
Unicode 9.0のCore Specification D63ではprecomposedとcompositeが同義と読めるがMSDNは異なる使い方をしているな
combining(結合)と間違えたように思える
これでは>>633は理解不能

650 名前:デフォルトの名無しさん (ワッチョイ f3c9-Yz8R) mailto:sage [2017/03/13(月) 21:12:59.84 ID:Kr7xjXLG0.net]
>>633
WindowsのMultiByteToWideCharは「何らかの文字コード」をwchar_t(UTF-16)文字列に変換するもの
変換元の文字コードが何であるかを指定するのが第一引数
例えば932(シフトJIS)、65001(UTF-8)
変換の動作を指定するのが第二引数
例えばMB_ERR_INVALID_CHARSは少しでも不正なバイトシーケンスがあれば全体をエラーとする

651 名前:デフォルトの名無しさん (ワッチョイ f27f-6H1t) mailto:sage [2017/03/15(水) 02:37:25.64 ID:8rrA/zgU0.net]
>>620
ってどういう意図のレスだったの?理解がまったくできないんだけど

652 名前:デフォルトの名無しさん (スプッッ Sdb2-K8Mp) mailto:sage [2017/03/15(水) 17:59:26.07 ID:wfaQCMr9d.net]
>>634-636
たすかりもうした
おかげでコード上手くかけたので助かりました

653 名前:デフォルトの名無しさん (ワッチョイ 133c-v8EU) [2017/03/16(木) 18:08:57.23 ID:KOsUwnSu0.net]
テンプレートの特殊化を勉強しているんだけど
https://ideone.com/Z7enCI
これがなんでエラーになるのか教えてください

654 名前:デフォルトの名無しさん (ワッチョイ ef6c-i8cA) mailto:sage [2017/03/16(木) 18:18:50.30 ID:ZMIdRLMQ0.net]
>>639
intのHogeのFoo関数のtemplate<>が余計
Hoge<int>が特殊化されていることはクラス側でわかっているため



655 名前:デフォルトの名無しさん (ワッチョイ 133c-v8EU) [2017/03/16(木) 19:00:18.20 ID:KOsUwnSu0.net]
>>640
なるほど、サンクス

656 名前:デフォルトの名無しさん (ワッチョイ 133c-v8EU) mailto:sage [2017/03/17(金) 09:32:55.95 ID:OqtFMBfF0.net]
関数のアドレスを取得するときに
クラスのメンバじゃない普通の関数は&をつける必要がないのに
メンバ関数は&をつけないといけなくなる理由を教えて

657 名前:デフォルトの名無しさん (ワッチョイ 5319-v8EU) mailto:sage [2017/03/17(金) 09:40:10.52 ID:Wd4E8hAa0.net]
ideoneで書いてると急に初期化されて初めの状態のコードに戻ってしまうのですが
わたくしだけでしょうか?

658 名前:デフォルトの名無しさん (スップ Sddf-8YZg) mailto:sage [2017/03/17(金) 11:36:52.60 ID:c9xwv7oqd.net]
>>642
言ってる意味がよくわからん

659 名前:デフォルトの名無しさん (ワッチョイ 3fdf-8FG5) [2017/03/17(金) 13:16:36.04 ID:AO+9LJwo0.net]
>>642
ドライに言うと、規格でそう決まっているから

なんでそう決まっているかというと、
メンバポインタ(関数に限らない)取得は特殊な行為で、
インスタンス内のメンバの絶対アドレスを取得するが一般的な行為*1なので、
特殊な行為は明示的*2に書こうということになっている

struct asshole
{
void sonofabitch(int) { }
void dipshit()
{
auto jerk = sonofabitch;
}
};
↑は現実にはコンパイルエラーだが、もし通すとしたら
おまえ的にはjerkには何が入るべきだと思う?
ちなみに俺はbind(&asshole::sonofabitch, this, _1)に見えちまう

*1 俺じゃなく禿がそう思っている
*2 アドレス演算子とスコープ演算子が必須

660 名前:デフォルトの名無しさん (ワッチョイ bf27-tpgq) mailto:sage [2017/03/17(金) 13:48:45.02 ID:l8NCqXAU0.net]
どこをどうひねるとそういう煌びやかな単語が出てくるのかが謎

661 名前:デフォルトの名無しさん (ワッチョイ 5319-v8EU) mailto:sage [2017/03/17(金) 16:09:10.13 ID:Wd4E8hAa0.net]
ダブルヂスパッチってwikipediaだと2つのオブジェによってヂスパッチ
する意味ってかいてあるけれどwikipedia以外のホムペには2回ヂスパッチすること
って書いてあるばあいもありますね。

662 名前:デフォルトの名無しさん (ドコグロ MMb7-3fK7) mailto:sage [2017/03/17(金) 18:32:57.86 ID:dpI1G6OFM.net]
>>645
日本語がまともに書けるようになってからレスしなよ

663 名前:デフォルトの名無しさん (ワッチョイ bfda-8FG5) [2017/03/17(金) 19:46:28.78 ID:sgxnbWig0.net]
>>648
おまえは批判がまともに書けるようになるまでROMってろ

664 名前:片山博文MZ ◆T6xkBnTXz7B0 (スププ Sddf-W8JT) mailto:sage [2017/03/17(金) 19:54:05.38 ID:+s8GChIVd.net]
批判



665 名前:デフォルトの名無しさん (ワッチョイ bf3c-5NuA) mailto:sage [2017/03/17(金) 19:59:12.76 ID:KNcySIzq0.net]
>>648
俺は普通に理解できたんだが、逆になにが悪いのか教えて欲しい。

666 名前:デフォルトの名無しさん (ブーイモ MM37-nFTW) mailto:sage [2017/03/17(金) 21:49:19.82 ID:YstDK/amM.net]
メンバー関数のアドレス取得も絶対アドレスだと思うんだけど

667 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/17(金) 22:10:36.61 ID:Kkd83n1s0.net]
>>646
○○がマイブームな年頃

うんち:3さい
カンチョー:6さい
サノバビッチ:14歳←英語使ってる俺カッコイイ

とかじゃね?


ところで脱線するが、>>645でbindがC++にあることを初めて知ったのだが、
thisをバインド出来ているがこれって意味あるのか?
JavaScriptみたいな動的ダックタイピングなら継承関係なくbind出来るので意味があるのだが、
C++なら継承してないとbind出来ないよな?
だったら最初からインスタンスのポインタを管理して普通にメンバ呼んだ方が楽だと思うが。
(継承してないとbind出来ないのなら管理対象のポインタが
関数ポインタになるかインスタンスになるかだけ。
実質的なプログラミングコストは変わらない)

668 名前:デフォルトの名無しさん (ワッチョイ 133c-v8EU) [2017/03/17(金) 22:24:44.25 ID:OqtFMBfF0.net]
>>645
ごめん、bind関数の理解があいまいなんだが
要するにインスタンス先のsonofabitchメンバ関数になるように見えるって言いたいんだよね
俺は(も?)そう思った
でも規格で決まってるって一言で言ってもらえてなんとなく割り切れた

ひとつだけ
「インスタンス内のメンバの絶対アドレスを取得する」のが特殊な行為って部分をkwsk
他のポインタは相対アドレスなの?

669 名前:デフォルトの名無しさん (ワッチョイ 3398-jYbd) mailto:sage [2017/03/17(金) 22:41:33.75 ID:pMlN+j4d0.net]
いやでも、原文には
>インスタンス内のメンバの絶対アドレスを取得するが「一般的」な行為
って書いてあるし

670 名前:デフォルトの名無しさん (オッペケ Sr97-w0Gz) mailto:sage [2017/03/17(金) 23:23:01.06 ID:p3X8pgmur.net]
>auto jerk = sonofabitch;

ここは話の流れでは
auto jerk = asshole::sonofabitch;
とすべき所を、勝手に「asshole::」を取って話をすり替えるとは

671 名前:デフォルトの名無しさん (ワッチョイ a342-W3uL) mailto:sage [2017/03/17(金) 23:23:58.39 ID:lHYxcE7d0.net]
>>653
transformみたいなアルゴリズム系の関数に渡すときにバインドするしかないだろ

672 名前:デフォルトの名無しさん (ワッチョイ 3fd1-h49x) mailto:sage [2017/03/17(金) 23:46:36.67 ID:KqZX+Igl0.net]
継承してなくてもbindできるでしょ

673 名前:デフォルトの名無しさん (ワッチョイ 537b-gO1F) [2017/03/17(金) 23:48:26.71 ID:RKn5d9hw0.net]
継承とbindがどう関係すんのか解らんわ

674 名前:デフォルトの名無しさん (オッペケ Sr97-w0Gz) mailto:sage [2017/03/18(土) 09:12:06.02 ID:QtoorQPlr.net]
>>653
>C++なら継承してないとbind出来ないよな?

継承の意味もわからないレベルはすっこんでた方がいい
ideone.com/Wl7A59



675 名前:デフォルトの名無しさん (ワッチョイ f3e7-ajdi) mailto:sage [2017/03/18(土) 09:44:46.57 ID:g4V8rpJk0.net]
ふえーん。VC++でW系のこーどがわからないよ〜。

676 名前:デフォルトの名無しさん (ワッチョイ f3e7-ajdi) mailto:sage [2017/03/18(土) 09:54:09.70 ID:g4V8rpJk0.net]
C++のバグかと思ったら、いじってるHTMLのバグだった。悲しい。

677 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/18(土) 11:02:56.09 ID:waR+gchT0.net]
>>657
std::transformならbindいらんだろ。イテレータを渡してる。
> https://cpprefjp.github.io/reference/algorithm/transform.html
そしてこの場合、(someClass->*someMethod) と書けるしそれで十分だろ。

>>660
ここでbindも継承もないソースを上げてくることにびっくりだわ

>>658-659
関数内でのthis.someFieldへのアクセスは継承してないと無理でしょ。
静的型ではポインタを生成出来ない。(動的ダックタイピングなら可能)
www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
www.ibm.com/support/knowledgecenter/ja/SSGH3R_12.1.0/com.ibm.xlcpp121.aix.doc/language_ref/cplr034.html

継承してない物をbindして、その関数内からthis.someFieldにアクセス出来る例があるか?
あればよろしく。

678 名前:デフォルトの名無しさん (ワッチョイ 838b-UnlH) mailto:sage [2017/03/18(土) 11:43:31.57 ID:YXP7lJmh0.net]
ていうか仮想関数(による多態性)とテンプレート(によるfunctor)がどっちも使える状況で
どうしてもメンバ関数のアドレスをとる必要があるというシチューエーションとは一体、
ちなメンバ関数のアドレスをとる構文は覚えていない
主記憶にございません

679 名前:デフォルトの名無しさん (ワッチョイ 838b-UnlH) mailto:sage [2017/03/18(土) 11:45:58.26 ID:YXP7lJmh0.net]
誤:テンプレート(によるfunctor)
正:テンプレート(へのfunctorとかクロージャ渡し)

680 名前:デフォルトの名無しさん (ワンミングク MM5f-W3uL) mailto:sage [2017/03/18(土) 12:01:44.38 ID:TmvAgLdoM.net]
>>663
もういいから死ね
https://ideone.com/jZNd95

681 名前:デフォルトの名無しさん (ワッチョイ 838b-UnlH) mailto:sage [2017/03/18(土) 12:41:56.92 ID:YXP7lJmh0.net]
f.calc(x, 2)をfunc(x)として呼びたいためだけにstd::bind()を使うのはメリット感に欠ける…

682 名前:デフォルトの名無しさん (ワンミングク MM5f-W3uL) mailto:sage [2017/03/18(土) 12:43:09.53 ID:TmvAgLdoM.net]
>>667
できるできないの議論だから

683 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/18(土) 12:48:15.84 ID:waR+gchT0.net]
>>666
> std::vector<int> invoke(const std::vector<int>& v, const F& f) const
> std::bind(&F::calc, f, _1, 2));
bindしている対象は F& f つまり自分自身のクラスだろ。
それは継承してるのと意味は同じだよ。(今回の問いにおいては)
俺はそこに全く無関係のクラス class G{} を突っ込めるのかと問うている。
C++では出来ないだろ。(JavaScriptでは出来る)

自分自身、または継承関係のあるクラスなら、
> std::bind(&F::calc, f, _1, 2));
のところを代わりに f->*calc と書けるんだよ。それでいいだろ、という話。
今回は引数が複数個で、第2引数を確定させたいみたいだから、
C++にその文法が無く、部分適用関数をあらかじめ用意するしかないようだけど、
それは文法が足りてないから。(ただしそこまで使わないのでbindでもいいが)

ただそもそもカリー化して一個ずつ食えって話だろ、本来は。
その場合なら第2引数を確定させた関数を作る為に、
class H: F{
int k;
int calc(const int x);
}
だろ。それで h->*calcで良いんだよ。(継承関係が有ればbind無しで書ける)
というか内部的には同じ事をやっていると思っているんだが。

684 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/18(土) 12:48:34.92 ID:waR+gchT0.net]
それで話を戻すと、
「継承関係無しで、自分自身でもないクラス G をbind出来るか?」
というのが俺の問いね。
お前は日本語にもこだわるタイプのようだから、「自分自身でもない」と明記しておく。
(これは普通に分かると思いたかったが)

要するに俺は、
「静的型であるC++に於いてthisのバインドって意味あるのか?」
と問うている。
動的型ならバインド後にメンバ追加して実行時に揃っていればダックタイピング可能だから意味がある。
静的型はバインドする時点でメンバが揃っていることを確定出来ないといけない。
それって要するに継承関係がないと無理だよね?という話。



685 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/18(土) 12:51:40.31 ID:waR+gchT0.net]
× 静的型はバインドする時点で
○ 静的型はバインドが使われているソースをコンパイルする時点で

一応訂正しとくわ。分かる範囲だとは思うが。

686 名前:デフォルトの名無しさん (ワンミングク MM5f-W3uL) mailto:sage [2017/03/18(土) 13:01:24.39 ID:TmvAgLdoM.net]
何が言いたいのか全然わからん
とりあえず、そのJavaScriptでできると主張しているコードを晒せ

第一引数にthisをバインドする意味って、内部的にはメンバメソッドはオーバーロード(+マングリング)で解決されるんだから、バインドしとかないと動かねーだろがよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<322KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef