Re: [Boost-bugs] [Boost C++ Libraries] #7254: Proto expressions are not MPL sequences

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