【发布时间】:2017-10-12 01:54:12
【问题描述】:
我有一个 C++ 形式的函数(它有点复杂;这是 MWE):
template <typename T>
struct Meas {
T time;
T value;
};
template <typename T, template <typename U> class container>
T func(typename container<Meas<T>>::const_iterator start,
typename container<Meas<T>>::const_iterator end)
{
T c = 0;
while (start != end) {
c += start->value;
}
return c;
}
我在显式实例化它时遇到了麻烦。我已经尝试了大多数排列:
template double func<double, X>(std::deque<Meas<double>>::const_iterator,
std::deque<Meas<double>>::const_iterator);
其中 X 为以下之一:
std::deque
template std::deque
template std::deque<double>
std::deque<double>
template <typename U> std::deque<U>
template <typename U> std::deque
但它们都不能在 Xcode 9.0 中编译。最常见的错误是:
“func”的显式实例化不指代函数模板、变量模板、成员函数、成员类或静态数据成员
我应该如何正确显式地实例化这个函数?
【问题讨论】: