Boost logo

Proto :

Subject: [proto] Proto domains shenanigans
From: joel falcou (joel.falcou_at_[hidden])
Date: 2010-10-13 14:38:07


OK, I have a situation in which proto domain/subdomain could help me but
i can't
wrap my head around a proper solution. Here is the deal, i have various
sub EDSL that goes like:

- constants EDSL provides named consatnts (like zero_, one_, pi_ etc)
that are meant to be terminal
usable in any other EDSL en provide a type based way to know which
constant is beging used and
provide optimization in came it helps (e.g detecting x < zero_ in SIMD
EDSL to replace with the
SSSE3 corresponding fused operation)

- a SIMD vector EDSL

- various container based EDSL : table (multidim array), vector, matrix
and tensor, polynom and rigid_transform.

The rules I want to have is :

- constant can mix with any other EDSL
- SIMD don't mix with anybody
- table mix with every other container and make them evaluates as table
(e.g matrix * table == elementwise product and not matrix product)
- vector, matrix, tensor can mix
- polynom can mix with table but not with vector, matrix, tensor
- rigid_transform van mix with table and matrix

However i can't find any combination of domain definition that satisfy
all. Is there some systematic methodologies to not fail at that ?


Proto list run by eric at boostpro.com