Boost logo

Boost :

Subject: Re: [boost] [Boost-bugs] Fwd: [Boost C++ Libraries] #11211: Fusion example no longer compiles
From: Joel de Guzman (djowel_at_[hidden])
Date: 2015-04-21 03:24:12


Yes we should. This is a showstopper.

On 4/21/15 3:06 PM, Damien Buhl wrote:
> Sorry for this message, I just saw after sending that Flast already
> replied about the problem :
>
> https://svn.boost.org/trac/boost/ticket/11211?replyto=3#comment:3
>
> Shouldn't we make some bugfix release ? Because it is a seriously weird
> issue.
>
> On 21/04/2015 09:01, Damien Buhl wrote:
>> Hi Joel,
>>
>> Thanks for forwarding.
>>
>> Looks like the support for BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED was
>> added to DEFINE_STRUCT in a too strong way, which makes it impossible to
>> use non-constexpr enabled types (namely std::string).
>>
>> I think the problem comes from the addition of BOOST_CONSTEXPR where
>> BOOST_FUSION_GPU_ENABLED already was.
>>
>> In this commit
>> https://github.com/boostorg/fusion/commit/2114bfca6c8d5e4f7fe2439346e1feddfd550ea6
>>
>> there is BOOST_CONSTEXPR added for the constructors and assignment
>> operators.
>>
>> I think we have to remove the constexpr for this part, because we cannot
>> add the requirements that the types the users gives to DEFINE_STRUCT are
>> valid within constant expression.
>>
>> It also didn't come out by unit-tests runs, because our test are only
>> done with int types. We have to add types which aren't constant-enabled
>> to the tests for DEFINE_STRUCT and by the way for ADAPT also.
>>
>> I understand the idea behind adding BOOST_CONSTEXPR everywhere where
>> BOOST_FUSION_GPU_ENABLED was, but actually it's not the same : on GPU
>> there isn't any scenarii where one uses std::string I think, while it is
>> typical in normal execution platform, and by the way BOOST_CONSTEXPR
>> shouldn't be in this file.
>>
>> I've pushed a small commit where it then compiles for me on clang + g++
>> with C++03,11,14 :
>>> https://github.com/boostorg/fusion/compare/boostorg:master...daminetreg:feature/fix-for-11211?expand=1
>>
>>
>> Cheers,
>>
>> --
>> Damien Buhl
>>
>> On 20/04/2015 21:18, Joel de Guzman wrote:
>>> Hello Kohei, Damien,
>>>
>>> Uh oh. Do you know what's happening here?
>>> I'm getting:
>>>
>>> Constexpr constructor never produces a constant expression
>>>
>>> How did this slip?
>>>
>>> -------- Forwarded Message --------
>>> Subject: [Boost C++ Libraries] #11211: Fusion example no longer compiles
>>> Date: Mon, 20 Apr 2015 19:01:29 -0000
>>> From: Boost C++ Libraries <noreply_at_[hidden]>
>>> CC: boost-bugs_at_[hidden]
>>>
>>> #11211: Fusion example no longer compiles
>>> -----------------------------------------------------+---------------------
>>> Reporter: Adrián Etchevarne <adrian.etchevarne@…> | Owner: djowel
>>> Type: Bugs | Status: new
>>> Milestone: To Be Determined | Component: fusion
>>> Version: Boost 1.58.0 | Severity: Problem
>>> Keywords: fusion |
>>> -----------------------------------------------------+---------------------
>>> From the manual:
>>>
>>> {{{
>>>
>>> #include <string>
>>> #include "boost/fusion/adapted/struct/define_struct.hpp"
>>>
>>> // demo::employee is a Fusion sequence
>>> BOOST_FUSION_DEFINE_STRUCT(
>>> (demo), employee,
>>> (std::string, name)
>>> (int, age))
>>>
>>>
>>> int main()
>>> {
>>> }
>>>
>>> }}}
>>>
>>> It fails to compile with boost 1.58. With boost 1.57, compiles
>>> successfully.
>>>
>>> g++ --std=c++11 test.cpp -I /home/saknussemm/downloads/boost_1_58_0
>>>
>>> clang fails with a similar error.
>>>
>> _______________________________________________
>> Boost-bugs mailing list
>> Boost-bugs_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-bugs
>>

-- 
Joel de Guzman
http://www.ciere.com
http://boost-spirit.com
http://www.cycfi.com/

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