[問題] VS2012 C++11 future的exception不太對勁

看板C_and_CPP (C/C++)作者 (ITSST)時間13年前 (2013/04/27 16:42), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ windows7 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) C++11 (VS2012) 問題(Question): 在VS2012裡,std::future throw出來的exception, std::future_error的物件呼叫code()與what()回傳的值不相配。 餵入的資料(Input): 預期的正確結果(Expected Output): 理論上code()回傳enum的值, 應該與what()回傳訊息、字串相配。 錯誤結果(Wrong Output): 從測試結果來看,code()回傳的值是正確的, 但what()回傳的訊息是code()回傳的值在enum裡的下一個值。 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/ENym1k 補充說明(Supplement): 看起來像是VS2012的bug。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.94.138

04/27 17:13, , 1F
e.code().message() 也不相同嗎?
04/27 17:13, 1F

04/27 17:21, , 2F
e.code().message()的結果與e.what()相同,都是錯的
04/27 17:21, 2F

04/27 17:23, , 3F
直接 cout << e.code() 看結果也可以
04/27 17:23, 3F

04/27 17:24, , 4F
ok 那應該是 bug 了, std::error_code 狀態整個不對
04/27 17:24, 4F

04/27 17:26, , 5F
我是有想到可能是內部用了 static buffer 所以指標指
04/27 17:26, 5F

04/27 17:27, , 6F
到的那塊 message buffer 內容變掉了, 如果最開始就印
04/27 17:27, 6F

04/27 17:27, , 7F
出 e.code().message() 可還是不同的話, 就可以肯定
04/27 17:27, 7F

04/27 18:39, , 8F
直接印e.code().message()結果也一樣,看起來不是static buff
04/27 18:39, 8F
文章代碼(AID): #1HUuzPxm (C_and_CPP)
文章代碼(AID): #1HUuzPxm (C_and_CPP)