假设我有以下程序:
template <class X> void foo(X val) { }
template <> void foo<double>(double val) { }
class obj
{
public:
void callFoo() { foo(7.3); }
private:
void foo(int val) { }
};
int main()
{
obj o;
o.callFoo();
}
为什么选择foo(int val)
?
它不应该是foo<double>(double val)
吗?
我想也许类范围导致foo(int val)
被调用。