Issue with std :: reference_wrapper
Das Problem ist mit dem folgenden Code klar:
#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;
}
Wenn ich das kommentierte @ verwenstd::vector<int> a, b;
Anstatt vonint a = 0, b = 0;
, dann wird der Code nicht auf GCC 5.1, Clang 3.6 oder MSVC'13 kompiliert. Meiner Meinung nach,std::reference_wrapper<std::vector<int>>
ist implizit konvertierbar zustd::vector<int>&
ist LessThanComparable und sollte daher LessThanComparable selbst sein. Könnte mir das jemand erklären?