Boost logo

Boost :

Subject: Re: [boost] "is-assignable" compile error using Boost 1.68 / LLVM-Clang / Windows
From: John Maddock (jz.maddock_at_[hidden])
Date: 2018-09-20 07:41:36


On 20/09/2018 06:40, Gavin Lambert via Boost wrote:
> On 20/09/2018 16:47, Adam Hartshorne wrote:
>> Looks like boost::variant is the problem.
>
> No, those are just plain includes.  Nothing to see there.
>
>> 2>C:\boost_1_68_0\boost/type_traits/has_trivial_move_assign.hpp(49):
>> error
>> : no template named 'is_assignable'; did you mean 'std::is_assignable'?
>> 2>C:\boost_1_68_0\boost/type_traits/intrinsics.hpp(233): note: expanded
>> from macro 'BOOST_HAS_TRIVIAL_MOVE_ASSIGN'
>
> The problem is actually here.
>
> As degski suggests, it's probably a compiler detection quirk where the
> BOOST_HAS_TRIVIAL_MOVE_ASSIGN macro has been defined because
> __has_feature exists but <boost/type_traits/is_assignable.hpp> was not
> included because __clang doesn't exist.  Or something like that.

Just to be clear, it's a flat out bug in type_traits and has been fixed
for the next release (which doesn't help the OP), a workaround would be
to add:

#include <boost/type_traits/is_assignable.hpp>

before any other boost includes in your program.

Best, John.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk