因为 line 11 的 C::helloworld 是跟 C 要 membertype, 跟 member function 无关
https://ideone.com/AQueNd你看的这份 code 有两个比较麻烦的地方: 第一个就是在 class template 里面写 function template, 这是为了避免在具现化类别实体的时候直接因为没有成员函式而报错, 所以用模版延迟 test 的具现化. 第二点是因为 resolve 合适函式呼叫时, 多载优先权会比模版还高, 所以你把 test(...) 的 template 拿掉就可以看到怎样回传都是 0