因為 line 11 的 C::helloworld 是跟 C 要 membertype, 跟 member function 無關
https://ideone.com/AQueNd你看的這份 code 有兩個比較麻煩的地方: 第一個就是在 class template 裡面寫 function template, 這是為了避免在具現化類別實體的時候直接因為沒有成員函式而報錯, 所以用模版延遲 test 的具現化. 第二點是因為 resolve 合適函式呼叫時, 多載優先權會比模版還高, 所以你把 test(...) 的 template 拿掉就可以看到怎樣回傳都是 0