Problema con std :: reference_wrapper
El problema está claro con el siguiente código:
#include <functional>
#include <iostream>
#include <vector>
int main() {
//std::vector<int> a, b;
int a = 0, b = 0;
auto refa = std::ref(a);
auto refb = std::ref(b);
std::cout << (refa < refb) << '\n';
return 0;
}
Si uso el comentadostd::vector<int> a, b;
en lugar deint a = 0, b = 0;
, el código no se compila en ninguno de GCC 5.1, clang 3.6 o MSVC'13. En mi opinión,std::reference_wrapper<std::vector<int>>
es implícitamente convertible astd::vector<int>&
que es LessThanComparable y, por lo tanto, debería ser LessThanComparable. ¿Podría alguien explicarme esto?