作者fuha (mimi)
看板C_and_CPP
標題template的小問題
時間Sun Oct 9 15:13:58 2011
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