不调用std :: string的专用静态模板函数

时间:2015-12-14 12:07:08

标签: c++ templates static specialization

我的课程中有一个静态模板函数:

file.hpp:

class File
{
public:
    template<typename Type>
    static Type read(const std::string & fullPath, const std::ios_base::openmode mode = std::ios_base::in);
};

template<typename Type>
Type File::read(const std::string & fullPath, std::ios_base::openmode mode)
{
  std::stringstream ss;
  ss << readImpl(fullPath, mode);

  Type value = Type();
  ss >> value;

  return value;
}

file.cpp:

template<>
std::string File::read(const std::string & fullPath, std::ios_base::openmode mode)
{
  return readImpl(fullPath, mode);
}

readImpl只返回一个字符串。

所以,我的问题是为什么当我运行这样的东西时,我没有调用std :: string的read方法的专门化:

 const std::string content = File::read<std::string>(path);

由于

1 个答案:

答案 0 :(得分:0)

你可以做以下事情:

file.cpp

new google.maps.LatLng(lat, lng)

但实际上最好在头文件中编写专门化。