[表示 : 全て 最新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

422 名前:デフォルトの名無しさん (スプッッ Sd72-a31+) mailto:sage [2017/02/15(水) 07:31:50.49 ID:PfwOrtkrd.net]
>>411
以下に効率よくってのポイントっぽいね
結合テストシステムテストの差がいつも怪しい

423 名前:デフォルトの名無しさん (ワッチョイ d236-a31+) mailto:sage [2017/02/15(水) 07:41:57.48 ID:XaX5xvK80.net]
>>415
システムテストはシステムレベルの仕様に基づいてテストすればいいんじゃないかな。その際、中身がどのようにモジュールに分割されてるかは意識しない。
結合テストでは、システムレベルの仕様では見えないモジュール同士のインターフェースを中心に行う。

424 名前:デフォルトの名無しさん (スプッッ Sd72-a31+) mailto:sage [2017/02/15(水) 07:48:01.33 ID:PfwOrtkrd.net]
>>416
dllを差し換える作業を今してるんだけどその結合テストとなると
diiを呼び出す口を呼び出したときにどうなるか
それだけ見ればよいってことで良いかな?

425 名前:デフォルトの名無しさん (スプッッ Sd72-a31+) mailto:sage [2017/02/15(水) 10:29:03.40 ID:PfwOrtkrd.net]
strcpy_sってなんかMSDNの記載と挙動違うくない?
第三引数ぬるのときにエラーになる

426 名前:デフォルトの名無しさん (ワッチョイ 9b22-lHUq) mailto:sage [2017/02/15(水) 11:05:06.67 ID:t9yAVOgj0.net]
strSourceがNULLだとEINVALを返すって書いてあるけど

427 名前:デフォルトの名無しさん (スプッッ Sd72-a31+) mailto:sage [2017/02/15(水) 11:10:10.21 ID:PfwOrtkrd.net]
>>419
リリースビルド実行してもそんなことなく落ちてしまう

428 名前:デフォルトの名無しさん (ワッチョイ df7b-3cRu) mailto:sage [2017/02/15(水) 11:53:58.00 ID:LTs78uDW0.net]
If strDestination or strSource is a null pointer, or if the destination string is too small,
the invalid parameter handler is invoked, as described in Parameter Validation.

429 名前:デフォルトの名無しさん (スプッッ Sd72-a31+) mailto:sage [2017/02/15(水) 12:06:28.33 ID:PfwOrtkrd.net]
>>421
それ読んでるけど表ではコピー先には0で返り値でエラーコードが返ってくると記載がある
その文章の後半の実行の継続が〜って箇所がこれなんだと読んだんだが

430 名前:デフォルトの名無しさん (ワッチョイ df7b-3cRu) mailto:sage [2017/02/15(水) 12:14:45.33 ID:LTs78uDW0.net]
パラメータバリデーションも読めばわかる
その中で実行継続が選択された場合はエラーコードが返る



431 名前:デフォルトの名無しさん (ワッチョイ 0fd2-3yR0) mailto:sage [2017/02/15(水) 12:16:06.93 ID:tDlcUFQu0.net]
>>422
記載内容

432 名前:確認したいのでURL張って []
[ここ壊れてます]

433 名前:デフォルトの名無しさん (ワッチョイ df7b-3cRu) mailto:sage [2017/02/15(水) 12:18:53.94 ID:LTs78uDW0.net]
ググればトップに出てくるページも探せない奴は参加しなくて良い

434 名前:デフォルトの名無しさん (スップ Sd72-a31+) mailto:sage [2017/02/15(水) 12:25:15.30 ID:7fF4cQx4d.net]
>>423
実行継続ってどうやってするんだ...
リリースビルドのやつだとそのまま落ちちゃうけどもそれとは違うの?

435 名前:デフォルトの名無しさん (ワッチョイ df7b-3cRu) mailto:sage [2017/02/15(水) 12:29:16.41 ID:LTs78uDW0.net]
Invalid Parameter Handler Routineを差し替える

436 名前:デフォルトの名無しさん (スップ Sd72-a31+) mailto:sage [2017/02/15(水) 12:34:47.36 ID:7fF4cQx4d.net]
なんか手のつけたことのないやつに深入りしそうだ
ぐぐりちゅう
これ普通にだと落ちるのが正常ってことなんかね...?

>>424
https://msdn.microsoft.com/ja-jp/library/td1esda9.aspx

437 名前:デフォルトの名無しさん (ワッチョイ df7b-3cRu) mailto:sage [2017/02/15(水) 12:35:51.87 ID:LTs78uDW0.net]
レジストリ弄ってワトソン出さない方法もあるらしいけどやった事ない

438 名前:デフォルトの名無しさん (スップ Sd72-a31+) mailto:sage [2017/02/15(水) 12:45:49.37 ID:7fF4cQx4d.net]
>>429
これって初期設定だと実行継続みたいなのをぽちっとしないといけない
それがデフォルトってことなんね
なんか思っていた動作と異なる
くそやろう...

439 名前:デフォルトの名無しさん (スップ Sd72-a31+) mailto:sage [2017/02/15(水) 14:54:33.30 ID:7fF4cQx4d.net]
で....できない
srz-zumix.blogspot.jp/2012/08/strcpys.html?m=1
これ参考にしてるんだけどそのままコピペだとできない
助けてクレメンス

440 名前:デフォルトの名無しさん (ワッチョイ df7b-Ry7I) mailto:sage [2017/02/15(水) 15:37:40.84 ID:LTs78uDW0.net]
#include <string.h>
#include <errno.h>
void handler(
const wchar_t * expression,
const wchar_t * function,
const wchar_t * file,
unsigned int line,
uintptr_t pReserved)
{
}

int main()
{
char a[20];
_set_invalid_parameter_handler(handler);
strcpy_s(a, 20, NULL);
printf("%d\n", EINVAL == errno);
}



441 名前:デフォルトの名無しさん (オッペケ Srf7-3u4T) mailto:sage [2017/02/15(水) 18:51:08.84 ID:rJwzLFnhr.net]
>>418
スレ違いは去れよ

442 名前:デフォルトの名無しさん (ワッチョイ 0fd2-3yR0) mailto:sage [2017/02/15(水) 20:32:24.80 ID:tDlcUFQu0.net]
>>431
何が起きてるのかわからないから助けようがない
ブレークポイント張って動作は追った?

443 名前:デフォルトの名無しさん (ワッチョイ fb5f-YBZc) mailto:sage [2017/02/17(金) 16:55:38.65 ID:oBsnwbhT0.net]
>>430
_s関数の設計思想がプログラマが想定してない状況で動作を継続しないだもの
NULLが来るのが想定内だってんならデバッグ用の_set_invalid_parameter_handler()なんか使わず最初からstrcpy_s()を呼ぶな

444 名前:デフォルトの名無しさん (ワッチョイ 5f17-P9CU) [2017/02/18(土) 02:10:37.30 ID:BjwZuIbZ0.net]
Electronic Artsの標準ライブラリEASTL
https://github.com/electronicarts/EASTL

3.05.02 release
ようやくunordered_set, unordered_map が追加された。

445 名前:デフォルトの名無しさん (オッペケ Sr9f-xmLK) mailto:sage [2017/02/18(土) 09:00:37.40 ID:GNecI7Ewr.net]
『Electronic Artsの標準ライブラリEASTL』
俺ライブラリのくせに「標準」付けるところが馬鹿っぽい
標準って日本語の意味も理解しない低能

446 名前:デフォルトの名無しさん (ワッチョイ 0f7b-LjcY) mailto:sage [2017/02/18(土) 09:10:35.91 ID:IbdRLC160.net]
「標準ライブラリ実装」なら満足?

447 名前:デフォルトの名無しさん (オッペケ Sr9f-xmLK) mailto:sage [2017/02/18(土) 11:10:10.00 ID:GNecI7Ewr.net]
Electronic Artsによる標準ライブラリの一部分の実装 EASTL

448 名前:デフォルトの名無しさん (ワッチョイ 5fcc-UoBp) mailto:sage [2017/02/18(土) 14:17:54.25 ID:cCamoDUt0.net]
STLのSはStandardだからな
英語出来ない馬鹿なのか

449 名前:デフォルトの名無しさん (アウアウカー Sa9f-LRhM) mailto:sage [2017/02/18(土) 17:51:18.18 ID:DE0SU//Ra.net]
Sugoi Tsuyoi Library

450 名前:デフォルトの名無しさん (ワッチョイ 5b02-Z7AI) mailto:sage [2017/02/18(土) 18:20:17.46 ID:oLH7rESg0.net]
サブセットのなにがいけないのか



451 名前:デフォルトの名無しさん (ワッチョイ fba6-eq+O) mailto:sage [2017/02/18(土) 19:49:22.55 ID:fWF8oK3d0.net]
処理系を作っているなら「STL実装」を名乗ってもいいの?

452 名前:デフォルトの名無しさん (ワッチョイ 0f7b-qzUy) [2017/02/18(土) 20:29:26.5 ]
[ここ壊れてます]

453 名前:8 ID:bU7vWvgF0.net mailto: 「Electronic Artsの標準」って言ってるだけで何の問題もないと思うが?
Standardという言葉を必要以上に狭く解釈するほうがバカみたい
[]
[ここ壊れてます]

454 名前:デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q) mailto:sage [2017/02/19(日) 09:55:36.66 ID:2DCCXMeS0.net]
strstreamでwstringを使う方法はありますか?

455 名前:デフォルトの名無しさん (ワッチョイ 8bc9-xmLK) mailto:sage [2017/02/19(日) 09:59:54.67 ID:sJkQ60Iy0.net]
はい。有ります

456 名前:デフォルトの名無しさん (ワッチョイ 8bc9-xmLK) mailto:sage [2017/02/19(日) 10:17:39.90 ID:sJkQ60Iy0.net]
ちなみにこんな感じだろうたぶん
https://ideone.com/JpKEZ7

457 名前:デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q) mailto:sage [2017/02/19(日) 11:16:43.37 ID:2DCCXMeS0.net]
それは(w)stringstreamではないですか?
strstreamのヘッダもいらない気がします。

