C++相談室 part129 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ dfcf-HvS5)
2017/01/09(月) 14:49:27.56ID:p96WJVyd0!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part128
http://echo.2ch.net/test/read.cgi/tech/1480172629/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0159デフォルトの名無しさん (ワッチョイ 573c-U8Ig)
2017/01/18(水) 08:00:45.61ID:+X3tak3t0>最適化後は一緒になるって言ってんの
デバッグ中の挙動を無視されると困ります
0160デフォルトの名無しさん (ワッチョイ 677b-dqLr)
2017/01/18(水) 08:42:08.41ID:n1DpjkbT0ごもっとも。規格がどうかも関係なかったね。
>>159
なんで?
0161デフォルトの名無しさん (ブーイモ MMd2-a69X)
2017/01/18(水) 08:52:41.79ID:ZS0nd/enM定数であるからromにも置けるって話なんで関係ない訳がない。
0162デフォルトの名無しさん (ドコグロ MM4e-lGK7)
2017/01/18(水) 18:41:42.82ID:Abs9KEqJM> 定数であるからromにも置ける
だからと言ってROMに置くとは限らない
って話なんだがお前には難しすぎたか?
0163デフォルトの名無しさん (アウアウカー Sa5f-YGRn)
2017/01/18(水) 21:27:37.78ID:4GI0Tt+ca0164デフォルトの名無しさん (ワッチョイ 3e5b-vSov)
2017/01/18(水) 21:56:10.60ID:qB5vepR/00165デフォルトの名無しさん (ブーイモ MM8b-a69X)
2017/01/18(水) 23:18:53.09ID:0GLHJE+5M置けるってのは置くこともできるって意味だが、随分日本語不自由なやつだな
0166デフォルトの名無しさん (ドコグロ MM7f-j6UX)
2017/01/19(木) 06:46:32.74ID:JadLiFtgM> 随分日本語不自由なやつだな
「置ける」と言う可能性の話と「置く」と言う実際の動作の区別がつかない奴に言われても...
でっかいブーメラン乙としか言いようがないわな w
0167デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/19(木) 06:57:37.47ID:bO+XZlhy0直値でもROMに置けると言えるだけでなんの違いも無いんだが。
0168デフォルトの名無しさん (ワッチョイ 637b-voKO)
2017/01/19(木) 08:39:21.82ID:4Gh/dudO0初期化==評価と考えてなけりゃ >>145は出てこねーんだよ バーカ
0169デフォルトの名無しさん (スプッッ Sd1f-xrkK)
2017/01/19(木) 10:16:43.40ID:CldDY8MLdint&& b=std::move(static_cast<int>(a));
b=200;
aは100、bは200になるのですが
キャストすると必ず一時オブジェクトが生成されるのでしょうか
環境によってaもbも200になったりしますか。
0170デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
2017/01/19(木) 10:39:40.20ID:gPdsJo1i0必ず生成される。
https://timsong-cpp.github.io/cppwp/n4140/expr.static.cast#4
0171デフォルトの名無しさん (スプッッ Sd1f-xrkK)
2017/01/19(木) 10:50:03.86ID:CldDY8MLd0172デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/19(木) 11:10:02.61ID:ipEwSksA00173デフォルトの名無しさん (ドコグロ MMff-j6UX)
2017/01/19(木) 12:54:31.63ID:Ccs4bPhGMわからないなら絡んでくるなよ w
0174デフォルトの名無しさん (オッペケ Sr87-mcUU)
2017/01/19(木) 14:28:16.75ID:oLhGNghYr>環境によってaもbも200になったりしますか
Yes
0175デフォルトの名無しさん (ワッチョイ bfcb-SmTw)
2017/01/19(木) 20:26:21.94ID:+cE5RWPo00176デフォルトの名無しさん (ワッチョイ cf24-RK9q)
2017/01/19(木) 21:29:45.00ID:x+icVyy10わからないなら絡まれたフリをするなよw
おまえに教えを請うようなクズの中のクズはさすがにこのスレにもいないだろうから
0177デフォルトの名無しさん (ドコグロ MMff-j6UX)
2017/01/19(木) 21:35:22.14ID:ylWIT8ZQMわからんって言ってるのは俺じゃなくて >>167 なんだが...
色々お前には難しすぎたか? w
0178デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/19(木) 21:54:21.33ID:bO+XZlhy00179デフォルトの名無しさん (ワッチョイ ff6c-L1Ju)
2017/01/19(木) 21:55:13.80ID:f8wSWc2J00180デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/19(木) 21:56:39.26ID:bO+XZlhy0ありがとう
0181デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
2017/01/20(金) 02:35:51.43ID:WXRyG1p+a0182デフォルトの名無しさん (ワッチョイ f302-JQ1R)
2017/01/20(金) 08:56:02.47ID:1CC8R4dK00183デフォルトの名無しさん (スプッッ Sd1f-ddg/)
2017/01/20(金) 18:53:55.75ID:zIVGmPHgdprintf, winapi, _t型変数以外気を付けることある?俺これやってはまったわみたいなのが知りたい
0184デフォルトの名無しさん (ワッチョイ cf24-RK9q)
2017/01/20(金) 23:36:02.52ID:GZ99lyBK0いーや、初期値==評価とは考えずに書いた
事実とおまえの考えは完全が食い違っているんだよ
せいぜい妄想の世界で自画自賛してろナルシスト
0185デフォルトの名無しさん (ワッチョイ 637b-voKO)
2017/01/21(土) 01:01:56.19ID:v+i75+9D0引っかかりやがった
初期化の話題で評価と言い出しのはテメーだ バーカ
0186デフォルトの名無しさん (ワッチョイ cf7b-5ScM)
2017/01/21(土) 01:52:25.87ID:RmTA4cQd00187デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
2017/01/21(土) 11:02:38.55ID:Bf4L6OzOa0188デフォルトの名無しさん (ワッチョイ cf24-RK9q)
2017/01/22(日) 00:06:25.08ID:LwmXYJhf0だから初期化ってどこに書いてあるんだよ
幻視か? だからリスパダールちゃんと飲めとあれほど・・・
0189デフォルトの名無しさん (ワッチョイ cf7b-rTuY)
2017/01/22(日) 00:24:56.56ID:77/TNfJH0こんなのどうやってまとめるんだ…
0190デフォルトの名無しさん (ワッチョイ bfcb-xrkK)
2017/01/22(日) 02:31:51.43ID:hchjfZjx00191デフォルトの名無しさん (ワッチョイ 6f56-3qL8)
2017/01/22(日) 02:40:24.62ID:rrJzCAZR0環境は 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を呼んで欲しい
}
0192片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-o4cX)
2017/01/22(日) 03:05:41.88ID:NkQzBql/K1 charは常に2バイトではない。あなたはマルチバイト文字列の基礎を理解していないようだ。
マルチバイト文字列中の複数のcharが一文字になっているか否かは、
文字列の先頭から1charごとにcharの値の範囲を確認し、lead byteかtrail byteかを判定するしかない。
0193デフォルトの名無しさん (ワッチョイ bfcb-SmTw)
2017/01/22(日) 03:12:07.68ID:hchjfZjx0template <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&)
{
}
これでいけない?
0194片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK47-o4cX)
2017/01/22(日) 03:12:21.28ID:NkQzBql/K0195デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/22(日) 07:14:06.66ID:7mC+0LM10日本語が理解できないボケ老人は去れ
0196デフォルトの名無しさん (ワッチョイ a37d-wsSS)
2017/01/22(日) 08:04:55.45ID:5o7PrILb0例のコンパイラがぶっ壊れてるんだろうね
gccは期待通り
http://ideone.com/9pSqel
0197デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/22(日) 08:28:45.75ID:gigvK4EO00198191 (ワッチョイ 6f56-3qL8)
2017/01/22(日) 08:37:36.49ID:rrJzCAZR0ありがとうございます。
>193
確かに期待通りの動作をします。
ただ、この先 MFC の CStringA, CStringW, 生配列などを仮引数として与えたいため、operator[] の戻り値で判定出来ないか考えていました。
>196
なるほど。コンパイラの問題くさいので代替案を考えてみます。
ありがとうございました。
0199191 (ワッチョイ 6f56-3qL8)
2017/01/22(日) 08:50:18.71ID:rrJzCAZR0下の様に、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バイト版
}
0200デフォルトの名無しさん (ワッチョイ 237b-rTuY)
2017/01/22(日) 09:58:50.62ID:iEDujvJA00201デフォルトの名無しさん (ワッチョイ f302-JQ1R)
2017/01/22(日) 13:37:19.35ID:gnARoY8z00202デフォルトの名無しさん (ワンミングク MM9f-aDhR)
2017/01/22(日) 14:40:31.27ID:hBhrTyQGM0203デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
2017/01/22(日) 15:06:13.66ID:paMlvMvI0sizeof(decltype(STR()[0])) って sizeof(STR()[0]) と何か違ったっけ?
0204デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/22(日) 15:53:04.56ID:7mC+0LM100205デフォルトの名無しさん (ワッチョイ cf24-RK9q)
2017/01/22(日) 20:43:26.81ID:LwmXYJhf00206デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/22(日) 22:57:58.70ID:gigvK4EO00207デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/22(日) 22:59:58.14ID:7mC+0LM10当たり前のことを言い出して、いきなりどうした
0208デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/22(日) 23:01:08.57ID:gigvK4EO0戻らないmain(?)へ宛
0209デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/22(日) 23:14:20.58ID:7mC+0LM10なるほど理解した
『戻らないmain』は[[noreturn]]のことだと思ったので理解できずスルーしていた
人に『リスパダールちゃんと飲めとあれほど』と言って自分が飲み忘れたのかと
0210デフォルトの名無しさん (ワッチョイ 23c9-mcUU)
2017/01/22(日) 23:26:22.29ID:7mC+0LM10CStringは知らないが、stringは恐らく同じ
sizeof(STR()[0])
→sizeof (char &型の左辺値)
→sizeof (char)と同じ
sizeof(decltype(STR()[0]))
→sizeof (decltype(char &型の左辺値))
→sizeof (char &型)
→sizeof (char)と同じ
0211191 (アウアウカー Sac7-/Qox)
2017/01/23(月) 09:48:36.48ID:SwVOU3U8avc++2015で deltype をぬくと、関数に[] は出来ません、みたいなエラーで通りませんでした。
STR()をコンストラクタではなく、関数と思ってるんだと思います。
0212デフォルトの名無しさん (オッペケ Sr87-mcUU)
2017/01/23(月) 17:40:29.94ID:oJYEiyR6rみたいなルールだっけ
0213デフォルトの名無しさん (ワッチョイ ff9f-tc54)
2017/01/23(月) 18:40:50.71ID:FReCyx8S00214デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
2017/01/23(月) 19:40:02.64ID:Ij4EmhsFa0215デフォルトの名無しさん (ワッチョイ ffcc-DOWB)
2017/01/24(火) 03:03:03.61ID:ch78KtiL0とっくに絶滅しているもんだとおもっていたぜw
0216デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/24(火) 03:50:21.48ID:nvNd8iP100217デフォルトの名無しさん (ワッチョイ f302-JQ1R)
2017/01/24(火) 03:56:08.97ID:Af36V4kC00218デフォルトの名無しさん (ワッチョイ 137b-Eksc)
2017/01/24(火) 11:11:02.03ID:dVVoZ7Su0あれはWin32APIの薄いラッパでしかないから
文句あるなら別のライブラリを使えばいいだけの話、それも出来ないならやっぱりお前が無能でバカ
0219デフォルトの名無しさん (スップ Sd1f-xrkK)
2017/01/24(火) 11:33:11.15ID:9X3I9Jqtdfunc = nullptr;
funcへの代入をできないようにconst付けたいのですが
どう書けばいいですか。
usingやtypedefは使わない方法でお願いします。
あとメンバ関数への参照はどう記述すればいいですか
int (hage::*func)(int) = &hage::test;
の参照版です
0220デフォルトの名無しさん (アウアウカー Sac7-WqDQ)
2017/01/24(火) 11:41:16.20ID:GCEfrzc1a0221デフォルトの名無しさん (ワッチョイ 7330-J7L1)
2017/01/24(火) 12:11:20.65ID:ekWjtoGq0int (* const func)(int) = &hoge;
int (piyo::* mf0)(int) = &piyo::test;
int (piyo::* & mf1)(int) = mf0;
int (piyo::* const & mf2)(int) = &piyo::test;
0222デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
2017/01/24(火) 12:13:02.49ID:NfDXKGen0そっか sizeof だと式と型の曖昧さが問題になるけど decltype なら式しか取らないから曖昧さを消せるのか。
0223デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)
2017/01/24(火) 12:13:28.46ID:NfDXKGen0[dcl.mptr]/3 (Note) "There is no "reference-to-member" type in C++."
0224デフォルトの名無しさん (スップ Sd1f-xrkK)
2017/01/24(火) 12:19:40.53ID:9X3I9Jqtdそれだとメンバ関数のポインタの参照になってませんか
int (&func)(int) = hoge;
のメンバ関数版はできないでしょうか
constの件はうまくいきました
0225デフォルトの名無しさん (ワッチョイ ffd9-iijN)
2017/01/24(火) 13:24:18.69ID:kmpgWA440thisが必要になるから無理なんじゃないの
それよりクラス内でメンバ関数へのポインタを書くとthisが必要になる
0226デフォルトの名無しさん (ワッチョイ 6f5b-OQjX)
2017/01/24(火) 21:23:55.09ID:GIi5sfFU0中身を書けない人生を送るんだろうな〜
0227デフォルトの名無しさん (ワッチョイ cf42-Wde1)
2017/01/25(水) 00:27:17.93ID:I9ZrCxSQ00228デフォルトの名無しさん (オッペケ Sr87-mcUU)
2017/01/25(水) 00:35:21.87ID:KGxAJ6V6r0229デフォルトの名無しさん (ササクッテロレ Sp87-Taza)
2017/01/25(水) 00:51:14.53ID:/+qbj4+Vp0230デフォルトの名無しさん (ワッチョイ 037b-rTuY)
2017/01/25(水) 01:30:42.64ID:5KwEWhG700231デフォルトの名無しさん (ワッチョイ ff17-SmTw)
2017/01/25(水) 02:33:17.29ID:LUWqNFoa00232デフォルトの名無しさん (ワンミングク MM9f-cBXx)
2017/01/25(水) 04:12:15.84ID:nJO+CT7AM0233デフォルトの名無しさん (アウアウウー Sa67-OTU1)
2017/01/25(水) 15:31:39.49ID:uJriqNlza>>230
>>228が言ってるのはそういう意味のcharじゃないでしょ
0234デフォルトの名無しさん (ワッチョイ cf24-RK9q)
2017/01/25(水) 21:44:43.91ID:gbQNFS3L0intにも依存したくないのか?
0235デフォルトの名無しさん (ワンミングク MM9f-cBXx)
2017/01/25(水) 22:01:41.63ID:nJO+CT7AM0236デフォルトの名無しさん (ワッチョイ aacc-X95Y)
2017/01/26(木) 00:52:19.97ID:GN6UrdAH00237デフォルトの名無しさん (ワッチョイ 6f02-FuHd)
2017/01/26(木) 02:07:00.45ID:cRvsGxqc00238デフォルトの名無しさん (ワッチョイ 2613-AZYz)
2017/01/26(木) 06:24:12.10ID:XBNxNxvo0FILE * を使う人はどうして2chをみないのか?iostream な人はどうなるのか?
0239デフォルトの名無しさん (スップ Sdca-kwgD)
2017/01/26(木) 08:04:45.44ID:fFyxUIyidビル・ゲイツもこれで億万長者になれました
0240デフォルトの名無しさん (JP 0H16-T3y8)
2017/01/26(木) 13:11:34.03ID:lD0mvySBH0241デフォルトの名無しさん (ワッチョイ 3e24-XYXB)
2017/01/26(木) 18:22:33.18ID:A9/xu7Tb00242デフォルトの名無しさん (ワッチョイ aacc-X95Y)
2017/01/29(日) 15:48:31.23ID:Hm/zwJzS0この処理低レベルだねぇと言われて得意げにほくそ笑むヤツ→玄人
0243デフォルトの名無しさん (ワッチョイ af7b-FuHd)
2017/01/29(日) 16:07:03.50ID:K+/fnyLa00244デフォルトの名無しさん (ワッチョイ 1bc9-kHcU)
2017/01/29(日) 16:12:04.90ID:2ZaFXkbr0幸せな顔をして仕事をしている人を見たことがない
0245デフォルトの名無しさん (アウアウカー Sa5b-seiz)
2017/01/29(日) 16:31:19.45ID:sujTTxNda0246デフォルトの名無しさん (ワッチョイ 0ac0-H6k8)
2017/01/29(日) 22:01:55.93ID:F8NpKYaN00247デフォルトの名無しさん (ワッチョイ 3e24-BAqL)
2017/01/30(月) 21:07:15.53ID:P5tJpKPw0std::fstream::readの引数が【なぜ】charなのか
理解できないアフォ?
0248デフォルトの名無しさん (ワッチョイ 6fc9-a+zf)
2017/02/01(水) 22:16:18.72ID:zf0e/zUB00249デフォルトの名無しさん (ワントンキン MM1a-9Rjx)
2017/02/01(水) 22:52:40.44ID:mWAIN14mM0250デフォルトの名無しさん (ワッチョイ 137b-1ST5)
2017/02/02(木) 00:40:35.30ID:kju30PyH0てか疑問の意味がわからん。
0251デフォルトの名無しさん (ワッチョイ 7fcf-1ST5)
2017/02/02(木) 01:35:32.10ID:FXYEZ0RW00252デフォルトの名無しさん (ワッチョイ 1302-1ST5)
2017/02/02(木) 01:58:08.09ID:hMTSyXzS0標準的な環境では考える必要は無いこと
0253デフォルトの名無しさん (ワッチョイ cf24-1aN8)
2017/02/02(木) 22:10:32.43ID:1pIxEkoa00254デフォルトの名無しさん (オッペケ Sra7-dUno)
2017/02/03(金) 08:10:44.86ID:HxuiJzZXrたいてい片山の自演
0255デフォルトの名無しさん (スップ Sd9f-aC2u)
2017/02/03(金) 13:51:28.33ID:+x5EsLXNd会社のコードってなんであんなにdefine切ったりtypedefしまくってるんだ?
可読性低くない?始めて作った人には良いだろうけど後のこと考えるとデメリットなんではって思うんだけど...
0256デフォルトの名無しさん (ワッチョイ 6f6c-i1/f)
2017/02/03(金) 13:57:14.34ID:Fv/X2f+d00257デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)
2017/02/03(金) 15:21:22.58ID:cyynpkXi00258デフォルトの名無しさん (アウアウカー Sae7-mIyn)
2017/02/03(金) 16:26:23.88ID:oWJS3iiDa■ このスレッドは過去ログ倉庫に格納されています