Я только что столкнулся со странной проблемой.
Исходный код прост и очевиден следующим образом:
#include <vector>
#include <iostream>
#include <functional>
using namespace std;
using namespace std::tr1;
template<class T_>
void show_size(T_ coll)
{
cout << coll.size();
}
int main()
{
vector<int> coll;
coll.push_back(1);
show_size(ref(coll));
return 0;
}
VC ++ 2010 сообщает:
ошибка C2039: «размер»: не является членом «std :: tr1 :: reference_wrapper <_Ty>»
Как мы знаем, reference_wrapper может автоматически преобразовывать себя в свой базовый тип, здесьvector<int>
Почему такой простой код недействителен?