strstreamでwstringを利用したいのですが
独習C++のサンプルでもchar配列しか扱って
ません。

458 名前:デフォルトの名無しさん (ワッチョイ 0f7b-LjcY) mailto:sage [2017/02/19(日) 11:50:16.48 ID:kiv7S6GK0.net]
strstreamってdeprecatedでは

459 名前:デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q) mailto:sage [2017/02/19(日) 12:02:45.47 ID:2DCCXMeS0.net]
>>449
visual studioのヘルプ見たらそんな気がしました。
おとなしくwstringstream使っとくべきですかね。

460 名前:デフォルトの名無しさん (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/19(日) 21:37:05.31 ID:XrGtgUCH0.net]
Singletonでのthread終了時にjoinで固まる
suzukit14.hateblo.jp/entry/2015/06/24/111000

これとまったく同じ問題に突き当たりました。
最後に書かれているように、detach()で確かに無事終了できますが、
なんかマズかったりしますか?



461 名前:デフォルトの名無しさん (オッペケ Sr9f-xmLK) mailto:sage [2017/02/19(日) 22:04:43.50 ID:s/Z6tyYFr.net]
良く読んでないけと
破棄されたm_endを参照してなんかうれしいの?

462 名前:デフォルトの名無しさん (ワッチョイ eb9a-XQTV) [2017/02/19(日) 22:07:24.99 ID:qRKd/jmw0.net]
スレッドの終了を待たずにプロセスが終了しても問題ないならOK

