Daniel Frey wrote:

> > The current version of the file type_with_alignment.hpp 
> gives spourios 
> > errors, because some macro expansion code generates '>>' 
> instead of '>
> > 
> >>' (closing template brackets). The corresponding fixing patch is
> > 
> > attached.
> 
> Just out of curiousity: Is this a workaround for a compiler 
> bug? I think 
> I remember that if generated by the preprocessor, tokens need to be 
> glued with ## to form a single new token like >>, otherwise even two 
> consecutive >'s will be treated like two tokens. My colleague 
> says I'm 
> wrong. Am I? :)

Concatenating two tokens with the '##' operator, where the result isn't
a new valid token results in undefined behaviour. In your sample it
yields '>>', which is a valid token, so it is well defined. In other
contexts two consecutive '>' characters are always interpreted as '>>'
and not as two single '>'.

But this isn't the point here. The '>>' was not formend by a '##'
operator but by plain consecutiveness:

#define SOME_MACRO(T)  <T>
SOME_MACRO(some_class<...>)  // expands to <some_class<...>>

But it should be <some_class<...> >

Regards Hartmut




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to