如何在仍然位于命名空间内时专门化GetData函数?
#include <iostream>
class Person
{
public:
Person() {}
};
class Animal
{
public:
Animal() {}
};
template<typename T>
T GetData(const std::string& data)
{
static_assert(false, "no specialization");
return T{};
}
template<>
Person GetData<Person>(const std::string& data)
{
return Person();
}
namespace ns
{
template<>
Animal GetData<Animal>(const std::string& data)
{
return Animal();
}
}
int main(int argc, char* argv[])
{
Person p = GetData<Person>(std::string(""));
Animal a = GetData<Animal>(std::string(""));
std::cout << "Program Completed\n";
getchar();
return 0;
}
我收到错误:
错误C2912:显式特化&#39;动物ns :: GetData(const std :: string&amp;)&#39;不是功能模板的专业化