463 名前:デフォルトの名無しさん (ワッチョイ fb7b-Mjmn) [2017/02/19(日) 22:15:23.67 ID:Av0JmT9x0.net]
>>451
そのインスタンスのメンバーを使用するコードがdetachしたスレッド内にある場合はデストラクタが呼ばれた後にそのメンバーを参照して未定義動作になる可能性がある

464 名前:451 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/19(日) 22:22:05.77 ID:XrGtgUCH0.net]
皆さん、ご回答、ありがとうございます。

>>454
まさにそれと思しきクラッシュが終了時にランダムで発生することに気付きました(汗)
detach()もjoin()もせずに終わろうとしたときに百発百中で出るのと同じ「R6010 -abort() has been called」というエラーです。

Sleep()でも呼んで十分に待てば、実用上は問題ないんでしょうけど、
こういう曖昧なコードは嫌いなので、なんとかキレイにスパッと終わりたいです・・・。

Singletonが適したクラスではあるのですが、
この問題をうまく裁けないようであれば、諦めて通常のクラスにすることを検討します。

465 名前:デフォルトの名無しさん (ワッチョイ fb7b-Mjmn) [2017/02/19(日) 22:32:17.29 ID:Av0JmT9x0.net]
>>455
コンパイラは?MSVC2015使っててそんな問題に当たったことないんだけど
どうしても回避できないなら(MSVC2012には無かったかもしれないけど)std::quick_exit使う事も検討してみたら?

