C++相談室 part129at TECH
C++相談室 part129 - 暇つぶし2ch1:デフォルトの名無しさん(ワッチョイ dfcf-HvS5)
17/01/09 14:49:27.56 p96WJVyd0.net
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part128
スレリンク(tech板)
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
スレリンク(tech板)
■長いソースを貼るときはここへ。■
 URLリンク(codepad.org)
 URLリンク(ideone.com)
[C++ FAQ]
URLリンク(isocpp.org)
URLリンク(www.bohyoh.com) (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

2:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)
17/01/09 16:53:24.81 FJMj93WYK.net
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----

3:デフォルトの名無しさん (ワッチョイ 0f42-twlg)
17/01/09 16:56:41.17 jVBRIf3C0.net
これは>>1乙じゃなくてシフト演算子なんだからね

4:デフォルトの名無しさん (ワッチョイ dfc1-f52P)
17/01/09 17:39:43.46 MgtRKFl00.net
ご苦労!

5:デフォルトの名無しさん (ワッチョイ 6f13-HvS5)
17/01/09 17:40:19.60 s0WlKSpH0.net
これは>>1じゃなくてストリームへの入力なんだからね

6:デフォルトの名無しさん (ワッチョイ df98-S/j3)
17/01/09 20:32:19.17 IZbe/h670.net
catch(>>1& err)
{
err << "うむ、ご苦労";
}

7:デフォルトの名無しさん (オッペケ Sr3f-KLRm)
17/01/09 20:48:55.53 NzCLpVsYr.net
>>2
ゴミを貼るなボケ

8:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)
17/01/09 20:57:29.53 FJMj93WYK.net
へへへっ

9:デフォルトの名無しさん (ワッチョイ fb04-nASw)
17/01/09 22:45:37.43 cNtoCjW40.net
グローバルなstatic変数は(コンパイル単位が違うと)初期化タイミングが不定だから使うな
みたいな話がありますが、これはクラスメンバのstatic変数でも同じでしょうか。
やはり定番のローカルなstatic変数の参照を返すのがベストでしょうか?

10:デフォルトの名無しさん (ワッチョイ df8e-KLRm)
17/01/09 23:42:53.87 YmMsaSRh0.net
static int a = f();
 ↓
static int &get_unko() {
 static int a = f();
 return a;
}
問題解決になるとは到底思えない
ちなみにクラスの静的メンバーでも同じ

11:デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)
17/01/10 00:09:01.54 qNfJPVUt0.net
>>9
ベストは静的な寿命をもつ変数が別の静的な寿命を持つ変数を参照するような設計にしないこと
やむを得ずそうなる場合はローカルなstatic変数の参照を返す方法がベター
しかしそれも構築は初めて呼ばれた時になるが、破棄の順が不定なのは変わらずだから注意

12:デフォルトの名無しさん (ワッチョイ dfcf-IbiL)
17/01/10 00:34:11.81 kCG+Vhkl0.net
>>11
破棄準は構築と逆順になるよ。 [basic.start.term]

13:デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)
17/01/10 01:22:55.56 qNfJPVUt0.net
>>12
ホンマやね
メモリ上の配置と関係なしに構築した順番覚えてるのな。

14:デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
17/01/10 02:41:10.58 YALu2HFR0.net
しかし、関数内で定義したstatic変数ってどうやって「一度のみ初期化」を実現してるんだろう?
規格上の明記は無いよね?
もし、コード上に初期化フラグ的なものを保持して毎回判定してるのだとしたら、単純なグローバル変数よりアクセス遅くなるのかな?

15:デフォルトの名無しさん (ワッチョイ dfcf-IbiL)
17/01/10 03:28:04.72 kCG+Vhkl0.net
>>14
気になるならアセンブリ出力を見ればいい。 URLリンク(godbolt.org)
効率は実測でどうぞ。

16:デフォルトの名無しさん
17/01/10 03:42:52.33 N3Ngq+Oq0.net
江添は何て言ってる?

17:デフォルトの名無しさん (ワッチョイ 0f7b-/uDL)
17/01/10 04:16:44.71 UGgokZQL0.net
規格オタクの江添に実装のことを聞いてどうするのか

18:デフォルトの名無しさん (ワッチョイ 5f36-GcKO)
17/01/10 07:19:19.96 xRFVWFBm0.net
>>17
規格上明記は無いのではという>>14の疑問に対して>>16のレスだろうから、実装は関係ないでしょ。

19:デフォルトの名無しさん (ドコグロ MMff-JQu6)
17/01/10 08:35:32.37 WWXPDPHuM.net
>>14
スコープが違うだけだろ
フラグとか意味わからん

20:デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
17/01/10 09:01:12.67 YALu2HFR0.net
>>18
主要な実装がどうなっているのか気になりますねー。

21:デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
17/01/10 09:03:05.70 YALu2HFR0.net
>>19
関数内の場合は初期化タイミングが明確にされている部分が違うよね?

22:デフォルトの名無しさん (スプッッ Sdff-5duh)
17/01/10 09:17:26.16 Kh8Jpf0Qd.net
静的ローカル変数のデストラクタはどうやって呼び出してるんですか
コンパイル時には順番決まらないですよね

23:デフォルトの名無しさん (ワンミングク MMff-kB5U)
17/01/10 10:17:49.42 KPiaZgHCM.net
>>22
生成された順にデストラクタスタックに積んどきゃええだけやろ

24:デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
17/01/10 21:06:37.99 aZrJHKL80.net
>>14
マルチスレッド下でも1度だけ初期化しなけりゃならないのでややこしいことをやってる

25:デフォルトの名無しさん (ワッチョイ 6fa6-HvS5)
17/01/10 21:27:26.24 A8TeocJX0.net
スレッドセーフな点がありがたいと思っているんだが

26:デフォルトの名無しさん (ワッチョイ ab26-S/j3)
17/01/11 09:57:17.96 kJf5mE6d0.net
その意味で、どのスレッドが最初に呼び出して初期化するか
分からないっていう怖さは有るがな
スレッドに紐づくようなものを初期化するのはNGだ
(COMであるとかウィンドウであるとか)
もしくはプログラムの最初で明示的にメインスレッドから呼び出して初期化しておくか
スレッド間でシェアする必要がなければTLSにしておくか

27:デフォルトの名無しさん (ワッチョイ df98-S/j3)
17/01/11 11:52:08.85 z2RHK6s+0.net
最初からいきなりマルチスレッドなわけじゃなし
mutexやatomicでどうにでもできるでしょ

28:デフォルトの名無しさん (ワッチョイ ab26-S/j3)
17/01/11 12:30:02.49 kJf5mE6d0.net
関数内で定義したstatic変数を初期化するスレッドをメインスレッドなどに制限するのを
>mutexやatomic
でどうやって解決するのか熱く語ってもらおうか

29:デフォルトの名無しさん (ワッチョイ df98-S/j3)
17/01/11 12:37:09.06 z2RHK6s+0.net
質問の意味がわからんぞ

30:デフォルトの名無しさん (オッペケ Sr3f-KLRm)
17/01/11 12:37:52.47 ZhOyh3uTr.net
>>26
>スレッドに紐づくようなものを初期化するのはNGだ
いきなりお題改変乙
グローバルに置くんだからスレッド間で共有したい場合の話に決まってるのに

31:デフォルトの名無しさん (ワッチョイ ab26-S/j3)
17/01/11 12:53:45.95 kJf5mE6d0.net
>>29
お前が
>mutexやatomic
って言ったんだろ
いっとくが排他制御の話など誰もしてないぞ
世の中には生成されたスレッドに紐づいてしまうオブジェクトというものがあって
Windowsのウィンドウであれば、生成されたスレッドのメッセージキューで
メッセージポンプを回すことになるし
COMは生成されたスレッドのアパートメントで一生を過ごす
どのスレッドで初期化されたかが重要になるオブジェクトもあるってこった
そして関数内static変数は最初に呼び出したスレッドで初期化処理が走る <


32:br> この問題をお前は >mutexやatomic で解決するんだろ? さあ、熱く語れ >>30 スレッドに紐づくようなもの(WindowsのCOMやウィンドウ)を 関数内で定義したstatic変数で初期化するのはNG →スレッドに紐づかないものであればOK、スレッド間で共有もできる 何がお題変更なの? グローバル変数やシングルトンに関数内static変数は便利だけど 相性が悪いものもあるって話なのに



33:デフォルトの名無しさん (ワッチョイ df17-pn3f)
17/01/11 14:03:34.54 9AYGk8zp0.net
static変数を考える場合、このスレ的にはC++11から導入された thread_local を無視できないでしょ。
スレッド局所記憶(英: Thread local storage, TLS)
URLリンク(ja.wikipedia.org)

34:デフォルトの名無しさん (オッペケ Sr3f-KLRm)
17/01/11 15:00:37.89 ZhOyh3uTr.net
>>31
>何がお題変更なの?
相性が悪いものの話なんかしてねーし
スレッド間で共有したい変数の話の最中に
「スレッド間でシェアする必要がなければTLS」とか力説し始めて
アホなの?

35:デフォルトの名無しさん (ワッチョイ df98-S/j3)
17/01/11 15:51:10.26 z2RHK6s+0.net
同感

36:デフォルトの名無しさん (ワッチョイ ab26-S/j3)
17/01/11 15:53:31.57 kJf5mE6d0.net
相性が悪いものがあるっていう書き込みをして何が悪いんだ?
>スレッド間で共有したい変数の話の最中に
それはお前が勝手に決めたことだろ
元々あくまで関数内static変数の初期化がスレッドセーフになっているというだけの話であり
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは関係ないだろ
本質的にスレッド間で共有する必要がない場合はTLSに変更することもできる
ってだけの話で
そのほうがパフォーマンスが出る場合もある

37:デフォルトの名無しさん (オッペケ Sr3f-KLRm)
17/01/11 16:34:37.80 ZhOyh3uTr.net
static変数ってどうやって~を実現してるんだろう?
 ↓
MT保証で複雑なことしてる
 ↓
そのstatic、ホントに必要ですか?
 ↓
いきなり何を言いだすの
 ↓
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは話してないからな←今ここ

38:デフォルトの名無しさん (ワッチョイ ab26-S/j3)
17/01/11 16:47:40.32 kJf5mE6d0.net
>そのstatic、ホントに必要ですか?
スレッドローカル関数内static変数の事すら理解していないのがよく分かった

39:デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
17/01/11 17:27:25.47 7JGhXUMg0.net
>>27
どのような状況で呼び出されても確実に一回だけ初期化する事が要求されている
mutexは初期化する必要があるから役に立たん

40:デフォルトの名無しさん (ワッチョイ df17-pn3f)
17/01/11 17:41:25.81 9AYGk8zp0.net
IDが見えるスレッドなのに、ひとりの相手とやりとりしている錯覚に陥った ID:ZhOyh3uTr 氏は失礼ながら、精神疾患の兆候があるかも。

41:デフォルトの名無しさん (ワッチョイ df98-S/j3)
17/01/11 18:35:56.09 z2RHK6s+0.net
俺は一言もstaticとは言ってないし
mutexとatomic「だけで」とも言ってないのに
人の話の前提条件を勝手にでっち上げて叩く
ストローマンに辟易としちまった

42:デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
17/01/11 18:45:08.90 7JGhXUMg0.net
>>26まではstatic変数(特に関数内)の初期化の話をしてたのに、知ったかぶって参加しようとしたID:z2RHK6s+0がグチャグチャにしたって事か

43:デフォルトの名無しさん (ワッチョイ df8e-KLRm)
17/01/11 18:48:17.00 wUdtm8ww0.net
いつもながらのぐちゃぐちゃ展開
それがこのスレの醍醐味

44:デフォルトの名無しさん (ワッチョイ df8e-KLRm)
17/01/11 20:16:24.69 wUdtm8ww0.net
>さあ、熱く語れ
>どうやって解決するのか熱く語ってもらおうか
どちらかというと>>26あたりからおかしくなったようだ
クスリでもやっているのか、>>28あたりは何か幻覚を見たのではないかと

45:デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
17/01/11 21:00:46.12 7JGhXUMg0.net
具体的な例はないけど、作成したスレッドはRW、それ以外はROなんてのもありうるわけで
「スレッドに紐付付いてるのは共有するな」は受け入れ難い
と考えると、これをstatic変数の初期化に使うのは要注意と言う指摘は一理はあるかと

46:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/12 15:07:52.74 8CizHZGj0.net
>>38
ひんとstd::mutexのコンストラクタはconstexpr修飾されてる

47:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/12 15:28:40.45 sAPGeyQI0.net
>>45
std::mutexってランタイムライブラリじゃ無いだろ

48:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/13 00:15:44.24 nVxQCvXm0.net
>>46
ちょっと何言ってるのかわからないから誰か解説者よろ

49:デフォルトの名無しさん (ワッチョイ 1f36-cG99)
17/01/13 10:28:33.20 VKtyxMUH0.net
>>47
なんだ、そこからかよ
static変数の初期化の話題だってわかってる?

50:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/13 10:37:18.84 7CvKX7vR0.net
ぜんぜん話が見えてこない

51:デフォルトの名無しさん (ドコグロ MM0a-Hii4)
17/01/13 12:28:56.30 LkImdLNRM.net
>>48
関数内のstatic変数だろ。

52:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 12:56:57.82 kKg87s4oM.net
>>48
それとランタイムライブラリが何って?

53:デフォルトの名無しさん (ワッチョイ 3217-q48i)
17/01/13 13:13:35.85 y8BGYaW90.net
ランタイムライブラリじゃない = ヘッダーファイルのみでOk
という意味に、私は解釈したんだがほかの人は道南?

54:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 13:16:53.58 kKg87s4oM.net
>>52
それが>>45へのレスとしてつながる?

55:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 17:12:37.37 76Aeg2JY0.net
ランタイムライブラリが通じなかった?
llvmで言うところのcompiler-rtだよ

56:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 18:02:07.52 kKg87s4oM.net
>>54
それが?

57:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 18:31:46.73 76Aeg2JY0.net
>>55
これで何がわからない?

58:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 18:45:44.38 kKg87s4oM.net
>>56
>>53

59:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 18:49:34.49 76Aeg2JY0.net
>>57
llvmで言うところのcompiler-rtって理解してる?

60:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 18:55:22.83 kKg87s4oM.net
>>58
うん。
それとstd::mutexのコンストラクタがconstexprだということの関連性がわからん

61:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 19:03:56.40 76Aeg2JY0.net
>>59
じゃ、static変数の初期化の排他制御にstd::mutexを使うと言うお笑い提案に付いては?

62:デフォルトの名無しさん (ワンミングク MMe2-dqLr)
17/01/13 19:08:40.80 kKg87s4oM.net
>>60
規格上は別に問題ないんじゃない?

63:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/13 19:14:15.66 LnYnqLIL0.net
>>60=28
ストローマンまだ粘着してたのか

64:デフォルトの名無しさん (オッペケ Sr37-U8Ig)
17/01/13 19:24:27.07 weu0eN0Dr.net
>>60
まだやってんのかよ
バカに構うと時間を損するだけだぞ

65:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 19:57:05.24 76Aeg2JY0.net
>>61
constexprを理解してないのか
もう一回規格読んでから出直しなよ
重要なところは3.6.2だぞ
>>62
理解できないからって、おかしな捏造してごまかすのはやめたまえ

66:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/13 20:13:13.38 8qb1acaCM.net
>>64
URLリンク(cpprefjp.github.io)

67:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 20:15:51.46 76Aeg2JY0.net
>>65
だから、何?

68:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 20:19:22.63 76Aeg2JY0.net
>>65
それのどこをどうよ読むと
static変数の初期化の排他制御にstd::mutexを使えると言うお笑い提案が出てくるんだ?

69:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/13 20:22:34.22 8qb1acaCM.net
>>67
他のスレッドより先に初期化されることが保証されているんだから排他に使えるでしょ。
まさに例で書かれてるんだけどコード読めないの?

70:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/13 20:38:51.43 8qb1acaCM.net
ランタイムライブラリがどう関係してくるのか一つも説明ないんだけど、どういう事なの?

71:デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
17/01/13 20:46:26.83 nYJUER3p0.net
お願いします.
C::a, C::b を protected のままにしたいのですが,どうしても public を要求されます.
なぜなのでしょうか
URLリンク(ideone.com)

72:デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)
17/01/13 20:51:50.76 daPh3nWD0.net
>>70
なんか色々言いたくなるけど
とりあえずmyabsがfriendじゃないから要求されてるんじゃ?

73:デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)
17/01/13 20:53:38.14 daPh3nWD0.net
>>70
ってエラーにそう書いてあるやん

74:デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
17/01/13 21:06:18.40 nYJUER3p0.net
すみません.ありがとうございます.
URLリンク(ideone.com)
他になにかいろいろまずいところがあるんですね.
お手を煩わすようで恐縮ですがコメントいただけないでしょうか.
よろしくお願いいたします.

75:デフォルトの名無しさん (ワッチョイ 326c-6SG4)
17/01/13 21:12:36.47 eTv8M5MG0.net
>>73
明らかにfriend不要になったでしょ
比較クラスが比較対象を継承してるのも意味不明
意味わからずコード書いてる感じがするから勉強し直したほうが良い気がする

76:デフォルトの名無しさん (ワッチョイ c621-q48i)
17/01/13 21:30:49.97 AzvsCcDE0.net
すごいコードだ

77:デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
17/01/13 22:09:13.50 nYJUER3p0.net
>>74
ありがとうございます.
確かに例示としては
URLリンク(ideone.com)
で十分でした.
しかし次の場合はどうでしょうか?
不適当とは思いながら CCompare を C の継承としましたが,それでも protected がききません.
URLリンク(ideone.com)
スレリンク(tech板:96番)
を書いている際にぶつかった問題です.
よろしくお願いいたします.

78:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 22:20:31.99 76Aeg2JY0.net
ああ、わかって来たぞ
void func()
{
static std::mutex mtx; // ←これ
...
}
このmtxの初期化を排他制御するために、非ローカルなstd::mutex生成して使うと言うお笑い提案か
目の付けどころが鴻海過ぎる

79:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/13 22:34:28.85 8qb1acaCM.net
>>77
何言ってるのかわかんねえわ。

80:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/13 22:51:30.29 76Aeg2JY0.net
>>78
自分で言い出したんだろ
>>65

81:デフォルトの名無しさん (ワッチョイ f330-emOI)
17/01/13 22:59:08.33 ByW8JYfQ0.net
>>76
CCompareがアクセスできるのは自身のメンバとしてのa,bだから
概念的にいうならCCompareが持っているのはCから継承した自身のメンバ
CCompare::a,CCompare::bへのアクセス権であって
C::a,C::bへの直接のアクセス権を持っているわけではないから

82:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/13 23:18:01.19 8qb1acaCM.net
>>79
関数ローカルのstaticなstd::mutexをなぜmutexで保護しようとしたのかサッパリとわかんねえって言ってんの。
ランタイムライブラリとstd::mutexのデフォルトコンストラクタがconstexprである関係性の説明一つもないし相手しても出てこないって解ったから相手するのやめるよ。
最初から最後まで何が言いたいのか一ミリもわかんなかったわ。

83:デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
17/01/13 23:21:37.61 nYJUER3p0.net
>>80
map や priority_queue にあたえる比較関数オブジェクト(CCompare) の中に,
別のクラス(例では C) の private/protected をアクセスすることはできないのでしょうか
なんとかならないでしょうか

84:デフォルトの名無しさん (ワッチョイ f330-emOI)
17/01/13 23:59:19.90 ByW8JYfQ0.net
>>82
一般的には真っ当やり方ではどうにもならない
>>76のケースならCとCCompareのunionを使って真っ当にどうにかなるのかもしれない

85:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/14 00:05:54.36 8QfSwFFH0.net
>>81
関数ローカルなstatic変数の初期化は排他制御しなけりゃならない
これはOKかな?
その排他制御にstd::mutexを使えというお笑い提案が>>45

86:デフォルトの名無しさん (スプッッ Sdf2-gTkB)
17/01/14 00:37:53.00 rG4STkB+d.net
>>84
ランタイムライブラリじゃなければならない理由を説明するつもりならコード書いて例示すればいいんじゃないの?
断片的なコメント書くよりわかりやすいと思うぞ

87:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/14 00:42:02.10 Q3G32+hm0.net
>>85
関数ローカルのstatic変数の初期化を排他しなきゃいけないなんて言ってるバカを相手にしちゃいけないよ

88:デフォルトの名無しさん (ワッチョイ b633-zxSj)
17/01/14 00:47:15.28 /xjCjFtE0.net
>>82
#define private public
#define protected public
異論反論は勿論認める。

89:デフォルトの名無しさん (ワッチョイ b633-zxSj)
17/01/14 00:51:08.04 /xjCjFtE0.net
あ、コード見てなかった。
ネタにもなって無かったわ…ごめん。

90:デフォルトの名無しさん (ワッチョイ 3290-V/2k)
17/01/14 01:17:03.19 RBO90iTA0.net
質問ですが、mapやunordered_mapの[]演算子が非constしか用意されていないのは
何か理由があるんですか?

91:デフォルトの名無しさん (ワッチョイ f330-emOI)
17/01/14 01:39:44.07 mg/r9n9z0.net
>>89
指定したキーに対応する要素が存在しないときは新たに要素を作成するから

92:デフォルトの名無しさん (ワッチョイ b633-zxSj)
17/01/14 01:40:54.24 /xjCjFtE0.net
>>89
そのキーが存在しなくても、自動的に追加する仕様だから、const にはできない。

93:デフォルトの名無しさん (ワッチョイ 4f04-lw3D)
17/01/14 02:18:12.38 kOBEZk8k0.net
static変数の話の戻るんですけど、非ローカルstatic変数は生成/開放順序が不定
だから、使うな(googleスタイルガイド)やstaticローカルの参照にしろ(effective c++)
は言っているわけですけが、非ローカルstatic constexpr変数なら問題ないですよね?

94:デフォルトの名無しさん (ワッチョイ 3290-V/2k)
17/01/14 02:22:43.34 RBO90iTA0.net
ありがとうです
仕様がそうなっているからですか
わざわざatが用意されているのもそれが理由なんですね

95:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/14 02:59:59.47 Q3G32+hm0.net
>>92
変数にconstexpr付けたらコンパイル時定数になるから実行時の初期化とは無縁

96:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/14 08:04:44.63 8QfSwFFH0.net
>>94
あーあ、はいはい
3.7
The zero-initialization (8.5) of all block-scope variables with static storage duration (3.7.1) or thread storage
duration (3.7.2) is performed before any other initialization takes place.
Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.

97:デフォルトの名無しさん (ワッチョイ 328e-U8Ig)
17/01/14 08:14:50.33 4HVF8lbq0.net
話の前提(規格と実装)がずれてるような気がしなくもない

98:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/14 08:16:06.74 BjO/qPFR0.net
>>91
正確にはconstにできないのではなく、
constにするのは良心が咎める、だろ
データの実体はthisに指されていないわけで

99:デフォルトの名無しさん (ワッチョイ f642-SV1A)
17/01/14 11:01:30.33 f29MAUgw0.net
>>76
protectedなんて使うな、あんなもんpublicと一緒だ
いくつかそれっぽいの書いてみたから好きなの使え
URLリンク(ideone.com)
URLリンク(ideone.com)
URLリンク(ideone.com)

100:デフォルトの名無しさん (ワンミングク MMe2-SV1A)
17/01/14 13:46:51.12 TZ84v9ShM.net
心が洗われるようなコード

101:デフォルトの名無しさん (ワッチョイ b2ac-vSov)
17/01/14 15:44:02.75 SDa1ObQ20.net
struct A {
int value;
};
auto p1 = new A;
auto p2 = new A();
cout << p1->value << endl; // <- 不定
cout << p2->value << endl; // <- ゼロ
この挙動の違いは規格のどの部分で定義されてるんじゃろ?

102:デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)
17/01/14 15:59:48.64 kCGGguyq0.net
規格を読まずに言うと8.5p11

103:デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)
17/01/14 16:00:41.57 kCGGguyq0.net
嘘を言った
8.5までわかっていて、規格を見たら段落11だった

104:デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
17/01/14 17:01:56.80 pjYHXW8Q0.net
>>98
ありがとうございます.C++11以降の新鮮な書き方ですね
個人的には3番目のラムダ式のものが分かりやすくていいと思いました
using 文を名前スペース以外に使う方法って,なんていうのですか?詳しく調べたいと思います.

105:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 12:13:55.44 OwCHVx6x0.net
>>92 がバカに騙されてないか少しだけ心配

106:デフォルトの名無しさん (オイコラミネオ MMce-mZvv)
17/01/15 12:52:42.89 oZyLvSNYM.net
>>104
何も考えんとアホみたいにstatic使ってるやつよりマシやろ

107:デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)
17/01/15 13:12:23.80 n2HQszSv0.net
マシかどうかではなく問題の有無で語るべきではないか

108:デフォルトの名無しさん (オイコラミネオ MMce-mZvv)
17/01/15 13:19:44.69 oZyLvSNYM.net
>>94
みたいな回答がついてそれに
>>95
とツッコまれるくらいの問題はあるやろ

109:デフォルトの名無しさん (ブーイモ MM8b-STcG)
17/01/15 13:41:07.01 gYQA4gmtM.net
「コンパイル時に定数として評価される」ことと「コンパイル時に解決される」ことを混同している人は結構いると思う。

110:デフォルトの名無しさん (ワンミングク MMe2-SV1A)
17/01/15 13:50:38.16 dIwTpKXnM.net
>>108
どうちがうの?

111:デフォルトの名無しさん (アウアウカー Sa5f-YGRn)
17/01/15 14:48:53.66 Vh4eztBka.net


112:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/15 16:26:13.53 6tnmROhD0.net
>>95
それ C++14 の 6.7p4 ね。で、 3.6.2 p2 にこんな規定もある。
> Together, zero-initialization and constant initialization are called
> static initialization; all other initialization is dynamic initialization.
> Static initialization shall be performed before any dynamic initialization
> takes place.
だから>94の言う「実行時の初期化とは無縁」というのは間違ってないと思う。
あと、ここらへんの文面が C++14 の後に変わってて、>95の引用した文面は消えてる。
URLリンク(wg21.cmeerw.net)

113:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 20:39:17.85 T6BZe6fz0.net
>>111
3.6.2のタイトルを1000回音読してから出直してくれたまえ

114:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/15 20:51:15.65 6tnmROhD0.net
>>112
3.6.2 Static initialization [basic.start.static]
で、これ読んだら話がどう変わると思ってるの?

115:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 21:57:06.54 T6BZe6fz0.net
>>113
なるほど、名前も変えるの見落としてた
なんか支離滅裂な提案してるなと、読み込みを本能的に拒絶してた
>>94が正しくなるということだね
>>86みたいな電波とばしてるからマグレ当たりだろうけど

116:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/15 22:22:21.32 6tnmROhD0.net
>>114
名前?提案?いったい何の話?
>46 からずっと、ほとんど何言ってるのかわかんなくてこわい。
もうちょっと伝わる文面にしてもらえないものか。

あと、「>>94が正しくなる」じゃなくて現行の C++14 でも正しいよ。

117:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/15 22:24:11.33 RPIsJnBb0.net
>>108
今現在の流れにどんな関係があるんだ?
constexprの効力は最適化と関係ないぞ

118:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 22:39:13.98 OwCHVx6x0.net
>>115
少しでも解るなら凄いよ…
俺全く理解出来ないからスルーすると決めたもの。

119:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 22:49:15.83 OwCHVx6x0.net
デタラメばかり言ってるから流石にもう騙される人は居ないと思うけど、一応関数ローカルなstatic変数の初期化タイミングに排他必要ないという記事張っとくよ
ググって日本語で一番上にでた記事だよ
URLリンク(d.hatena.ne.jp)

120:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/15 22:54:49.73 RPIsJnBb0.net
ggrを最高神とあがめる信者か
採用1年目からアレをやらされるとそうなるかねえ

121:デフォルトの名無しさん (ワッチョイ 0fc9-U8Ig)
17/01/15 23:01:04.84 Ah8VE8+/0.net
読点の前に書かれているように
読点の後を鵜呑みにするか試しているのではないか

122:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 23:02:17.22 OwCHVx6x0.net
>>119
検索したらすぐ解ることを読めもしない規格だけ読んで間違って解釈するやつの前でそんな事言えんの?
残酷な奴だな

123:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 23:02:52.43 T6BZe6fz0.net
>>118
そこにも日本語で解説してあるだろ
> gcc 4.0.0から既定動作でスレッドセーフなコードが出力される。(自動的に排他制御コードが埋め込まれる。)
これは最初から言っている(>>24)

124:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 23:08:33.39 OwCHVx6x0.net
>>122
いや、そんな事十分に理解しておりますよ。
自分で排他制御を書く必要ないって書くべきだったか?
どこぞのレスで
> >>86みたいな電波とばしてるからマグレ当たりだろうけど
って書いてるからそれに騙されてる人が居ないか心配で書いただけだよ

125:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 23:14:37.92 T6BZe6fz0.net
>>123
はあ? 自分で排他制御なんてどうやって書くんだよ
バカも休み休み言え

126:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 23:20:48.48 OwCHVx6x0.net
それは
>>84
に言えよ
ってやべー間違ったわアンカー付けたの触ったらダメな奴だった

127:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 23:25:26.18 T6BZe6fz0.net
>>115
>あと、「>>94が正しくなる」じゃなくて現行の C++14 でも正しいよ。
現行はこれだろ
> Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
つまりブロックスコープのstatic storage durationな変数はそのブロックに最初に入る時に初期化、すなわち実行時

128:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/15 23:30:17.30 T6BZe6fz0.net
>>125
>>45
> gcc 4.0.0から既定動作でスレッドセーフなコードが出力される。(自動的に排他制御コードが埋め込まれる。)
こう言う自動的に埋め込まれる排他制御にstd::mutex使えなんて愉快な提案してしたんだろ
> ひんとstd::mutexのコンストラクタはconstexpr修飾されてる

129:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/15 23:35:49.06 6tnmROhD0.net
>>126
before は「前」って意味ね。ブロックに入る「時」とまでは限定されてない。
同時に、定数初期化(を含む静的初期化)はあらゆる動的初期化より前に行われる
とする規定があるのは>>111で挙げたとおり。
これにより、動的初期化(実行時の初期化)との間で順序が問題になることはない。

130:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/15 23:42:21.31 OwCHVx6x0.net
>>92
の質問が
>非ローカルstatic constexpr変数なら問題ないですよね?
だからブロックスコープの話ですら無いんだけどね。

131:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 00:16:22.26 4D4bT+Tb0.net
>>128
ブロックに入る前なので、「実行時の初期化とは無縁」じゃ無いだろ
あと、>>111に書かれてるのは現行は
3.6.2 initialization of non-local variables
の規定だね

132:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/16 00:21:18.11 UB1GTfE40.net
>>121
すぐ解ることって自分で言いながら読めもしないって
言ってる意味わかんねえぜ
検索と規格のどっちが難しいかも逆に認識してるみたいだし
まあ1年目に魔改造されたアタマっちゃそれらしいが

133:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/16 00:39:27


134:.16 ID:5OapSwc60.net



135:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 00:44:11.56 4D4bT+Tb0.net
>>129
実行時の初期化とは無縁の理由として
> 変数にconstexpr付けたらコンパイル時定数になる
をあげている(ローカルでもコンパイル時定数になる)
ところが、コンパイル時定数であってもブロックスコープのConstant initilizationは実行時初期化(ブロックに入る前)なので間違い

136:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 01:02:26.19 4D4bT+Tb0.net
>>132
6.3.2を参照してるのはConstant initializerの定義だけ、
その初期化が行われるタイミングは6.7に書かれている通りブロックに入る前
ロード後、プログラムに制御が移る前かもしれないし、mainが呼び出された後かもしれない

137:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/16 01:17:19.08 5OapSwc60.net
>>134
Constant initializer じゃなくて


138: Constant initialization の定義ね。 その Constant initialization に対する規定がローカル static の場合だけ 無視できるとする根拠が何かあるの?



139:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 02:10:36.59 4D4bT+Tb0.net
> その Constant initialization に対する規定がローカル static の場合だけ
> 無視できるとする根拠が何かあるの?
6.7で参照してるConstant initializationは
3.6.2のConstant initialization is performed:の下で3つ列挙されてる部分
定義であって、初期化のタイミングは参照していない それぞれに別の記述がある
タイミングは何度も引用してるけど6.7は
> Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
3.6.2は
> Together, zero-initialization and constant initialization are called static initialization; all other initialization is dynamic initialization. Static initialization shall be performed before any dynamic initialization takes place.

140:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/16 02:53:47.44 5OapSwc60.net
>>136
別の記述があることが根拠?
それら2つの規定の両方が適用され得るだろうと言ってるんだけど、
なんでどっちか片方しか適用されないと思ってるの?
A ⊃ B の場合に A に対する規定が B にも及ぶってことを認めないの?
(この場合は A = "Constant initialization", B = "Constant initialization of a block-scope entity")

141:デフォルトの名無しさん (オッペケ Sr37-U8Ig)
17/01/16 07:40:40.27 a6XjHitHr.net
>>137
>>134の主張は3.6.2, 6.7のどちらとも矛盾しないように見えるのだが

142:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 08:43:01.09 4D4bT+Tb0.net
むしろ
3.6.2 initialization of non-local variables
と、明確に分けられてる項の規定が全部適用されると言ってるのが不思議過ぎる
URLリンク(wg21.cmeerw.net)もバグ指摘されてるし、前途多難だ

143:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/16 09:38:47.49 5OapSwc60.net
>>138
タイミングについての言及だけ読めばそうだけど、彼は 3.6.2 にある静的初期化一般に対する規定が
ローカル static の場合に限っては及ばない、とする主張をしている。

新しい理由付けも出なくなって平行線みたいだし、次期規格ではざっくり改定される文面の話だし、
もういいかな。

144:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 10:48:30.43 4D4bT+Tb0.net
3.6.2のnon-localに関する規定は6.7で「そのブロックに入る前」と上書きされてるだろ
3.6.2がlocal, non-local問わずに有効なら「そのブロックに入る前」と言う規定は矛盾する

145:デフォルトの名無しさん (スプッッ Sdf2-9KqD)
17/01/16 11:01:51.83 ULOq3Vpcd.net
URLリンク(cpprefjp.github.io)
atomicを使ったspinlockなるmutexの例があるのですが
これを再帰ロック可能なrecursive_spinlockにするには
どのように実装すればいいですか。

146:デフォルトの名無しさん (オッペケ Sr37-U8Ig)
17/01/16 19:11:32.79 a6XjHitHr.net
>>141
「ブロックに入る前、且つ、すべての動的初期化より前」
規格がUNKOなのはさておき、論理的にどこも矛盾していないのでは?

147:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/16 19:40:06.27 LWQyQSVNM.net
仮にブロックスコープのconstexpr変数が実行時に初期化されたとして、どんな問題が発生するという主張なん?

148:デフォルトの名無しさん (ワッチョイ 3298-los8)
17/01/16 22:29:50.06 UB1GTfE40.net
翻訳時に評価せよと指定したものが
実行時に評価されるようなら
コンパイラを窓から投げ捨てて
アセンブラか機械語を使うしかない
int main() { return 1; }で0を返されるのと同じで
もはや何を言っても無駄、根本的に話にならないということ

149:デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
17/01/16 23:04:39.73 4D4bT+Tb0.net
>>145
初期化の意味がわからない子は参戦しないように

150:デフォルトの名無しさん (オッペケ Sr37-U8Ig)
17/01/16 23:23:13.66 +uglxnZcr.net
>>144
特に実害はなくても>>94の『実行時の初期化とは無縁』が真実でないことを問題と考える者がいるのだと思っていた

151:デフォルトの名無しさん (ワントンキン MMe2-dqLr)
17/01/17 03:28:47.43 tvPWGsMMM.net
なんというか糞の役にもたたんな
今現在そんな実装のコンパイラがあるわけでもなし、今から実装するにしてもわざわざ複雑にして実行速度落とすような実装にするとも思えないし

152:デフォルトの名無しさん (ワッチョイ a258-rG+u)
17/01/17 04:25:31.38 ngprCvv90.net
最近猫でもわかるって奴読んで独学でちょくちょく勉強してんだけど、こんまま独学でプログラミング学んでったらオセロくらいなら作れるようになる?どんくらいかかるかな

