Thread overview | ||||||
---|---|---|---|---|---|---|
|
November 24, 2002 Explicit template argument specification for member templates | ||||
---|---|---|---|---|
| ||||
Here is a test-case:
struct A
{
template<typename T>
int f(T t)
{
return T::val;
}
template<typename T>
int g()
{
return T::val;
}
};
struct B
{
static const int val = 0;
};
int main()
{
A a;
B b;
return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
// Error: '(' expected following simple type name
}
bye, Christof
--
http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de
...and what have you contributed to the Net?
|
November 28, 2002 Re: Explicit template argument specification for member templates | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | i think that's because extra wrong directed information it's like u r parametizing the function in advance and parameter in function may be different and it may create conflict, and hence error is perfectly right "Christof Meerwald" <cmeerw@web.de> wrote in message news:arqv16$eqp$1@digitaldaemon.com... > Here is a test-case: > > struct A > { > template<typename T> > int f(T t) > { > return T::val; > } > > template<typename T> > int g() > { > return T::val; > } > }; > > struct B > { > static const int val = 0; > }; > > > int main() > { > A a; > B b; > > return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>(); > // Error: '(' expected following simple type name > } > > > bye, Christof > > -- > http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de > > ...and what have you contributed to the Net? |
January 06, 2003 Re: Explicit template argument specification for member templates | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | Still doesn't work if the program is slightly modified. On Sun, 24 Nov 2002 16:33:42 +0000 (UTC), Christof Meerwald wrote: > Here is a test-case: > > struct A > { > template<typename T> > int f(T t) > { > return T::val; > } > > template<typename T> > int g() > { > return T::val; > } > }; > > struct B > { > static const int val = 0; > }; > > > int main() > { > A a; > B b; > > return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>(); > // Error: '(' expected following simple type name int i = a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>(); int j = a.f<C>(c) + a.f<>(c) + a.f(c) + a.g<C>(); // Error: 'A::g' is already defined > } bye, Christof -- http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de ...and what have you contributed to the Net? |
January 07, 2003 Re: Explicit template argument specification for member templates | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | Oops, missed the definition of C: On Mon, 6 Jan 2003 19:23:56 +0000 (UTC), Christof Meerwald wrote: > Still doesn't work if the program is slightly modified. > > On Sun, 24 Nov 2002 16:33:42 +0000 (UTC), Christof Meerwald wrote: >> Here is a test-case: >> >> struct A >> { >> template<typename T> >> int f(T t) >> { >> return T::val; >> } >> >> template<typename T> >> int g() >> { >> return T::val; >> } >> }; >> >> struct B >> { >> static const int val = 0; >> }; struct C { static const int val = 1; }; >> int main() >> { >> A a; >> B b; >> >> return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>(); >> // Error: '(' expected following simple type name > > int i = a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>(); > int j = a.f<C>(c) + a.f<>(c) + a.f(c) + a.g<C>(); > // Error: 'A::g' is already defined > >> } bye, Christof -- http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de ...and what have you contributed to the Net? |
Copyright © 1999-2021 by the D Language Foundation