The following code works here:
// -----------------------------------------------------------------------
#include
using namespace boost;
typedef proto::terminal<int>::type terminal;
struct addition:
proto::or_
<
proto::terminalproto::_,
proto::plus
>
{};
struct equation:
proto::or_
<
addition,
proto::equal_to
>
{};
template<class Expr>
struct extension;
struct my_domain:
proto::domain
<
proto::pod_generator< extension>,
equation
>
{};
template<class Expr>
struct extension
{
BOOST_PROTO_EXTENDS(
Expr
, extension<Expr>
, my_domain
)
};
int main()
{
extension<terminal> i;
i == i;
}
Seems proto::or_ wiht *1* condition acts weird.
Eric, am I right or am I hallucinating and missing the obvious ?