466 名前:デフォルトの名無しさん (ワッチョイ eb9a-XQTV) [2017/02/19(日) 22:45:35.14 ID:qRKd/jmw0.net]
俺なら、pthread なり直接使って
クリーンアップハンドラ登録する

467 名前:451 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/19(日) 23:08:15.96 ID:XrGtgUCH0.net]
>>456
Visual Studio Express 2013 for Windows Desktop Update5 です。

stackoverflow.com/questions/10915233/stdthreadjoin-hangs-if-called-after-main-exits-when-using-vs2012-rc

ここを見てると、どうも2015では直ってそうですね。

quick_exitのこと教えてくださってありがとうございます。
知りませんでした。
でも、VS2015に移行するのが一番キレイに解決するので、そうします。

これまで、特にVS2015に移行する理由がなかったので2013のままでしたが、
おかげさまで理由ができました。
ありがとうございました。

468 名前:451 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/20(月) 01:50:05.39 ID:1uwDjjWZ0.net]
ところで、>>451のサイトのコードですが、
m_end変数の型がstd::atomic<bool>となっています。
わざわざatomicクラスを使わなくても、

m_end = true;

は通常のboolでもアトミック操作だからかまわないですよね?
何か意図があるのでしょうか?

469 名前:デフォルトの名無しさん (ワッチョイ dfc0-fRM8) mailto:sage [2017/02/20(月) 02:43:42.07 ID:kFvPCPcM0.net]
コンパイラが省略するかもしれないから

470 名前:デフォルトの名無しさん (ワッチョイ 5f17-P9CU) mailto:sage [2017/02/20(月) 03:08:55.41 ID:n+W7/EeT0.net]
volatile ではダメなん?



471 名前:デフォルトの名無しさん (ワッチョイ fb7b-Mjmn) [2017/02/20(月) 04:17:03.74 ID:8FjaGYLq0.net]
>>461
わざわざ保証されてないものを使用したあなら好きにしたらいいんじゃない?
タイミングが重要なものに使用したらすぐ破綻するけど。

472 名前:デフォルトの名無しさん (ワッチョイ cbdc-92cl) mailto:sage [2017/02/20(月) 06:33:50.28 ID:8HBU9+MH0.net]
大きな整数だと読み書き操作のアトミック性が保証されないから
std::atomic を使わなきゃならん。
必要ないかも知れないけど、同じ書き方でboolでもlong longでも
正しく動くようにテンプレートを使った標準的な書式にしておく、
ってのがC++流と言えるのかな。

あと、std::atomic<bool>と書いてもboolを直に代入しても
実行時には同じ速度で動く(ようにatomicを実装する)から損はない、
というのもね。

473 名前:451 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/20(月) 19:43:56.16 ID:1uwDjjWZ0.net]
ご回答、ありがとうございます。

>>463
>大きな整数だと読み書き操作のアトミック性が保証されない
そうだったんですか!
それはatomicが要りますね。

