hof icon indicating copy to clipboard operation
hof copied to clipboard

Build Error C2039 with MSVC when using /std:c++latest (C++20) - std::is_literal_type removed

Open pumkinpal opened this issue 4 years ago • 2 comments

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)

pumkinpal avatar Feb 01 '21 13:02 pumkinpal

So it looks like __is_literal_type intrinsic is still available, so I should use that instead.

pfultz2 avatar Feb 01 '21 18:02 pfultz2

@pfultz2 any chance that this makes it into Boost 1.76.0?

Tradias avatar Apr 12 '21 17:04 Tradias