
Boost : 
From: Gabriel Dos Reis (Gabriel.DosReis_at_[hidden])
Date: 20011030 11:11:32
"Peter Dimov" <pdimov_at_[hidden]> writes:
 From: "Gabriel Dos Reis" <Gabriel.DosReis_at_[hidden]>
 > "Peter Dimov" <pdimov_at_[hidden]> writes:
 >
 >  This state of affairs makes sense to me, since if we adopt the other
 >  alternative, that f<int> is allowed, parsing the construct:
 > 
 >  identifier '<' expression
 > 
 >  would be much more complicated. Exactly how complicated I don't know.
 :)
 >
 > Exactly in *which ways* do you think it will make parsing much more
 > complicated?

 Sorry, I'm not a compiler expert.

 My line of thought was:

 namespace N1
 {
 struct A {};
 template<class T> void f(T t);
 }

 namespace N2
 {
 struct A {};
 template<int I> void f(A);
 }

 namespace N3
 {
 struct A {};
 template<void * p> void f(A);
 }

 int main()
 {
 using ?::A;
 f<expression>(A());
This instance of "parsing problem" is a already present in codes like
namespace N
{
template<typename T, typename U> void f(T, U);
struct X { };
}
namespace M
{
struct A { };
template<typename> sruct Y;
template<typename T> void f(Y<T>*, A);
void f(int, double);
template<typename T>
struct Y {
void g()
{
using N::f;
T t;
f(this, t);
f< Y<T>*, T >(this, t);
}
}
}
I don't think requiring Koenig lookup for tempateid will make parsing
of C++ programs much more complicated. What is required is just the
*syntactic* form of a function call.
 Gaby
CodeSourcery, LLC http://www.codesourcery.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk