On 2006-11-04, Roland Levillain <roland(a)lrde.epita.fr> wrote:
>
> % cat icpc-macro-issue.cc
> template <typename T>
> struct Foo
> {
> };
>
> /* Icpc chokes when expanding this macro when T is a template type:
> T is substituted with no additional surrounding space, generating
> a token `>>'.
>
> G++ has no such problem, but I haven't checked which is the right
> behavior, required by the ISO standard.
>
> Note that this will no longer be a problem with C++ 0x, since
> expressions like `Foo<Foo<int>>' will be valid. */
> #define foo(T) Foo<T>
>
> int
> main ()
> {
> foo(Foo<int>) f;
> }
> % icpc -gcc-name=gcc-4.0 -o icpc-macro-issue icpc-macro-issue.cc
> icpc-macro-issue.cc(20): error: space required between adjacent ">" delimiters of nested template argument lists (">>" is the right shift operator)
> foo(Foo<int>) f;
> ^
>
> compilation aborted for icpc-macro-issue.cc (code 2)
> % g++ -o icpc-macro-issue icpc-macro-issue.cc
> %
>
>
Ah bah oui, j'avais pas pense a ça mais le problème est évident.
--
SIGOURE Benoit aka Tsuna (SUSv3 compliant)
_____ "On a long enough timeline, the survival rate
/EPITA\ Promo 2008.CSI/ACU for everyone drops to zero" -- Jack.