The following minimum sample fails to compile when using MSVC with /std:c++latest (C++20).
See: godbolt example
#include <vector>
#include <algorithm>
#include <boost/hof/proj.hpp>
#include <boost/hof/placeholders.hpp>
struct A
{
int i;
char c;
};
void foo(std::vector<A>& vec)
{
using namespace boost::hof;
std::sort(vec.begin(), vec.end(), proj(&A::i, _ < _));
}
The main issue is that HOF uses std::is_literal_type which was deprecated in C++17 and removed in C++20 and the Microsoft STL has removed it (link)