>実行時には同じ速度で動く(ようにatomicを実装する)から損はない
オーバーヘッドがないのは素晴らしいですね。

気を付けます。
ありがとうございました。

474 名前:デフォルトの名無しさん (ワッチョイ 0f2b-eq+O) mailto:sage [2017/02/21(火) 07:47:04.43 ID:t35fjyuz0.net]
>459
>何か意図があるのでしょうか?

サイト書いた人間死んでるの?
それとも生きてるの?

生きてるならなんでわざわざ赤の他人に他人の意図を聞くんだろうこの人
本人に直接聞けば一番早いんじゃないの
そいつの意図なんてのは書かない限りそいつしか知らないし分からないじゃん

475 名前:デフォルトの名無しさん (ドコグロ MM7f-My/j) mailto:sage [2017/02/21(火) 08:17:30.11 ID:y0kzTLQNM.net]
終わった話になに頓珍漢な言いがかりつけてるんだよ w

476 名前:デフォルトの名無しさん (ササクッテロラ Sp9f-Aztl) mailto:sage [2017/02/21(火) 09:41:12.86 ID:yRuALuONp.net]
お受験の季節だし、国語の時間が辛かったんだと思います
許してあげてください

477 名前:デフォルトの名無しさん (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/22(水) 19:13:31.66 ID:M+n+vM/b0.net]
以下のようなマルチスレッドプログラムを書いたのですが、もっとエレガントに書くことはできないでしょうか?
std::atomic<T>を使ったら可能でしょうか?

■メンバ変数

 std::mutex m_Mtx;
 std::string m_str;

■生産者スレッド

 while( true )
 {
  lock_guard<std::mutex> Lock( m_Mtx );
  
  m_str += "何らかの文字列";
 }

■消費者スレッド

 std::string str;
 
 {
  lock_guard<std::mutex> Lock( m_Mtx );

  str = m_str;
  
  m_str.clear();
 }

478 名前:デフォルトの名無しさん (ササクッテロラ Sp9f-Aztl) mailto:sage [2017/02/22(水) 20:12:00.06 ID:OuXxGo6Bp.net]
それで必要十分だと思うよ
stdがついたり付いてなかったり、変数が大文字始まりだったり小文字始まりだったりするのが気持ち悪いけど

479 名前:デフォルトの名無しさん (ワッチョイ fb34-wIi3) [2017/02/22(水) 20:31:27.26 ID:3B67WX1e0.net]
>>468
強いて言うなら
str.swap(m_str);
かな。

480 名前:デフォルトの名無しさん (ワントンキン MM7f-Mjmn) [2017/02/22(水) 20:40:10.22 ID:W153DobNM.net]




481 名前:そんな動作が必要なプログラムを書いたことがないし、どんなケースで必用になるのか想像もつかないけど、その動作が正なのであるばそれでいいんじゃない?

m_ って付いてるってことはメンバー関数なんだろうけどデストラクタどうするんだろうとか、色々気になる所はあるけど。
[]
[ここ壊れてます]

482 名前:デフォルトの名無しさん (ワッチョイ 5b02-Z7AI) mailto:sage [2017/02/22(水) 21:09:30.45 ID:TTVI91Rf0.net]
バックグラウンドで通信するならおおよそこんな感じになるんじゃないの

483 名前:468 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/22(水) 21:38:29.81 ID:M+n+vM/b0.net]
>>470
ご回答、ありがとうございます。

>>472
その通りでございます。

>>470
なるほど!
ということは、atomic<T>を使って

■メンバ変数

 std::atomic<std::string> m_str;

■生産者スレッド

 while( true ) m_str += "何らかの文字列";

■消費者スレッド

 std::string str;
 str.swap( m_str );


と、超エレガントにできそうですが、この場合、swap()でのアトミック性ってどうなるんでしょう??

484 名前:デフォルトの名無しさん (ワッチョイ fb34-wIi3) [2017/02/22(水) 21:46:47.39 ID:3B67WX1e0.net]
>>473
心配なら
m_str.swap(str);
でいいんじゃね?

