[問題] 三元運算子的小問題

看板C_and_CPP (C/C++)作者 (mimi)時間14年前 (2011/10/09 15:14), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
template <typename T> T const& my_max(T const &a, T const &b) { T const (&c) = a; T const (&d) = (a < b) ? a : b; << 問題是這行 return a; } int main() { my_max("PTT", "ppt"); return 0; } 我的環境是 vs2005 a 的type 會是 const char[4]& 所以 c 沒有問題 可以接 但是 d 卻不行 很奇怪有人試過嗎? 錯誤會是 'initializing' : cannot convert from 'const char *' to 'const char (&)[4]' ternary operator 怎麼會把型別轉成 const char * 小疑問~ 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.209.149.227

10/09 15:48, , 1F
"PTT" < "ppt" ?
10/09 15:48, 1F

10/09 16:12, , 2F
標題已修改
10/09 16:12, 2F

10/09 18:21, , 3F
typeid((a < b) ? a : b).name() 這邊出來應該要是左
10/09 18:21, 3F

10/09 18:23, , 4F
值, 而我用VC10編出來卻是個右值, 明顯不合標準5.16.4
10/09 18:23, 4F

10/09 18:24, , 5F
gcc 4.5.2 沒這問題
10/09 18:24, 5F

10/10 20:05, , 6F
所以 這個問題 是我這樣寫不行 還是?
10/10 20:05, 6F

10/10 20:06, , 7F
所以是 vs2005的 complier 不符標準囉?
10/10 20:06, 7F

10/10 20:23, , 8F
如果硬要用2005去編, 你就改用指標吧
10/10 20:23, 8F
文章代碼(AID): #1EaKcv0J (C_and_CPP)
文章代碼(AID): #1EaKcv0J (C_and_CPP)