我有一个声明
的功能template<typename T> T get(int x);
我想要实现的是实现一个返回类型是模板类的版本(a.k.a chrono :: time_point)
我试过
template<typename clock> std::chrono::time_point<clock> get(int x) {
// implementation
}
但这与声明不符。这样做的正确方法是什么?
答案 0 :(得分:3)
你不能部分专门化一个功能。
但是,您可以通过特征/函数对象类来路由函数模板,以执行您想要的操作。
namespace details {
template<class T>
struct get {
T operator()(int x) {
// code
}
};
template<class clock>
struct get<std::chrono::time_point<clock>> {
using T = std::chrono::time_point<clock>;
T operator()(int x) {
// code
}
};
}
template<class T> T get(int x) {
return details::get<T>{}(x);
}