
"Arkadiy Vertleyb" <vertleyb@hotmail.com> wrote
"Andy Little" <andy@servocomm.freeserve.co.uk> wrote
Surely Typeof is used in situations where semicolon not allowed:
template<typename TL, typename TR> point<BOOST_TYPEOF_TPL(TL() + TR())> operator +( point<TL> const & lhs, vect<TR> const& rhs);
No, what I actually mean is:
BOOST_TYPEOF_REGISTER_TYPE(...) BOOST_TYPEOF_REGISTER_TEMPLATE(...)
Oops soory. However this identifies a point which I dont think has been made in this discussion. A generic macro is just a shapeless blob standing in for some text. Therefore I dont see it is possible to make general rules such as to whether a trailing semicolon is included. There is simply not enough definition. One would have to classify the *class* of macro rigorously (probably via the grammar) first. eg is this macro representing a typeid, an assignment-expression etc. Isnt this really what we are discussing ... fitting a macro into the grammar of the language? Identify the *class* of macro in the grammar to identify whether it is possible to use a particular macro in situations where a semicolon is not required, or whether the semicolon is always necessary, hence rightfully included as part of the macro. regards Andy Little