Аргумент шаблона не может быть выведен - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь использовать std::transform для объединения двух векторов одинакового размера в вектор пар.

int main()
{
    vector<string> names;
    // fill it with names    
    vector<int> nums;
    // fill it with numbers

    typedef pair<int,string> Pair_t;
    vector<Pair_t> pv;

    transform(nums.begin(), nums.end(),
              names.begin(), back_inserter(pv),
              make_pair<int,string>);
}

VC10 дает мне:

'_OutIt std::transform(_InIt1,_InIt1,_InIt2,_OutIt,_Fn2)' : could not deduce template argument for '_OutIt' from 'std::back_insert_iterator<_Container>'
          with
          [
              _Container=std::vector<Pair_t>
          ]

Так почему же аргумент шаблона не может быть выведен? И как мне это исправить?

1 Ответ

5 голосов
/ 03 мая 2011

Это связано с ошибкой в ​​текущей версии VC10, из-за которой перегрузка make_pair не может быть разрешена должным образом.

Здесь обсуждается именно эта проблема здесь вместе с обходным решением с использованием лямбда-выражения C ++ 0x, которое поддерживается VC10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...