
El 09/02/2010 03:45 a.m., Emil Dotchevski escribió:
2010/2/8 Agustín K-ballo Bergé <kaballo86@hotmail.com>:
boost::la::la_detail::vref_< T > get( int index ) { return boost::la::vref( ... ); }
I was actually interested in the ... part :)
It's merely an expression that returns a T(&)[N].
Why isn't it plausible for you to do:
my_own_conforming_vector_type get( int index )
I want to return a conforming vector type, and whatever vref returns fills the bill perfectly. My project is a generic OpenGL model, specialized by a sequence of attributes that describe a vertex.
In my current project I use the library to generically work with any conforming vertex type, so I can't use the subscript operator since it would be optional. That's why I propose adding support for subscript operator via vref/mref. vref/mref would wrap the UDTs and implement the subscript operators, similar to what they currently do for arrays.
However, all this presumes that op| doesn't work well. The only potential issue with it is the low precedence. Is that why you'd rather use op[ ]?
I have been bitten by the precedence issue to the point I enclose every pipe operation in parenthesis. And it gets worse if "complex swizzling expressions" are added to the library. Consider ( v1 | ( Y, -X ) ) * 2; versus v1[ Y, -X ] * 2; It *might* be possible to get ride of the precedence problems by using expression templates, but even then subscripting operator seems more natural. K-ballo.- http://talesofcpp.blogspot.com