У меня есть функция шаблона, которая принимает следующую форму:
template < class ITER1, class ITER2 >
bool example(ITER1 Input1, ITER1 Input2, ITER2 Output)
{
ITER2 OrigOutput(Output);
// ...
std::copy(Input1, Input2, Output);
return (OrigOutput != Output);
}
И я звоню example()
вот так:
std::vector < int > Input;
std::set < int > Output;
if (example(Input.begin(), Input.end(), inserter(Output, Output.begin())))
{
...
}
Я бы хотел example()
вернуть true
, если элементы были вставлены в Output
, однако я получаю ошибку компиляции (msvc 2008):
Error 1 error C2678: binary '!=' : no operator found which takes a left-hand
operand of type 'std::insert_iterator<_Container>' (or there is no acceptable
conversion)
Есть ли способ определить, были ли какие-либо элементы вставлены в выходной итератор для возврата правильного значения bool?