485 名前:468 (ワッチョイ 6bdc-89sP) mailto:sage [2017/02/22(水) 23:00:07.25 ID:M+n+vM/b0.net]
>>474
あ、そうですね!
それならより安心ですね。
テストしてみて問題なかったら、それでいきます!
ありがとうございました。

486 名前:デフォルトの名無しさん (ワッチョイ 8acc-CoTN) mailto:sage [2017/02/23(木) 00:46:03.89 ID:+OueSnEu0.net]
ハンガリアンキンモー

487 名前:デフォルトの名無しさん (ワッチョイ de5b-moPN) mailto:sage [2017/02/24(金) 08:16:42.09 ID:DyzPRDD50.net]
見たことないのですがポインタ(の
入った変数)を参照することって可能
ですか?
int* &みたいなことです。

488 名前:デフォルトの名無しさん (ブーイモ MMc7-Ccab) mailto:sage [2017/02/24(金) 09:58:19.90 ID:bBhQmgr7M.net]
>>477
出来ます。テンプレートで使われるのが一番多いかな?
func(T& dst)に対してint*を渡すみたいなパターン

489 名前:デフォルトの名無しさん (アウアウカー Saeb-uNyc) mailto:sage [2017/02/24(金) 10:28:09.00 ID:e/BP7pNwa.net]
それは初心者用質問スレで訊くのが合っていますよ

490 名前:デフォルトの名無しさん (ワッチョイ 8a3c-/RgJ) mailto:sage [2017/02/24(金) 11:40:07.36 ID:9xRtAprE0.net]
auto&&とint&&は機能的に別物と考えていいのかな。
int&&は右辺値参照を実現する記法で、auto&&は参照の参照を実現するための仕組みという認識なんだけど。



491 名前:デフォルトの名無しさん (ワッチョイ 8acc-CoTN) mailto:sage [2017/02/24(金) 12:43:18.76 ID:quEFnRbB0.net]
人に聞く前になぜ自分でやってみようとは思わないの?

492 名前:デフォルトの名無しさん (スップ Sd4a-36q6) [2017/02/24(金) 13:15:08.70 ID:u1ntmSSgd.net]
試してもその環境では動くということしか確かめられないから

493 名前:デフォルトの名無しさん (ワッチョイ 7fc9-2lVT) mailto:sage [2017/02/24(金) 22:09:09.79 ID:OddQnmIq0.net]
実現するのが目的ではないだろうけど
auto &&のauto部分がX &に解決されるのはどうも気持ち悪い

494 名前: ◆QZaw55cn4c (ワッチョイ 4613-8lb6) mailto:sage [2017/02/24(金) 22:22:18.18 ID:4ewDjGBZ0.net]
>>477
できる,二重ポインタより分かりやすい

495 名前:デフォルトの名無しさん (ワッチョイ 1f30-GZNV) mailto:sage [2017/02/25(土) 00:02:24.64 ID:5D288ePc0.net]
>>480
テンプレートの型パラメータと普通の型の関係と同じようなもの
機能的に完全に別物というより一段上に追加機能のレイヤーがあるかないかの違い

496 名前:デフォルトの名無しさん (ワッチョイ 8acc-CoTN) mailto:sage [2017/02/25(土) 00:13:15.17 ID:Bto43eGs0.net]
まあautoの部分はXにもX*にもX&にも解釈可能だからトーシローは錯覚する罠

497 名前:デフォルトの名無しさん (ワッチョイ 8a3c-/RgJ) mailto:sage [2017/02/25(土) 12:29:14.82 ID:xXEZYycv0.net]
auto&&はreference collapsingっていう仕組みらしいけど江添氏はこの機能の解説してないんだよね。
だから右辺値参照の仕組みと透過性があるものなのだと思ってた。
右辺値参照の仕組みを理解すればおのずと理解できるもんだと思ってた。

