g++ 4.8.1 和 clang++ 3.4 为下一个代码给出了不同的结果:
// simplified code from a Logger module
#include <iostream>
template<class T> void tf(const T*) { // clang++
std::cout << "void tf(const T*)\n";
}
template<class T> void tf(T) { // g++
std::cout << "void tf(T)\n";
}
int main(){
typedef std::ios_base& (*ph)(std::ios_base&);
ph p = std::hex;
tf(p); // or just tf(std::hex)
}
我不知道哪个变体是正确的(C++ 03)。