Subject: Re: [Boost-bugs] [Boost C++ Libraries] #7254: Proto expressions are not MPL sequences
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-08-21 18:04:28
#7254: Proto expressions are not MPL sequences
--------------------------------------+-------------------------------------
Reporter: mgaunard | Owner: eric_niebler
Type: Bugs | Status: new
Milestone: To Be Determined | Component: proto
Version: Boost Development Trunk | Severity: Problem
Resolution: | Keywords:
--------------------------------------+-------------------------------------
Comment (by eric_niebler):
I've wanted to do this, but there's a snag. MPL sequences use tag
dispatching. You can get the tag of an MPL sequence either by specializing
`mpl::sequence_tag` or by having a nested `tag` typedef in your sequence
type. Neither is satisfactory for Proto.
Specializing `mpl::sequence_tag` is a non-starter because any type that
uses `proto::extends` or `BOOST_PROTO_EXTENDS` can be a Proto expression.
This is an open set.
Having a nested `tag` type is a non-starter because expressions are part
of end-users' APIs, and Proto shouldn't be claiming such a common
identifier for itself. Someone might want `e.tag` to mean something in
their DSL.
BTW, Fusion doesn't have this problem because it uses `fusion_tag` instead
of simply `tag`.
I'm open to suggestions.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/7254#comment:1> 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:10 UTC