我是C ++模板的新手,我试图编写一个函数,该函数返回具有指定时间单位和类型的chrono :: duration。例如,这一行给出了以秒为单位的时间差:
std::chrono::duration<double> secd =
std::chrono::duration_cast<std::chrono::duration<double,std::ratio<1>>>(end - start);
我有一个类函数,它给了我一个持续时间,我想使用模板来指示返回值的类型和单位(在上一个例子中,这将是双倍的比&LT 1个为卤素)。我想要的是类似于这个伪代码的东西:
template typename<class T, class R> std::chrono::duration<T, R> getStepTime() {
return std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
其中_time
是具有持续时间的类成员。到目前为止我所有的尝试都没有编译。
如果有更好的方法可以在不使用模板的情况下实现这一目标,我全心全意。
答案 0 :(得分:1)
typename
关键字的使用不当;试试
template<typename T, typename R>
std::chrono::duration<T, R> getStepTime(Step step) {
return
std::chrono::duration_cast<std::chrono::duration<T, R>>(_time);
}
但你应该显示更多代码。你的例子太小,甚至无法测试。
答案 1 :(得分:1)
typename
使用不当,模板中缺少结束>
。这是一个用于测试编译的调整示例:
template <typename T, typename R>
std::chrono::duration<T, R> getStepTime()
{
std::chrono::duration<T, R> duration;
return std::chrono::duration_cast<std::chrono::duration<T, R>>(duration);
}