498 名前:デフォルトの名無しさん (ワッチョイ 63a6-8lb6) mailto:sage [2017/02/25(土) 13:33:16.56 ID:THbYlaQi0.net]
これとかじゃなく?
https://cpplover.blogspot.jp/2014/09/c14-decltypeauto.html

499 名前:デフォルトの名無しさん (アウアウカー Saeb-uNyc) mailto:sage [2017/02/25(土) 18:59:53.13 ID:A0aZ5Z9Sa.net]
江添はそう言ってる?

500 名前:デフォルトの名無しさん (ワッチョイ 7fc9-2lVT) mailto:sage [2017/02/25(土) 21:48:53.39 ID:r3+UW6Ch0.net]
江添の説明はこれだな
『テンプレート実引数推定のルールで型推定が行われる』
『できるだけ普通のプログラマーの常識に合わせるために、とても複雑になっている』
以上



501 名前:デフォルトの名無しさん (ワッチョイ 0a7f-orIt) mailto:sage [2017/02/27(月) 14:18:25.09 ID:XaQXd7Ck0.net]
libc++ の挙動にバグっぽいものを見付けたんで cfe-dev に投げたんですが
ttp://lists.llvm.org/pipermail/cfe-dev/2017-February/052807.html
応答がありません…もっとふさわしい場所ってあるんですかね?

っていうか std::is_abstract が純粋仮想関数入りのクラステンプレートに対して
false 返すのって規格に照らしてどうなんでしょう?

502 名前:デフォルトの名無しさん (オッペケ Sr23-2lVT) mailto:sage [2017/02/27(月) 18:50:50.34 ID:mrZfm/tmr.net]
テンプレートクラスならともかくクラステンプレートならコンパイルエラーにならないとおかしい
ちなみにただのバグにしか見えない

503 名前:デフォルトの名無しさん (ワッチョイ 0a7f-orIt) mailto:sage [2017/02/27(月) 20:02:23.96 ID:XaQXd7Ck0.net]
なるほど、テンプレートクラスと言えばいいんですね。
適切な言葉をちゃんと知りませんでした。

504 名前:デフォルトの名無しさん (ワッチョイ a37b-mxZJ) [2017/02/27(月) 20:55:00.96 ID:Of/Kbntx0.net]
https://bugs.llvm.org//
バグ報告はここじゃね?

505 名前:デフォルトの名無しさん (ワッチョイ 7fc9-2lVT) mailto:sage [2017/02/27(月) 21:11:47.21 ID:4UiY0/x/0.net]
libc++ではなくてclangが腐ってるようにも見える
melpon.org/wandbox/permlink/GCDP7CU2HzUOMMML

506 名前:デフォルトの名無しさん (ワッチョイ 0a7f-orIt) mailto:sage [2017/02/27(月) 21:22:12.75 ID:XaQXd7Ck0.net]
>>494
New user self-registration is currently disabled
らしいのでどうせメールするならメーリスでいいか、
というのと規格的にどうなのかよくわからなかったので…

507 名前:デフォルトの名無しさん (ワッチョイ 0a7f-orIt) mailto:sage [2017/02/27(月) 21:25:24.26 ID:XaQXd7Ck0.net]
>>495
g++ で libc++ を使わせても同じ挙動だったのですが
どうなってるんでしょうね?

508 名前:デフォルトの名無しさん (スプッッ Sd33-moPN) mailto:sage [2017/02/28(火) 09:18:02.99 ID:cUxO9p4sd.net]
long→short 警告でない
size_t→int 警告出る

警告出たり出なかったりの違いってなんなんだ?
上記二つとも出ると思っていたのだが

509 名前:デフォルトの名無しさん (スップ Sd4a-36q6) [2017/02/28(火) 09:25:14.27 ID:+UqvplX+d.net]
unsignedでは

510 名前:デフォルトの名無しさん (ワッチョイ 8acc-CoTN) mailto:sage [2017/02/28(火) 09:41:23.40 ID:Mx4bsJ8G0.net]
警告を出すか出さないかはコンパイラのオプションで自由に選べる



