Subject: Re: [Boost-bugs] [Boost C++ Libraries] #11897: Compile failure in type_traits_detail::mp_valid_impl with CUDA 7.0
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-01-11 14:57:23
#11897: Compile failure in type_traits_detail::mp_valid_impl with CUDA 7.0
-------------------------------+-------------------------
Reporter: a.grund@⦠| Owner: johnmaddock
Type: Bugs | Status: new
Milestone: To Be Determined | Component: type_traits
Version: Boost 1.60.0 | Severity: Showstopper
Resolution: | Keywords:
-------------------------------+-------------------------
Comment (by Alex Grund <a.grund@â¦>):
Yes, but the implementation of `BOOST_WORKAROUND` is:
{{{
# define BOOST_WORKAROUND(symbol, test) \
((symbol ## _WORKAROUND_GUARD + 0 == 0) && \
(symbol != 0) && (1 % (( (symbol test) ) + 1)))
}}}
There is a check if that symbol evaluates to `0` causing the failure I
described above. This is why `BOOST_WORKAROUND` cannot be used for this!
So:[[BR]]
1) Currently not. But similar uses of variadic templates will probably
fail. Currently nothing else uses `mp_defer` (1.60) but other code in
future versions may use that as well and run into the same bug.[[BR]]
2) No because `BOOST_WORKAROUND` always evaluates to false for this. Prior
to 7.5 the symbol is undefined causing the `(symbol != 0)` check to fail,
and in >=7.5 the 2nd part of the check will fail.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/11897#comment:8> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:19 UTC