[問題] casting operator的問題
開發平台(Platform): (Ex: Win10, Linux, ...)
http://rextester.com/l/cpp_online_compiler_gcc
在這地方測試的
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc
問題(Question):
http://codepad.org/3WjlxLGF
f((string)FOO<int,int>());
上面這行編譯不過
但只用隱式轉型時沒問題
強制轉基本型別也可以(但要稍微改一下code)
如果casting operator不以template方式使用,例如指定string型別
則允許強制轉型成string
想請教有人知道原因嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.69.127
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1509351057.A.E9F.html
※ 編輯: loveflames (36.236.69.127), 10/30/2017 16:11:21
推
10/30 18:30,
8年前
, 1F
10/30 18:30, 1F
→
10/30 18:30,
8年前
, 2F
10/30 18:30, 2F
推
10/30 18:32,
8年前
, 3F
10/30 18:32, 3F
→
10/30 18:34,
8年前
, 4F
10/30 18:34, 4F
→
10/30 18:58,
8年前
, 5F
10/30 18:58, 5F
→
10/30 18:58,
8年前
, 6F
10/30 18:58, 6F
→
10/30 18:59,
8年前
, 7F
10/30 18:59, 7F
→
10/30 19:01,
8年前
, 8F
10/30 19:01, 8F
→
10/30 19:01,
8年前
, 9F
10/30 19:01, 9F
推
10/30 19:18,
8年前
, 10F
10/30 19:18, 10F
→
10/30 19:18,
8年前
, 11F
10/30 19:18, 11F
→
10/30 19:19,
8年前
, 12F
10/30 19:19, 12F
推
10/30 19:22,
8年前
, 13F
10/30 19:22, 13F
→
10/30 19:22,
8年前
, 14F
10/30 19:22, 14F
→
10/30 19:26,
8年前
, 15F
10/30 19:26, 15F
→
10/30 19:27,
8年前
, 16F
10/30 19:27, 16F
→
10/30 19:27,
8年前
, 17F
10/30 19:27, 17F
推
10/30 19:48,
8年前
, 18F
10/30 19:48, 18F
→
10/30 19:48,
8年前
, 19F
10/30 19:48, 19F
推
10/30 20:34,
8年前
, 20F
10/30 20:34, 20F
→
10/30 20:34,
8年前
, 21F
10/30 20:34, 21F
我知道理由了
17以前的強制轉型會丟到新型別ctor內
因為轉型函數是template會無法確定是哪一個
17以後只要轉型函數可以轉成新型別,就不會有ambiguous
附帶一提,下面這個在17以後沒有複製語意
T x = T();
補充:
VS2017還不支援
→
11/03 20:28,
8年前
, 22F
11/03 20:28, 22F
→
11/03 20:29,
8年前
, 23F
11/03 20:29, 23F
→
11/03 23:05,
8年前
, 24F
11/03 23:05, 24F
→
11/03 23:05,
8年前
, 25F
11/03 23:05, 25F
※ 編輯: loveflames (1.173.58.226), 12/29/2017 16:56:52
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章