看板 C_and_CPP 關於我們 聯絡資訊
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
purpose:"PTT" < "ppt" ? 10/09 15:48
loveme00835:標題已修改 10/09 16:12
loveme00835:typeid((a < b) ? a : b).name() 這邊出來應該要是左 10/09 18:21
loveme00835:值, 而我用VC10編出來卻是個右值, 明顯不合標準5.16.4 10/09 18:23
loveme00835:gcc 4.5.2 沒這問題 10/09 18:24
fuha:所以 這個問題 是我這樣寫不行 還是? 10/10 20:05
fuha:所以是 vs2005的 complier 不符標準囉? 10/10 20:06
loveme00835:如果硬要用2005去編, 你就改用指標吧 10/10 20:23