Я пытаюсь передать итератор в качестве параметра шаблона к методу шаблона, но компилятор жалуется:Не удается вывести тип шаблона
error C2783: 'void Test::Assert(std::vector<T>::const_iterator)':
could not deduce template argument for 'T'
Код, который производит ошибку является:
#include "stdafx.h"
#include <iostream>
#include <vector>
class Test
{
public:
template <typename T>
void Assert(typename std::vector<T>::const_iterator it)
{
std::cout << *it << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Test test;
std::vector<double> myVec;
test.Assert(myVec.cbegin());
return 0;
}
Я предполагаю, что есть простой способ сделать эту работу, так как большинство алгоритмов std могут выводить тип из итератора.
возможно дубликат [Обход для не выводил контекста] (http://stackoverflow.com/questions/8308213/workaround-for-non-deduced-context) – vsoftco