153:デフォルトの名無しさん (ドコグロ MM0a-8ZdN)
17/01/17 07:56:18.72 ueZ17iDzM.net
>>144
組み込みじゃ、ROMになるかRAMになるか大きな違いが出るな

154:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/17 13:27:45.10 mkv39b380.net
>>150
constすら付けなくても初期値が決まっていて変更する可能性のあるコードが無ければ最適化で定数に置き換えられる時代にそんな事気にするんだ?

155:デフォルトの名無しさん (ワッチョイ b624-los8)
17/01/17 13:30:54.01 Pbl2vPGV0.net
>>146
おい間抜け
どこかに初期化って書いてあったか?
人を小馬鹿にしたつもりだろうがブーメラン刺さってるぞw

156:デフォルトの名無しさん (ワッチョイ 3e5b-vSov)
17/01/17 22:57:29.19 FvzokP9y0.net
>>149
オセロくらいなら excel と vba で一週間くらい集中すればできんじゃないかね。

157:デフォルトの名無しさん (ワッチョイ 4f17-0Plu)
17/01/18 01:28:58.03 9W34sy+b0.net
>>153
アスペ

158:デフォルトの名無しさん (ワッチョイ 6296-8ZdN)
17/01/18 01:54:34.51 an9uI7uk0.net
>>151
定数が実行時に初期化されれば、それはROMじゃなくてRAMに配置されてるってことだろ?そりゃ組み込みなら気にならないほうがおかしい

159:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/18 02:36:42.52 n1DpjkbT0.net
>>155
int f(){static int v=5;return v;}

int f(){return 5;}
が最適化後は一緒になるって言ってんの。
そして
static constexpr int v=...;
にしたらそのvの初期化値はコンパイル時に求まるし変更出来ない。ここまで言えば最適化後にどうなるか解るよね?
まぁ、constexprの場合は最適化しなくてもなんだけどさ

160:デフォルトの名無しさん (ワッチョイ b2cf-YL17)
17/01/18 03:40:09.16 2vnfhfI50.net
>>156
>>150>>144の言った「仮に・・・」へのレスなんだから現実のコンパイラがどうなってるかは関係ないと思われ

161:デフォルトの名無しさん (ドコグロ MM9f-lGK7)
17/01/18 07:14:44.33 KfZHaLf7M.net
定数であることと ROM に置くかどうかは別の話だし

162:デフォルトの名無しさん (ワッチョイ 573c-U8Ig)
17/01/18 08:00:45.61 +X3tak3t0.net
>>156
>最適化後は一緒になるって言ってんの
デバッグ中の挙動を無視されると困ります

163:デフォルトの名無しさん (ワッチョイ 677b-dqLr)
17/01/18 08:42:08.41 n1DpjkbT0.net
>>157
ごもっとも。規格がどうかも関係なかったね。
>>159
なんで?

164:デフォルトの名無しさん (ブーイモ MMd2-a69X)
17/01/18 08:52:41.79 ZS0nd/enM.net
>>158
定数であるからromにも置けるって話なんで関係ない訳がない。

165:デフォルトの名無しさん (ドコグロ MM4e-lGK7)
17/01/18 18:41:42.82 Abs9KEqJM.net
>>161
> 定数であるからromにも置ける
だからと言ってROMに置くとは限らない
って話なんだがお前には難しすぎたか?

166:デフォルトの名無しさん (アウアウカー Sa5f-YGRn)
17/01/18 21:27:37.78 4GI0Tt+ca.net
このスレを見て、C++って永遠に喧嘩できて寂しくない言語だと判った

167:デフォルトの名無しさん (ワッチョイ 3e5b-vSov)
17/01/18 21:56:10.60 qB5vepR/0.net
こういうやりとり見てるとやっぱリーナスの c++観は正しいなと思う。

168:デフォルトの名無しさん (ブーイモ MM8b-a69X)
17/01/18 23:18:53.09 0GLHJE+5M.net
>>162
置けるってのは置くこともできるって意味だが、随分日本語不自由なやつだな

169:デフォルトの名無しさん (ドコグロ MM7f-j6UX)
17/01/19 06:46:32.74 JadLiFtgM.net
>>165
> 随分日本語不自由なやつだな
「置ける」と言う可能性の話と「置く」と言う実際の動作の区別がつかない奴に言われても...
でっかいブーメラン乙としか言いようがないわな w

170:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/19 06:57:37.47 bO+XZlhy0.net
何を言い争ってんのか解らん
直値でもROMに置けると言えるだけでなんの違いも無いんだが。

171:デフォルトの名無しさん (ワッチョイ 637b-voKO)
17/01/19 08:39:21


172:.82 ID:4Gh/dudO0.net



173:デフォルトの名無しさん (スプッッ Sd1f-xrkK)
17/01/19 10:16:43.40 CldDY8MLd.net
int a=100;
int&& b=std::move(static_cast<int>(a));
b=200;
aは100、bは200になるのですが
キャストすると必ず一時オブジェクトが生成されるのでしょうか
環境によってaもbも200になったりしますか。

174:デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
17/01/19 10:39:40.20 gPdsJo1i0.net
>>169
必ず生成される。
URLリンク(timsong-cpp.github.io)

175:デフォルトの名無しさん (スプッッ Sd1f-xrkK)
17/01/19 10:50:03.86 CldDY8MLd.net
わかりました

176:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/19 11:10:02.61 ipEwSksA0.net
次に、「ボクのパソコンではaが200になるんてすけど」というレスが来るに違いない

177:デフォルトの名無しさん (ドコグロ MMff-j6UX)
17/01/19 12:54:31.63 Ccs4bPhGM.net
>>167
わからないなら絡んでくるなよ w

178:デフォルトの名無しさん (オッペケ Sr87-mcUU)
17/01/19 14:28:16.75 oLhGNghYr.net
>>169
>環境によってaもbも200になったりしますか
Yes

179:デフォルトの名無しさん (ワッチョイ bfcb-SmTw)
17/01/19 20:26:21.94 +cE5RWPo0.net
どっちですか

180:デフォルトの名無しさん (ワッチョイ cf24-RK9q)
17/01/19 21:29:45.00 x+icVyy10.net
>>173
わからないなら絡まれたフリをするなよw
おまえに教えを請うようなクズの中のクズはさすがにこのスレにもいないだろうから

181:デフォルトの名無しさん (ドコグロ MMff-j6UX)
17/01/19 21:35:22.14 ylWIT8ZQM.net
>>176
わからんって言ってるのは俺じゃなくて >>167 なんだが...
色々お前には難しすぎたか? w

182:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/19 21:54:21.33 bO+XZlhy0.net
何を言い争ってんのかわからん。

183:デフォルトの名無しさん (ワッチョイ ff6c-L1Ju)
17/01/19 21:55:13.80 f8wSWc2J0.net
いいのよ

184:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/19 21:56:39.26 bO+XZlhy0.net
>>179
ありがとう

185:デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
17/01/20 02:35:51.43 WXRyG1p+a.net
最近この喧嘩は自演じゃないかと思ってる

186:デフォルトの名無しさん (ワッチョイ f302-JQ1R)
17/01/20 08:56:02.47 1CC8R4dK0.net
ここで出た話題のTips集を出したら売れるんじゃないかと思えてきたわ

187:デフォルトの名無しさん (スプッッ Sd1f-ddg/)
17/01/20 18:53:55.75 zIVGmPHgd.net
32bitのソフトを64bit対応させようかなって考えてるのだけど
printf, winapi, _t型変数以外気を付けることある?俺これやってはまったわみたいなのが知りたい

188:デフォルトの名無しさん (ワッチョイ cf24-RK9q)
17/01/20 23:36:02.52 GZ99lyBK0.net
>>168
いーや、初期値==評価とは考えずに書いた
事実とおまえの考えは完全が食い違っているんだよ
せいぜい妄想の世界で自画自賛してろナルシスト

189:デフォルトの名無しさん (ワッチョイ 637b-voKO)
17/01/21 01:01:56.19 v+i75+9D0.net
>>184
引っかかりやがった
初期化の話題で評価と言い出しのはテメーだ バーカ

190:デフォルトの名無しさん (ワッチョイ cf7b-5ScM)
17/01/21 01:52:25.87 RmTA4cQd0.net
江添はなんて言ってる?

191:デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
17/01/21 11:02:38.55 Bf4L6OzOa.net
それワイのやつや!

192:デフォルトの名無しさん (ワッチョイ cf24-RK9q)
17/01/22 00:06:25.08 LwmXYJhf0.net
>>185
だから初期化ってどこに書いてあるんだよ
幻視か? だからリスパダールちゃんと飲めとあれほど・・・

193:デフォルトの名無しさん (ワッチョイ cf7b-rTuY)
17/01/22 00:24:56.56 77/TNfJH0.net
>>182
こんなのどうやってまとめるんだ…

194:デフォルトの名無しさん (ワッチョイ bfcb-xrkK)
17/01/22 02:31:51.43 hchjfZjx0.net
江口はなんて?

195:デフォルトの名無しさん (ワッチョイ 6f56-3qL8)
17/01/22 02:40:24.62 rrJzCAZR0.net
教えて下さい。
環境は VisualC++2015 x64 です。
与えられた文字列の引数について、1文字が1バイトなのか、2バイトなのかで呼び出す関数を切り分けたいと思い、SFINAE で以下のようなコードを書きました。
しかし、こののコードで「関数A」を呼んで欲しいのに、「関数B」が呼ばれてしまいます。
- なぜ関数Bが呼ばれるのか
- 1文字のバイト数で切り替える手段
この2点について、教えて下さい。よろしくお願いします。
extern void* enabler;
// 関数A (本当は1文字が1バイトの時用の関数)
template <typename STR, std::enable_if_t<sizeof(decltype(std::remove_all_extents<STR>::type()[0])) == 1> *& = enabler>
void hoge(const STR&)
{
}
// 関数B (本当は1文字が2バイトの時用の関数)
template <typename STR, std::enable_if_t<sizeof(decltype(std::remove_all_extents<STR>::type()[0])) != 1> *& = enabler>
void hoge(const STR&)
{
int tmp;
tmp = sizeof(decltype(std::remove_all_extents<STR>::type()[0])); // どういう訳か tmp == 1 となる
}
void main()
{
std::string s;
hoge(s); // 1バイト版である、関数Aを呼んで欲しい
}

196:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-o4cX)
17/01/22 03:05:41.88 NkQzBql/K.net
>>191
1 charは常に2バイトではない。あなたはマルチバイト文字列の基礎を理解していないようだ。
マルチバイト文字列中の複数のcharが一文字になっているか否かは、
文字列の先頭から1charごとにcharの値の範囲を確認し、lead byteかtrail byteかを判定するしかない。

197:デフォルトの名無しさん (ワッチョイ bfcb-SmTw)
17/01/22 03:12:07.68 hchjfZjx0.net
ビルド通らないからなんでかはわかんない
template <typename STR, std::enable_if_t< sizeof( typename STR::value_type ) == 1, std::nullptr_t > SFINAE = nullptr >
void hoge(const STR&)
{
}
template <typename STR, std::enable_if_t< sizeof( typename STR::value_type ) != 1, std::nullptr_t > SFINAE = nullptr >
void hoge(const STR&)
{
}
これでいけない?

198:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK47-o4cX)
17/01/22 03:12:21.28 NkQzBql/K.net
型情報からはマルチバイト文字列のlead/trailに関する情報は得られない。よって、各charの値の範囲を実際に確認しないと、わからない。

199:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/22 07:14:06.66 7mC+0LM10.net
>>192
日本語が理解できないボケ老人は去れ

200:デフォルトの名無しさん (ワッチョイ a37d-wsSS)
17/01/22 08:04:55.45 5o7PrILb0.net
>>191
例のコンパイラがぶっ壊れてるんだろうね
gccは期待通り
URLリンク(ideone.com)

201:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/22 08:28:45.75 gigvK4EO0.net
オーバーロードでよくね