511 名前:デフォルトの名無しさん (スプッッ Sd33-moPN) mailto:sage [2017/02/28(火) 11:50:09.20 ID:cUxO9p4sd.net]
>>499
それだと思ったのだけどsize_tでも出ないところと出るところがある
なんなんだこれ

512 名前:デフォルトの名無しさん (ワッチョイ 466c-fGBt) mailto:sage [2017/02/28(火) 13:37:18.52 ID:XuG6C30R0.net]
template<typename T> T f(const T& x){return x;}
template <int N> struct S{ int a[N];}
template<>template<int N> S<N> f(const S<N>& x){S<N> r; r.a[0] = x.a[0]; return r;}
こんな感じのコードで
Extraneous template parameter list in template specialization
って警告されるんですけど何が問題でどう書くのが正解なんですかね?

513 名前:デフォルトの名無しさん (ワッチョイ 8acc-CoTN) mailto:sage [2017/02/28(火) 13:40:56.38 ID:Mx4bsJ8G0.net]
>>502
特化テンプレートを使う場合は型や値を明記しなけりゃならない
この場合はNの数値を明記しなけりゃいけない

514 名前:デフォルトの名無しさん (ワッチョイ 466c-fGBt) mailto:sage [2017/02/28(火) 13:45:44.39 ID:XuG6C30R0.net]
ああなるほど・・・
Nが多いからテンプレートしてるのに手間ですな・・・

515 名前:デフォルトの名無しさん (ワントンキン MMfa-cxDF) mailto:sage [2017/02/28(火) 14:36:02.06 ID:t3AtpORvM.net]
出先だから書いてないけどvaliadic templateと再帰で全部インスタンス化できそうだけど

516 名前:デフォルトの名無しさん (ワッチョイ 1f30-GZNV) mailto:sage [2017/02/28(火) 18:49:47.90 ID:jvds/XNw0.net]
最初のfの特化じゃなくて別のテンプレートのfでオーバーロードするだけ
template<typename T> T f(const T& x){return x;}

template<int N> struct S{ int a[N];};

template<int N> S<N> f(const S<N>& x)
{ S<N> r; r.a[0] = x.a[0]; return r; }

517 名前:デフォルトの名無しさん (オッペケ Sr23-2lVT) mailto:sage [2017/03/01(水) 12:26:23.09 ID:2EZ/mUsgr.net]
>>501
もしかして定数の値が欠損していない場合では
constexpr size_t v1 = 32767;
int32_t v2 {v1}; //たぶん警告は出ない

518 名前:デフォルトの名無しさん (ワッチョイ 1f90-BJNc) mailto:sage [2017/03/02(木) 19:18:35.64 ID:x/1yO3Ie0.net]
++演算子で延々とループできるリングバッファみたいなコンテナってあると便利だと思うんですが
STLに入っていないのはなんでですか?

519 名前:デフォルトの名無しさん (ワッチョイ 6b02-2BvX) mailto:sage [2017/03/02(木) 19:23:17.02 ID:6rzvDmku0.net]
提案されていたけどまだ入ってない

520 名前:デフォルトの名無しさん (ワッチョイ 6b02-2BvX) mailto:sage [2017/03/02(木) 20:02:04.86 ID:6rzvDmku0.net]
ごめん違う奴だった勘違いしてた



521 名前:デフォルトの名無しさん (ワッチョイ 5b8b-M3Ci) mailto:sage [2017/03/03(金) 00:07:16.62 ID:TsTyuoGu0.net]
class Fooに対して演算子(例えば「|=」)のオーバーロードを使って
 Foo& operator|=(const Foo& rhs) { (*thisとrhsの演算結果を*thisに入れる) ; return *this; }
とか定義する例を見る気がしますが、
こういうパターン(演算結果を返すと共に*thisの値が破壊される)なメソッドを演算子のオーバーロードでなく名前で実装するとしたら
get〜とすべき?それともset〜が普通?

522 名前:デフォルトの名無しさん (ワッチョイ ef6c-HgeV) mailto:sage [2017/03/03(金) 00:10:55.24 ID:MwnP4WDg0.net]
普通setじゃない?






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

前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