Appearance
#include <cstdio> template <typename T> void foo(T t) { printf("T\n"); } template <typename T> void foo(T* t) { printf("T*\n"); } int main() { foo(114); int a = 514; foo(&a); }
输出是 T 和 T*,很符合直觉。
T
T*
但是直觉的背后是一套超级复杂的规则决定哪个特化是最匹配的。