如何实现模板函数与“subtemplated”
问题描述:
我有一个函数,该声明是如何实现模板函数与“subtemplated”
template<typename T> T get(int x);
我想实现的是实现一个版本,其中的返回类型是一个模板类(又名计时:: time_point)
我试图
template<typename clock> std::chrono::time_point<clock> get(int x) {
// implementation
}
但是,这并不与申报相符。什么是正确的方法来做到这一点?
答
你不能部分专门化一个功能。
但是,您可以通过traits/function对象类来路由函数模板以执行所需操作。
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);
}
从C++ 11开始,模板函数不能部分专用。我怀疑他们也可以使用C++ 14。 – 2014-10-17 18:53:48