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/2114bfca6c8d5e4f7fe2439346e1feddfd...
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:feat...
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
CC: boost-bugs@lists.boost.org #11211: Fusion example no longer compiles -----------------------------------------------------+--------------------- Reporter: Adrián 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@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-bugs
-- Joel de Guzman http://www.ciere.com http://boost-spirit.com http://www.cycfi.com/