Problema com std :: reference_wrapper
O problema é claro com o seguinte 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;
}
Se eu usar o comentadostd::vector<int> a, b;
ao invés deint a = 0, b = 0;
, o código não será compilado em nenhum dos GCC 5.1, clang 3.6 ou MSVC'13. Na minha opinião,std::reference_wrapper<std::vector<int>>
é implicitamente conversível emstd::vector<int>&
que é LessThanComparable e, portanto, deve ser LessThanComparable. Alguém poderia explicar isso para mim?