202:191 (ワッチョイ 6f56-3qL8)
17/01/22 08:37:36.49 rrJzCAZR0.net
>192-196
ありがとうございます。
>193
確かに期待通りの動作をします。
ただ、この先 MFC の CStringA, CStringW, 生配列などを仮引数として与えたいため、operator[] の戻り値で判定出来ないか考えていました。
>196
なるほど。コンパイラの問題くさいので代替案を考えてみます。
ありがとうございました。

203:191 (ワッチョイ 6f56-3qL8)
17/01/22 08:50:18.71 rrJzCAZR0.net
>192-197
下の様に、sizeof, decltype を移動させたら、あっさり動きました。失礼しました。
template <typename STR>
struct helper
{
enum {
item_size = sizeof(decltype(STR()[0])),
};
};
extern void* enabler;
// 1バイト版
template <typename STR, typename std::enable_if<helper<STR>::item_size == 1>::type *& = enabler>
void hoge(const STR&)
{
}
// 2バイト版
template <typename STR, typename std::enable_if<helper<STR>::item_size == 2>::type *& = enabler>
void hoge(const STR&)
{
}
void main() {
std::string a;
hoge(a); // 1バイト版
std::wstring w;
hoge(w); // 2バイト版
}

204:デフォルトの名無しさん (ワッチョイ 237b-rTuY)
17/01/22 09:58:50.62 iEDujvJA0.net
URLリンク(youtu.be)

205:デフォルトの名無しさん (ワッチョイ f302-JQ1R)
17/01/22 13:37:19.35 gnARoY8z0.net
CStringとかまだ存在してたのかよ

206:デフォルトの名無しさん (ワンミングク MM9f-aDhR)
17/01/22 14:40:31.27 hBhrTyQGM.net
URLリンク(chrome.google.com)

207:デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
17/01/22 15:06:13.66 paMlvMvI0.net
>>199
sizeof(decltype(STR()[0])) って sizeof(STR()[0]) と何か違ったっけ?

208:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/22 15:53:04.56 7mC+0LM10.net
mainがvoidなレベルの人にそんな突っ込みをしても…

209:デフォルトの名無しさん (ワッチョイ cf24-RK9q)
17/01/22 20:43:26.81 LwmXYJhf0.net
戻らないmainについてもガタガタ言っちゃう人がねえ

210:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/22 22:57:58.70 gigvK4EO0.net
mainのreturnは省略したら0が返ることが保証されている

211:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/22 22:59:58.14 7mC+0LM10.net
>>206
当たり前のことを言い出して、いきなりどうした

212:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/22 23:01:08.57 gigvK4EO0.net
>>207
戻らないmain(?)へ宛

213:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/22 23:14:20.58 7mC+0LM10.net
>>208
なるほど理解した
『戻らないmain』は[[noreturn]]のことだと思ったので理解できずスルーしていた
人に『リスパダールちゃんと飲めとあれほど』と言って自分が飲み忘れたのかと

214:デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
17/01/22 23:26:22.29 7mC+0LM10.net
>>203
CStringは知らないが、stringは恐らく同じ
sizeof(STR()[0])
 →sizeof (char &型の左辺値)
 →sizeof (char)と同じ
sizeof(decltype(STR()[0]))
 →sizeof (decltype(char &型の左辺値))
 →sizeof (char &型)
 →sizeof (char)と同じ

215:191 (アウアウカー Sac7-/Qox)
17/01/23 09:48:36.48 SwVOU3U8a.net
>203
vc++2015で deltype をぬくと、関数に[] は出来ません、みたいなエラーで通りませんでした。
STR()をコンストラクタではなく、関数と思ってるんだと思います。

216:デフォルトの名無しさん (オッペケ Sr87-mcUU)
17/01/23 17:40:29.94 oJYEiyR6r.net
宣言に解釈できるときは宣言として解釈
みたいなルールだっけ

217:デフォルトの名無しさん (ワッチョイ ff9f-tc54)
17/01/23 18:40:50.71 FReCyx8S0.net
コンストラクタ ⊆ 関数

218:デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
17/01/23 19:40:02.64 Ij4EmhsFa.net
アンダーバー要らなくね?

219:デフォルトの名無しさん (ワッチョイ ffcc-DOWB)
17/01/24 03:03:03.61 ch78KtiL0.net
MFCとか何処のバカが設計したんだろうな
とっくに絶滅しているもんだとおもっていたぜw

220:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/24 03:50:21.48 nvNd8iP10.net
それより優れたものを設計してから言えよな

221:デフォルトの名無しさん (ワッチョイ f302-JQ1R)
17/01/24 03:56:08.97 Af36V4kC0.net
>>216←今日のバカ

222:デフォルトの名無しさん (ワッチョイ 137b-Eksc)
17/01/24 11:11:02.03 dVVoZ7Su0.net
MFCが作られた時代を考えられないやつのほうがバカなんだよなあ
あれはWin32APIの薄いラッパでしかないから
文句あるなら別のライブラリを使えばいいだけの話、それも出来ないならやっぱりお前が無能でバカ

223:デフォルトの名無しさん (スップ Sd1f-xrkK)
17/01/24 11:33:11.15 9X3I9Jqtd.net
int (*func)(int) = &hoge;
func = nullptr;
funcへの代入をできないようにconst付けたいのですが
どう書けばいいですか。
usingやtypedefは使わない方法でお願いします。
あとメンバ関数への参照はどう記述すればいいですか
int (hage::*func)(int) = &hage::test;
の参照版です

224:デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
17/01/24 11:41:16.20 GCEfrzc1a.net
益のない煽りはよしなよ(・ิω・ิ)

225:デフォルトの名無しさん (ワッチョイ 7330-J7L1)
17/01/24 12:11:20.65 ekWjtoGq0.net
>>219
int (* const func)(int) = &hoge;
int (piyo::* mf0)(int) = &piyo::test;
int (piyo::* & mf1)(int) = mf0;
int (piyo::* const & mf2)(int) = &piyo::test;

226:デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
17/01/24 12:13:02.49 NfDXKGen0.net
>>211
そっか sizeof だと式と型の曖昧さが問題になるけど decltype なら式しか取らないから曖昧さを消せるのか。

227:デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
17/01/24 12:13:28.46 NfDXKGen0.net
>>219
[dcl.mptr]/3 (Note) "There is no "reference-to-member" type in C++."

228:デフォルトの名無しさん (スップ Sd1f-xrkK)
17/01/24 12:19:40.53 9X3I9Jqtd.net
>>221
それだとメンバ関数のポインタの参照になってませんか
int (&func)(int) = hoge;
のメンバ関数版はできないでしょうか
constの件はうまくいきました

229:デフォルトの名無しさん (ワッチョイ ffd9-iijN)
17/01/24 13:24:18.69 kmpgWA440.net
>>224
thisが必要になるから無理なんじゃないの
それよりクラス内でメンバ関数へのポインタを書くとthisが必要になる

230:デフォルトの名無しさん (ワッチョイ 6f5b-OQjX)
17/01/24 21:23:55.09 GIi5sfFU0.net
一生こういう些末なところに引っかかって
中身を書けない人生を送るんだろうな~

231:デフォルトの名無しさん (ワッチョイ cf42-Wde1)
17/01/25 00:27:17.93 I9ZrCxSQ0.net
uint8_tとbasic_ifstream組み合わせるといろいろ面倒なんだけど、みなバイナリファイル読み込むときどうしてんの?普通にchar使っ使う?

232:デフォルトの名無しさん (オッペケ Sr87-mcUU)
17/01/25 00:35:21.87 KGxAJ6V6r.net
バイナリでchar使うのは30年前の老人の発想

233:デフォルトの名無しさん (ササクッテロレ Sp87-Taza)
17/01/25 00:51:14.53 /+qbj4+Vp.net
fopenでおk

234:デフォルトの名無しさん (ワッチョイ 037b-rTuY)
17/01/25 01:30:42.64 5KwEWhG70.net
他の型をバイト列として解釈するときは(unsigned )charしか許されてないから普通にchar使う

235:デフォルトの名無しさん (ワッチョイ ff17-SmTw)
17/01/25 02:33:17.29 LUWqNFoa0.net
fgetc() の戻り値を直接 char 変数に代入して EOF(=-1)判定するヘマ。あるある

236:デフォルトの名無しさん (ワンミングク MM9f-cBXx)
17/01/25 04:12:15.84 nJO+CT7AM.net
ねぇよ

237:デフォルトの名無しさん (アウアウウー Sa67-OTU1)
17/01/25 15:31:39.49 uJriqNlza.net
fopen、fgets系は使わないな。処理をFILE*依存にしたくない
>>230
>>228が言ってるのはそういう意味のcharじゃないでしょ

238:デフォルトの名無しさん (ワッチョイ cf24-RK9q)
17/01/25 21:44:43.91 gbQNFS3L0.net
FILE*に依存しないとしてじゃあ何を使うんだ?
intにも依存したくないのか?

239:デフォルトの名無しさん (ワンミングク MM9f-cBXx)
17/01/25 22:01:41.63 nJO+CT7AM.net
fileno して read/writeかな

240:デフォルトの名無しさん (ワッチョイ aacc-X95Y)
17/01/26 00:52:19.97 GN6UrdAH0.net
おまいら相変わらず抵レベルな話題しているな

241:デフォルトの名無しさん (ワッチョイ 6f02-FuHd)
17/01/26 02:07:00.45 cRvsGxqc0.net
高レベルな人が2ch何か見てるわけないからな

242:デフォルトの名無しさん (ワッチョイ 2613-AZYz)
17/01/26 06:24:12.10 XBNxNxvo0.net
>>237
FILE * を使う人はどうして2chをみないのか?iostream な人はどうなるのか?

243:デフォルトの名無しさん (スップ Sdca-kwgD)
17/01/26 08:04:45.44 fFyxUIyid.net
プログラミングにはCBDオイルというのが有効だそうです。アイデアが治療に有効するので安倍内閣総理大臣も持病に使っているそうです。
ビル・ゲイツもこれで億万長者になれました

244:デフォルトの名無しさん (JP 0H16-T3y8)
17/01/26 13:11:34.03 lD0mvySBH.net
低レイヤーな釣りですね

245:デフォルトの名無しさん (ワッチョイ 3e24-XYXB)
17/01/26 18:22:33.18 A9/xu7Tb0.net
物理層?

246:デフォルトの名無しさん (ワッチョイ aacc-X95Y)
17/01/29 15:48:31.23 Hm/zwJzS0.net
この処理低レベルだねぇと言われてムキーっとなるヤツ→素人童貞
この処理低レベルだねぇと言われて得意げにほくそ笑むヤツ→玄人

247:デフォルトの名無しさん (ワッチョイ af7b-FuHd)
17/01/29 16:07:03.50 K+/fnyLa0.net
すみません 低レベルな処理がが好きなんで

248:デフォルトの名無しさん (ワッチョイ 1bc9-kHcU)
17/01/29 16:12:04.90 2ZaFXkbr0.net
環境・処理系固有の事情やバグに悩まされてばかりで
幸せな顔をして仕事をしている人を見たことがない

249:デフォルトの名無しさん (アウアウカー Sa5b-seiz)
17/01/29 16:31:19.45 sujTTxNda.net
低レイヤって言えばいいのよ

250:デフォルトの名無しさん (ワッチョイ 0ac0-H6k8)
17/01/29 22:01:55.93 F8NpKYaN0.net
コスプレイヤーの仲間かな

251:デフォルトの名無しさん (ワッチョイ 3e24-BAqL)
17/01/30 21:07:15.53 P5tJpKPw0.net
>>228
std::fstream::readの引数が【なぜ】charなのか
理解できないアフォ?

252:デフォルトの名無しさん (ワッチョイ 6fc9-a+zf)
17/02/01 22:16:18.72 zf0e/zUB0.net
30年前の設計だからだ!

253:デフォルトの名無しさん (ワントンキン MM1a-9Rjx)
17/02/01 22:52:40.44 mWAIN14mM.net
むしろバイナリでchar以外何使うんだ?

254:デフォルトの名無しさん (ワッチョイ 137b-1ST5)
17/02/02 00:40:35.30 kju30PyH0.net
いやバイナリならどう読もうが書こうがいいと思うが。
てか疑問の意味がわからん。

255:デフォルトの名無しさん (ワッチョイ 7fcf-1ST5)
17/02/02 01:35:32.10 FXYEZ0RW0.net
>>250 そんなんじゃ type based aliasing rule に殺されるよ

