我有一个在任何类型的 STL 容器上运行的函数,需要将容器的元素类型传递给另一个模板函数。实际上,当我说任何容器类型时,我并不是真正的意思。严格来说只有向量和数组。我有这样的事情:
template <typename T> int ProcessData(T data)
{
return DoInternalProcessing<T::value_type>(data.data(), data.size());
}
MSVC11 接受此代码,但 gcc 不接受。它出什么问题了?对于 gcc,我考虑过将值类型也作为参数,但这需要调用者指定 T (容器类型),这对于 std::array 来说非常笨拙,并且该函数的主要目的是提供一个非常简单的接口从基础数据中抽象出来。