256:デフォルトの名無しさん (ワッチョイ 1302-1ST5)
17/02/02 01:58:08.09 hMTSyXzS0.net
何か動作がおかしいときになってから考えれば良いんだよ
標準的な環境では考える必要は無いこと

257:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/02 22:10:32.43 1pIxEkoa0.net
真性アフォが早くも三名か。嘆かわしい。

258:デフォルトの名無しさん (オッペケ Sra7-dUno)
17/02/03 08:10:44.86 HxuiJzZXr.net
真性のアフォの内の二人くらいは
たいてい片山の自演

259:デフォルトの名無しさん (スップ Sd9f-aC2u)
17/02/03 13:51:28.33 +x5EsLXNd.net
新卒一年目で過去のコードをバージョンアップさせる業務についてるんだけど
会社のコードってなんであんなにdefine切ったりtypedefしまくってるんだ?
可読性低くない?始めて作った人には良いだろうけど後のこと考えるとデメリットなんではって思うんだけど...

260:デフォルトの名無しさん (ワッチョイ 6f6c-i1/f)
17/02/03 13:57:14.34 Fv/X2f+d0.net
場合によるからなんとも

261:デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)
17/02/03 15:21:22.58 cyynpkXi0.net
一年目か凄いね

262:デフォルトの名無しさん (アウアウカー Sae7-mIyn)
17/02/03 16:26:23.88 oWJS3iiDa.net
スマン、片山って誰ンゴ?

263:デフォルトの名無しさん (スップ Sd9f-aC2u)
17/02/03 17:44:58.85 +x5EsLXNd.net
>>256
それを言っちゃあおしまいだよ...と言いたいけどまさにそうか
windowsapiが絡んでくると本当にわけがわからなくなる
MSDNも読みにくいし

264:デフォルトの名無しさん (ブーイモ MMc7-plQq)
17/02/03 19:35:01.87 8SRwU46KM.net
参考までに、どんなdefIneやtypedefなん?

265:デフォルトの名無しさん (ワントンキン MM1f-fOGj)
17/02/03 21:14:55.23 DgoKILm5M.net
>>255
情報が増えるtypedefは正義
たとえば、
typedef std::vector<int> personal_id_array_type;
減るtypedefはゴミ
たとえば、
typedef std::vector<int> array_type;

266:デフォルトの名無しさん (ワッチョイ a3a6-0MWP)
17/02/03 21:24:44.53 2s9sq5BM0.net
>>261
情報の増減がどこにあると?

267:デフォルトの名無しさん (ワッチョイ 937b-aC2u)
17/02/03 21:43:49.02 flkT/o5k0.net
>>260
>>261の前者・後者両方ともある
あと色々な名前で__stdcallが切られてたりして読むのがきつい

268:デフォルトの名無しさん (ワッチョイ a37b-jpzQ)
17/02/03 22:05:00.81 ubtIaYbs0.net
ちなみにお前らの思うきれいなソースって具体的にどれよ

269:デフォルトの名無しさん (スッップ Sd9f-oUAv)
17/02/03 22:11:40.27 7t2mdctmd.net
glm

270:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/03 22:55:16.36 aXFSiqlm0.net
261が言ってるのは
システムハンガリアンとアプリケーションハンガリアンてことだ
ハンガリー記法に限らず意味づけと言うまでもないことを
どう位置づけるべきかってこと

271:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/03 23:39:20.39 CYbB7nGp0.net
>>255
変更しやすくする為じゃないの?
一箇所でそれ関連を纏めて変更したいんでしょ。
今は偶々同じ std:vector<int> なだけで。

272:デフォルトの名無しさん (ワッチョイ 1302-1ST5)
17/02/04 00:17:30.98 DV7gEIN40.net
m_ulDataCntとか全く意味を持たない変数名が多用されてて辛いわ
コメントも無い

273:デフォルトの名無しさん (ワッチョイ ffc0-Sup+)
17/02/04 05:48:10.84 /r5Uxr2+0.net
>>264
ソースは俺

274:デフォルトの名無しさん (ワッチョイ 937b-aC2u)
17/02/04 06:49:15.89 JWHU8o9P0.net
>>267
なんか小難しい
定義されたものをさらに定義して
さらにさらに定義してってのをやってるのも同じなんかな?
見たことない型を追うだけで何ヵ所も追わないといけなくて大変
コメントもないし

275:デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)
17/02/04 07:32:17.23 uizo/+L30.net
>>268
字面だけで推測するなら m_ulDataCnt は
m_ クラスのメンバ変数である
ul unsigned long
DataCnt データの個数
てな感じに見えるね。
元のソースファイルが一貫した命名規則を使ってれば
それがどんな規則であれ、見てるうちに慣れてくると思うよ。

276:デフォルトの名無しさん (ワッチョイ 7fcc-ysPd)
17/02/04 07:39:17.67 6QMeFViK0.net
クソみてぇな命名規則

277:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/04 08:42:25.92 UEIbCXwH0.net
>>270
基本的にはそうでしょ。
ある物をdoubleにするかfloatで済ますかという場合、系統毎にtypedefをしてそれを使うしかない。
クラスの継承も同じだと思うけど。
というか読み方間違ってるだろ。まずは縦に読まずに横に読めよ。
そしてそれ以前に上司に聞けよ。
どのみちソースは出せないのだろうから、ここでいくら


278:聞いてもかなり憶測を含んだ回答しか得られない。 コメントが無いのを問題に思うのなら、コメントを付けるのもお前の仕事だろ。 ただ正直言って、m_ulDateCntは>>271の言うとおりだろうし、そんなところにコメントがあっても嬉しくない。 多分君とそのソースでコメント作成基準に大幅にずれがある。 それは上司と打ち合わせしないと駄目だ。 最近の傾向としては、「コード読めば分かることをコメントするな!」みたいなのがあるが、 君はまさにその類のコメントを付けようとしている。 ただ逆に、何事であってもコメントを付けて二重化し「間違っていない」事を示す文化の所もある。 いずれにしても合わせるしかないんだから上司に聞け。



279:デフォルトの名無しさん (ワッチョイ a37b-jpzQ)
17/02/04 08:49:53.56 XS0fIkHD0.net
とりあえずシステムハンガリアンは糞

280:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/04 10:35:39.62 BOsvOfBI0.net
doubleかfloatかに迷いがあるときはtemplateだろjk

281:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/04 20:11:06.99 tL9rMbFt0.net
>>271
こういうの読めるようになりたい
アンダーバーとかなんか特徴あるんかね?

282:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK67-DkDD)
17/02/04 20:13:21.29 sK4bvJ1nK.net
>>276
MFCのソース見れば時代遅れのハンガリアンが見れる。

283:デフォルトの名無しさん (ワッチョイ 7fcc-ysPd)
17/02/04 20:29:05.55 6QMeFViK0.net
MSのバカ社員が勘違いしてシステムハンガリアンが出来た

284:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/04 20:32:51.09 UEIbCXwH0.net
>>276
むしろどこが読めないんだ?
271以外の解釈はないだろ。

285:デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)
17/02/04 20:36:47.66 pJMir97a0.net
>>276
パターン認識って言うか慣れでしょ
いろんなソース見てりゃだんだんなれてくるよ

286:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/04 20:37:44.99 tL9rMbFt0.net
ハンガリアンってなんだ
ってレベルで初めて見るわ
>>279
それは規則とか法則とか知ってるから読めるんだろ
大まかに言えば経験が違いすぎる
なら読めよって話だけどさ

287:デフォルトの名無しさん (ワッチョイ 1341-qcXh)
17/02/04 20:41:51.99 URlnQv8F0.net
場合によってはハンガリアン記法にすべきものもあるかもしれないけど
全ての変数に対してやるのはどうなんでしょ?

288:デフォルトの名無しさん (ワッチョイ 1302-1ST5)
17/02/04 21:08:08.22 DV7gEIN40.net
クラスの先頭にCを付けるのだけは全くの無駄だからやめて

289:デフォルトの名無しさん (ワッチョイ a37b-jpzQ)
17/02/04 21:13:17.38 XS0fIkHD0.net
>>282
それでもulとか環境によってサイズが変わる名前付けるのイミフだけどな

290:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/04 21:14:27.75 UEIbCXwH0.net
>>281
いや多分、そのソース見たらそんなんばっかだから大体分かると思うぞ。
一応説明しておくと、
m_: method_ の略。(member_かも?)
頭に付けたらインテリセンスでソートされて便利とか言っていた奴もどこかのスレにいたはず。
(メソッドなのかフィールドなのか一目瞭然ということらしい。既に出ているが頭のCもそういう理由)
他でもルール的に「頭に」何か付けるのはよくある話。
MSのVC++のローカル拡張なら __int64 とか、頭に __(二重アンダースコア) がついている。
googleだとprivateは頭に _ だったかな?
(なおgoogleはメソッドは動詞、フィールドは名詞を使えとか言っていたはず)
サフィックスはユーザーが勝手に使い、プリフィックスはシステム側でルールとして使う。
ulはそのまま unsigned long の略。Cなら元の型は数種しかないから想像はつくだろ。
DataCntはDataCountの略。短くする時には母音(aiueo)を抜く。(子音だけでも何となく分かるから)
そんなに経験の差って程の物でもないと思うが。
もっとも俺は無駄に頭に付けたり略したりしないので、このルールなら嫌いだが。

291:デフォルトの名無しさん (ワッチョイ a37b-jpzQ)
17/02/04 21:24:54.38 XS0fIkHD0.net
補足
* グローバルスコープでアンダースコアで始まる
* アンダースコアで始まって大文字が続く
* 二重アンダースコアを含む
に合致する名前は規格で処理系によって予約されてるからコンパイラとそれに付属する標準ライブラリーを実装する人以外は使っちゃダメ

292:デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)
17/02/04 21:42:33.76 pJMir97a0.net
>>285
> m_: method_ の略。
そんなわけないだろ...

293:デフォルトの名無しさん (ワッチョイ ffc0-Sup+)
17/02/05 00:12:45.37 NucUcCyo0.net
グーグルはメンバ変数の最後に_
クソ過ぎわろた

294:デフォルトの名無しさん (ワッチョイ 7fc1-AkR4)
17/02/05 00:14:15.03 nBEZPMY50.net
>>288
結構あるくね?
インスタンスに付けるてのもよく見る

295:デフォルトの名無しさん (ワッチョイ 3342-fOGj)
17/02/05 00:41:54.55 mLcywPgQ0.net
>>288
え、なんで?
this->でもいいけど

296:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/05 00:56:14.90 6qCMRDqV0.net
アンダーバーを変数に付けるのは慣れないと気持ち悪く見えるな
今は慣れたけどなんでついてるかなんて考えたことがない

297:デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)
17/02/05 00:58:41.61 PGIZ+KFZ0.net
>>289
そこそこある
>>288 が井の中なだけ

298:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/05 00:59:09.67 6qCMRDqV0.net
途中で投稿しちゃった
考えたことないなんて人も居るんじゃないの?と...俺が考えなさすぎてるだけか...
>>285
二重アンダーバーもよく見かけるけどなんでわざわざ二重つけてんだよ!!!っていつも思う
母音抜くルールわかりやすかった
変に短いやつ見付けたら母音考えたら良いんだね

299:デフォルトの名無しさん (スップ Sd9f-oUAv)
17/02/05 00:59:12.87 rJZpHJC7d.net
m_xxxでもxxx_でもメンバである保証全くないからthis->派

300:デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)
17/02/05 01:01:31.92 WpCJ+nTl0.net
メンバ変数は ぱっと見わかるように、
vector<string> _vstr;
前ハイフンつけてます

301:デフォルトの名無しさん (ワッチョイ 3342-fOGj)
17/02/05 01:03:44.90 mLcywPgQ0.net
前ハイフンはシステム予約とバッティングしやすいから後ハイフン派

302:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/05 01:04:30.83 6qCMRDqV0.net
>>295
こんなルールのみだったらわかりやすいのに

303:デフォルトの名無しさん (スップ Sd9f-oUAv)
17/02/05 01:07:18.77 rJZpHJC7d.net
変数はいいけどメンバ関数はどうすんの?
m_とか後ろ_とかつけるの?

304:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/05 01:27:23.42 lu7sp4/h0.net
>>293
> 母音抜くルールわかりやすかった
まあここでも使われてるんだけどね。
kwskとか、ggrksとか。

305:デフォルトの名無しさん (ワッチョイ 1302-1ST5)
17/02/05 01:29:06.53 Yy4bNkpa0.net
バッティングしやすいと言われて避けてたけどかれこれ一回もしたことないから止めたわ

306:デフォルトの名無しさん (ワッチョイ 7fc1-AkR4)
17/02/05 01:41:58.02 nBEZPMY50.net
確率論かよ
プロのやることじゃないだろ

307:デフォルトの名無しさん (ワッチョイ a37b-jpzQ)
17/02/05 02:18:19.91 cECtpBb50.net
避けてきたというのにバッティングしたこと無いから止めるって論理がちょっとおかしい。
お前サーバー管理者だけど今まで何も障害発生してないから要らないわ、解雇ね。
みたいな。

308:デフォルトの名無しさん (ワッチョイ b31e-1yep)
17/02/05 03:03:49.00 uDzXyp1X0.net
using std;してるのに変数名にcount使ってるのはたまに見かける
そういう人は
int printf = 0;
とか書いてあっても気にならないんだろうか

309:デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)
17/02/05 04:04:57.35 WpCJ+nTl0.net
いずれにしろわかると思うが

310:デフォルトの名無しさん (ワッチョイ a3a6-0MWP)
17/02/05 08:20:30.97 sLo1ryYQ0.net
>>301
2chにプロが来ると思うのはおかしいでしょ

311:デフォルトの名無しさん (ワッチョイ cf42-qddC)
17/02/05 21:23:37.51 QXihksJQ0.net
規格上、メンバ変数の先頭にアンダーバーつけてもシステム変数とバッティングしたりしないよ。
defineとか色々やってるとバッティングするのかもしれんけど、誰か例示してくれ

312:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/05 21:50:38.91 93yXMd2W0.net
マクロはスコープに従わない
これこそが諸悪の根源

313:デフォルトの名無しさん (ワッチョイ a37b-0yxR)
17/02/05 21:53:28.57 cECtpBb50.net
先頭アンダースコアに大文字が続くとローカルスコープでも×

314:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/05 22:00:58.46 93yXMd2W0.net
operator "" がアンダースコアで始まらない
std::chronoの識別子までハネるコンパイラを
どう修正すべきか開発陣は詰んでるよね

315:デフォルトの名無しさん (ワッチョイ 13c9-dUno)
17/02/05 22:11:51.14 JZIpCKM70.net
cstddef無しでもdecltype(sizeof(int))が使えるぐらいだから別につんでない

316:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/06 01:33:36.44 EE2HabAa0.net
初歩的な質問なんだけど
列挙体の列挙タグとかないやつってどういうときに使うの?
列挙タグないとどうしようもなくね?ってなってるんだけど

317:デフォルトの名無しさん (ワッチョイ a37b-0yxR)
17/02/06 02:14:43.60 cswrm9tC0.net
>>311
単に定数値として使われてるだけだとともう

318:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/06 02:22:16.07 EE2HabAa0.net
>>312
受けとる側を同じ型にしなくていいんかな?
基本的にint型らしいからint型で受けるものなの?

319:デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)
17/02/06 05:48:15.78 GvVdGH4O0.net
enum {
 buf_size = 100;
 answer = 42;
};
みたいな感じで使うenumの話だよね。
大雑把に言って「数値リテラルと同じ場面で使える名前のついた整数」。
配列定義の要素数に使えるし、キャストなしに任意の整数型に入れられる。

320:デフォルトの名無しさん (ワッチョイ cf6b-aC2u)
17/02/06 09:45:50.45 EE2HabAa0.net
>>314
まさにそれだ!!!
要素数か!!!そこ見落としてた
任意のやつに入れられるとしても
本来なら型は合わせるべきでってルールに反しててみたいな葛藤が繰り広げられてる

321:デフォルトの名無しさん (ワッチョイ 7fcf-1ST5)
17/02/06 10:46:33.65 eKJHyJFq0.net
>>315
Cならintの定数として使えばいいけど、C++ならテンプレートと組み合わせたときとかに型の違いが
出てきちゃうから、整数として使うならconstexpr intにしといたほうがいいよ。葛藤するぐらいならなおのこと。

322:デフォルトの名無しさん (ワッチョイ a319-gmgt)
17/02/06 16:13:16.68 1+9LFiOi0.net
f(x,a)をx.f(a)と書くみたいな新しいC++の機能になる予定のがあったと思ったんですけど
この機能が何て言う名前か忘れたので教えてください。

323:デフォルトの名無しさん (ワッチョイ 7f3c-mNa5)
17/02/06 17:15:37.05 CRCNRbS80.net
統一関数呼び出しだったかな。
提案されてるだけで取り入れられるかどうかはまだ決まってない気がする。
C言語の既存APIに対応できないとかで揉めてるんじゃないっけ?

324:デフォルトの名無しさん (ワッチョイ a319-gmgt)
17/02/06 17:49:23.50 1+9LFiOi0.net
ありがとうございました。
それが使いたいので気になってました。

325:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/06 19:36:58.46 8E+Xd5G50.net
>>310
それoperator ""と関係あるの?

326:デフォルトの名無しさん (ワントンキン MM1f-0yxR)
17/02/06 20:41:46.35 XckUYI7fM.net
operator ""って何?

327:デフォルトの名無しさん (スプッッ Sd9f-PPsr)
17/02/06 20:42:45.84 vzOme6YXd.net
ユーザ定義リテラル

328:デフォルトの名無しさん (エムゾネ FF9f-aC2u)
17/02/06 20:49:53.47 wweedNqsF.net
パイプラインでデータ送るってのはexeからexeってイメージで良いのかな?

329:デフォルトの名無しさん (ワントンキン MM1f-0yxR)
17/02/06 20:52:29.18 XckUYI7fM.net
>>322
定義するときそんなの使うんだ。全く使わないし使いたいと思ったことがないからマジで知らんかった。

330:デフォルトの名無しさん (ワッチョイ c35b-0MWP)
17/02/06 21:05:15.71 R4XPB48C0.net
>>315
それ多分defineの代わり。
改善点は>>307くらいか?俺はあまり文法には詳しくないから分からんが。
てかお前、マジで上司に聞いた方がいいぞ。
そういうところ改善しろって話じゃないと思うのだが。

331:デフォルトの名無しさん (ドコグロ MMff-C4Pq)
17/02/06 21:14:58.49 VJg+IRhiM.net
>>323
パイプラインの定義による
普通はプロセス~プロセスだけど自分で定義した関数に渡せる PowerShell みたいな奴もいるから

332:デフォルトの名無しさん (ワンミングク MM1f-PSyA)
17/02/07 20:42:19.89 cTLgA1N6M.net
>>293
古アラム語の記法で2000年以上の歴史があるよ

333:デフォルトの名無しさん (ワッチョイ cf24-1aN8)
17/02/07 20:54:19.60 A56tKajQ0.net
>>326
pipeline burst SRAMってのがあったな

334:デフォルトの名無しさん (スプッッ Sd9f-aC2u)
17/02/07 22:51:12.61 LBkPe/Vnd.net
>>326
関数to関数ってdllと何がちがうんや

335:デフォルトの名無しさん (ワッチョイ cf7b-gPBI)
17/02/08 01:04:48.39 6rskJv7R0.net
Linuxのコマンドでも、同一プロセス内のコマンドと、別プロセスを起動するコマンドの、2種類ある
10万行のシェルスクリプトの実行時間でも、大きな差がある。
for 9分
while 5秒
awk・perl 0.1秒

336:デフォルトの名無しさん (ワッチョイ 365b-a31+)
17/02/09 11:43:50.96 18LIUJ/70.net
STLはどの程度使いこなせるのが一般的と思いますか?
書籍、簡単でいいのがなくて困ってます。
C++難しすぎ。

337:デフォルトの名無しさん (スップ Sd72-Q8BR)
17/02/09 11:44:59.53 ABH38W/Id.net
↓STLというものは存在しない

338:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/09 12:39:20.71 mjUCD5MK0.net
>>331
毎日cpprefjp眺めとけばそのうち結構覚えてる

339:デフォルトの名無しさん (ワッチョイ b330-t3CD)
17/02/09 13:03:54.52 Wn84KVBK0.net
一般的なんてぼんやりした領域のことを聞かれても困るわ
まC++をC++として使うつもりならコンテナ単体とコンテナとアルゴリズムの組み合わせくらいは
なんとなくでも使えるようになっていて欲しいな

340:デフォルトの名無しさん (ワッチョイ 83dc-w/2a)
17/02/09 13:09:01.92 4sYnDBFk0.net
入門書を何冊も試すより『プログラミング言語C++』第4版を手に入れて
先頭からのんびり読み進めながら、後半の標準ライブラリの部分も拾い読み、
という方が費用対効果は大きいかも。1万円近くするお高い本だけど。

341:デフォルトの名無しさん (ワッチョイ 32cc-LNBT)
17/02/09 13:22:05.49 erARudvS0.net
バカは一気に覚えようとするから
そんなん受験くらいやろ
実践は身につけんと意味ない

342:デフォルトの名無しさん (アウアウカー Sa1f-a31+)
17/02/09 13:31:32.51 DP2Fqfwxa.net
必要になったとき調べながら使ってれば自然と覚える

343:デフォルトの名無しさん (ササクッテロレ Spf7-7zST)
17/02/09 14:05:14.86 Ra4XvV1bp.net
STL覚えるのに金払うのは勿体無い気がする
cpprefjpをざっと眺めてどんなものがあるか何となくレベルで把握→実際に使ってみる ってのを繰り返すべし

344:デフォルトの名無しさん (ワッチョイ e2d4-cGUq)
17/02/09 15:54:11.28 Ccc/L2ZJ0.net
VC++ なんですが typedef 絡み(スコープ?)で質問です。
typedef int macaddress_t[6];
void show(macaddress_t m) {}
int test() {
  macaddress_t m;
  show(m);
}
なのですが、
error: 'macaddress_t' was not declared in this scope
となってコンパイル通りません。
void show ~の部分を
extern "C" {
  void show(macaddress_t m) {}
}
って括ると大丈夫になります。
これは何が起きているのでしょうか。

345:デフォルトの名無しさん (ワッチョイ e2d4-cGUq)
17/02/09 16:42:39.82 Ccc/L2ZJ0.net
補足
extern "C" なし時にエラーが出るは void show の行です。
C++では引数は別スコープ?

346:デフォルトの名無しさん (ワッチョイ fe6c-lXju)
17/02/09 17:01:06.12 ljwNeD6M0.net
それだけだとエラー再現しないから
なんか他でやってるんじゃないの?

347:デフォルトの名無しさん (スップ Sd72-Q8BR)
17/02/09 17:13:47.07 ABH38W/Id.net
test関数が.cにあるとか

348:デフォルトの名無しさん (ワッチョイ e2d4-cGUq)
17/02/09 21:17:24.37 Ccc/L2ZJ0.net
あ、.cpp じゃなくて .c  です。
これが大きいんですか?

349:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK4f-4eBQ)
17/02/09 21:21:30.92 2NLO6FImK.net
>>343
.cで定義した関数をC++で使うにはextern "C"で宣言しないといけない。

350:デフォルトの名無しさん (アウアウカー Sa1f-a31+)
17/02/09 21:39:45.68 H/sFxM1Na.net
>>331です。皆さんありがとうございます。
URLリンク(www5c.biglobe.ne.jp)
でSTLを勉強中ですが投げ出しそうです。
独習C++は理解できましたが
プログラミング言語 C++は厳しいです。
vector for_each random_shuffle sort
の動作を確認中です。
random_shuffleが毎回同じ値を返すのですが
どうやったら毎回異なる結果を返せますか?

351:デフォルトの名無しさん (ワントンキン MM62-xxX2)
17/02/09 21:47:39.04 0i4innvN


352:M.net



353:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/09 23:08:25.11 mjUCD5MK0.net
>>345
random_shuffleは非推奨になったから別のを使え
for_eachは特別な理由が無ければ範囲forを使え

354:デフォルトの名無しさん (ワッチョイ 2731-CIv3)
17/02/09 23:17:44.28 Tzm2iYcD0.net
C++11とかC++14とかC++17とかあるけど、C++はまだ開発途上なの?

355:デフォルトの名無しさん (ササクッテロレ Spf7-eUd9)
17/02/09 23:23:36.93 lbPmSuZmp.net
はい

356:デフォルトの名無しさん (ササクッテロレ Spf7-7zST)
17/02/09 23:28:37.45 Ra4XvV1bp.net
進化なきソフトウエアに未来はないのだ

357:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/09 23:50:09.48 mjUCD5MK0.net
更新が止まるのは需要が無くなったときだ

358:デフォルトの名無しさん (ワッチョイ 2731-CIv3)
17/02/09 23:55:51.94 Tzm2iYcD0.net
ちょっと開発工程表出してくれる?
瑕疵期間は完成版リリース後1年ね。
もちろん予算は増やせないよ。

359:デフォルトの名無しさん (ワッチョイ e7a6-cGUq)
17/02/10 00:02:15.87 X8zCTp9W0.net
クライアントはよりどりみどりだから

360:デフォルトの名無しさん (ワッチョイ 92c1-7zST)
17/02/10 00:04:38.63 DjvLDgGn0.net
唐突に始まる基地外顧客ごっこやめて

361:デフォルトの名無しさん (ワッチョイ b37b-a31+)
17/02/10 00:06:53.18 Rg0hWeb00.net
型変換難しすぎます
すぐコンパイラ先生に怒られます

362:デフォルトの名無しさん (ワッチョイ 92c1-7zST)
17/02/10 00:08:58.24 DjvLDgGn0.net
すぐ怒ってくれるコンパイラ先生に感謝感激雨あられですね

363:デフォルトの名無しさん (アウアウカー Sa1f-Twc8)
17/02/10 00:10:01.98 ynOefsL0a.net
サクラダファミリア

364:デフォルトの名無しさん (ワッチョイ b37b-a31+)
17/02/10 00:16:30.32 Rg0hWeb00.net
普通の型からマイクロソフト定義の専用のきついわ
あんなん初めから使うなよマイクロソフトさん

365:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/10 00:19:08.11 Yd/z+i5f0.net
そのうちどれが何をdefineしたものかは大体察しが付いてくる

366:デフォルトの名無しさん (ワッチョイ e2d4-cGUq)
17/02/10 16:18:59.44 ovuuNq0I0.net
>>344
==ここから==
typedef int macaddress_t[6];
void show(macaddress_t m) {}
int test() {
  macaddress_t m;
  show(m);
}
==ここまで==
ひとつのソースファイルなのですが、
全体を extern "C" で括るらともかく、なんでvoid show~の行だけ括らないといけないのか、そこが理解できないんです

367:デフォルトの名無しさん (ワッチョイ 7642-CIv3)
17/02/10 18:37:08.04 bnzKLGGx0.net
NDKでC++
でwregex使おうとしたら
コンパイルできないし。
wchar_tが4なんだな。
codecvtもないし
まだ早すぎたのか。

368:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK4f-4eBQ)
17/02/10 18:43:05.49 HPN+NYiaK.net
>>361
NDKでBoost使えるか試してみてや。

369:デフォルトの名無しさん (ワッチョイ 277b-VpYz)
17/02/10 20:32:59.12 MRcACxyw0.net
>>361
wchar_tはWindows以外だいたい4だぞ

370:デフォルトの名無しさん (スッップ Sd52-jZLg)
17/02/10 20:59:06.21 kKjy5FQnd.net
>>360
試してみたいからどっかにソリューション一式アップしてみ?

371:デフォルトの名無しさん (ワッチョイ 7b0e-zOJM)
17/02/10 21:53:45.98 m9Xytejo0.net
2だと合成文字どころかcodepointすら1つでは表現出来ない、半端仕様
それならもういっそutf-8でいいじゃないか

372:デフォルトの名無しさん (ドコグロ MM8a-zlRv)
17/02/10 22:01:34.71 YdIN6n2bM.net
>>360
釣果はどうだい?

373:デフォルトの名無しさん (ワッチョイ 7b51-cGUq)
17/02/10 22:09:36.57 WMmjWeX+0.net
文字を「文字列の先頭」みたいな形でしか表せないのは用途によっては面倒くさい。

374:デフォルトの名無しさん (ワッチョイ 93c9-3u4T)
17/02/11 00:41:43.23 yp4PwuMD0.net
そうだな
だから367はもうUnicode使わないようにしないと

375:デフォルトの名無しさん (ワッチョイ 367b-ZOaM)
17/02/11 13:11:50.51 I0QTm/K50.net
>>360
ひとつの.cppの中?それならextern "C"は必要ないよ
.cと.cppをリンクするときは.cで定義した関数は.cpp側でextern "C"しなけりゃいけない
キーワード:マングリング

376:360 (ワッチョイ 7642-CIv3)
17/02/11 18:00:41.65 mOx2IQFJ0.net
>>362
Boostビルドの前に
Android Studioでinclude pathの設定が
わからなくて
お手上げ状態。

377:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/11 19:33:50.14 I2Nt/svY0.net
C++の最大の難関は環境構築

378:デフォルトの名無しさん (アウアウオー Sa8a-S0So)
17/02/11 20:04:39.39 2PZ2/Gs1a.net
VCぇ。。。

379:デフォルトの名無しさん (スプッッ Sd72-a31+)
17/02/11 20:10:03.55 7410wxb3d.net
vcってなんなんですか

380:デフォルトの名無しさん (アウアウオー Sa8a-S0So)
17/02/11 20:24:54.87 2PZ2/Gs1a.net
VisualC++の略。
ダイアログアプリ以外は全然Visualじゃ無いけどね。
でもそんなの他のC++処理系も一緒。
(むしろダイアログアプリすら別に入れないと出来ない。そこがライブラリ選べる自由度の代償)
VB的にC++使えたC++Builderは死んだのだ。。。
他の環境入れる辺り、GUIは関係無いだろうけど、GUI以外にもライブラリがインストール時に全部入るので環境構築は一番楽。
あ、VCでも.netならVB的に使える。
文法が独特になって、C#使った方がマシだが。

381:デフォルトの名無しさん (ワッチョイ 9302-ENO3)
17/02/11 23:51:53.14 I2Nt/svY0.net
MSVCとQtって組み合わせられるの?

382:デフォルトの名無しさん (ササクッテロロ Spf7-eUd9)
17/02/12 03:21:26.71 9ZkThf7dp.net
組み合わせるの意味がよくわからんけどコンパイラにmsvcは使える

383:デフォルトの名無しさん (ワッチョイ b27b-ENO3)
17/02/12 15:27:47.18 YlSn9Fu90.net
vcっていう人とvc++っていう人がいる

384:361 (ワッチョイ 7642-CIv3)
17/02/12 18:15:47.67 2aJLYPTP0.net
build.gradleで
cmake {
cppFlags "-std=c++11 -frtti -fexceptions -I${project.buildDir}/../src/main/cpp/include"
}
としたらshared_ptrやらlexical_castは動いたわ。
Boostビルドやインテリセンスが動かない問題は解決できなかったけど

385:デフォルトの名無しさん (アウアウオー Sa8a-S0So)
17/02/12 18:35:37.25 ElZAn973a.net
>>377
VC6の時代は入門書には大体VCって書いてた。
あの頃がVC全盛期。

386:デフォルトの名無しさん (ワッチョイ b27b-ENO3)
17/02/12 18:51:10.52 YlSn9Fu90.net
>>379
実はVC6が仕事で使ったのが最後w
MSCもVer.6が良かったなぁみたいな。

387:デフォルトの名無しさん (スプッッ Sd72-a31+)
17/02/13 08:28:15.44 w9FuiKwSd.net
fopenと_sの違いを教えてクレメンス

388:デフォルトの名無しさん (アウアウオー Sa8a-S0So)
17/02/13 10:32:02.37 dreuS3Zka.net
_sはセキュリティのs

389:デフォルトの名無しさん (スプッッ Sd72-Q8BR)
17/02/13 13:50:40.30 jR+QOQ4bd.net
コンストラクタの関数トライブロックのイニシャライザで発生した例外をキャッチしても
そのままコンストラクタの外へ例外が飛び出るのですがそういうものですか?

390:デフォルトの名無しさん (ワッチョイ b27b-ENO3)
17/02/13 14:12:07.77 CDuxjgvH0.net
>>381
そんなんがあんのかorz

391:デフォルトの名無しさん (ワッチョイ b330-t3CD)
17/02/13 14:22:10.35 83glS84B0.net
>>383
そういうもの

392:デフォルトの名無しさん (スプッッ Sd72-Q8BR)
17/02/13 14:41:07.98 jR+QOQ4bd.net
そういうものですか

393:デフォルトの名無しさん (オッペケ Srf7-3u4T)
17/02/13 22:21:47.14 0ypMjrgpr.net
メンバーの初期化が失敗してる状態で続行されたら迷惑以外の何物でもない

394:デフォルトの名無しさん (ブーイモ MM52-mpSg)
17/02/13 22:30:08.50 2WrcuwMzM.net
catchブロックは必ずthrowで終わらないといけなくて、省略すると自動でrethrowするみたいね

395:デフォルトの名無しさん (ワッチョイ b37b-a31+)
17/02/13 22:32:22.26 riwEWnOT0.net
COM登録難しい
自動で作られる_p.cとか_i.cファイルってなんなんだ
IIDやCLSIDとか難しすぎる

396:デフォルトの名無しさん (ワッチョイ 129b-ilKL)
17/02/14


397:00:03:42.00 ID:IGsQOpXK0.net



398:デフォルトの名無しさん (スップ Sd72-a31+)
17/02/14 09:38:53.47 dFgeiJZpd.net
idlをビルドしたときに作られる _p.c _i.c .h はコンパイラによって中身に差は出てくるけど
内容までは気にしなくて良いもの??

399:デフォルトの名無しさん (スップ Sd72-RX11)
17/02/14 11:14:58.25 T4QzsHFxd.net
void hoge
{
static string a;
}
void hage
{
thread_local string b;
}
int main()
{
hoge();
hage();
}
とした場合aとbのデストラクタが呼ばれる順番の規定はどうなってますか

400:デフォルトの名無しさん (スップ Sd72-a31+)
17/02/14 12:12:14.85 dFgeiJZpd.net
>>392
cプラスはデストラクタは定義しないとないんじゃなかったっけ
プログラム終了時は呼ばれるのだろうか

401:デフォルトの名無しさん (ワッチョイ b330-t3CD)
17/02/14 12:20:58.70 mNVQx7P30.net
シングルスレッドなら構築の逆順

402:デフォルトの名無しさん (ワントンキン MM62-xxX2)
17/02/14 12:24:34.00 cBGBFD/aM.net
マルチスレッドでも同じだで

403:デフォルトの名無しさん (スップ Sd72-RX11)
17/02/14 12:26:56.53 T4QzsHFxd.net
gcc6.2でやってますが順番を変えてもaのデストラクタが先に呼ばれます

404:デフォルトの名無しさん (JP 0H4b-EsWW)
17/02/14 13:00:32.03 he6YB8dMH.net
そいつら main と関係ないとこで呼ばれてるべ
しかし記述順にかかわらず b が先じゃないとまずいんじゃないの

405:デフォルトの名無しさん (スップ Sd72-RX11)
17/02/14 13:15:37.14 T4QzsHFxd.net
ちゃんとmainのそれぞれの関数内で順番通りコンストラクタは呼ばれてます
デストラクタは逆順にならないです

406:デフォルトの名無しさん (ワッチョイ 93c9-3u4T)
17/02/14 13:39:07.66 aNlWux3V0.net
>>392
3.6.3 Termination 段落1
『The completions
of the destructors for all initialized objects with thread storage duration within that thread are sequenced
before the initiation of the destructors of any object with static storage duration.』

407:デフォルトの名無しさん (スップ Sd72-RX11)
17/02/14 14:23:27.77 T4QzsHFxd.net
そのスレッド内のスレッド記憶期間を有する全ての初期化されたオブジェクトに対するデストラクタの完了は、静的記憶期間を有するオブジェクトのデストラクタの開始前に順序付けられる。

thread localはstaticの前に順序付けられる?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch