De volgende code:
is volgens Comeau ongeldig:
Waarom is een type name daar niet toegestaan? En waarom verwacht hij daar een expressie?
Als ik vervolgens de volgende code toevoeg:
compileert het zaakje wel. In f roep ik duidelijk een member functie aan, hoe kan één of andere nonmember f ineens geldig maken?
C++:
1
2
| template <typename T> void f (T t) { t.g<int>(); } |
is volgens Comeau ongeldig:
code:
1
2
3
4
5
6
7
| type name is not allowed
t.g<int>();
^
expected an expression
t.g<int>();
^ |
Waarom is een type name daar niet toegestaan? En waarom verwacht hij daar een expressie?
Als ik vervolgens de volgende code toevoeg:
C++:
1
| template <typename U> void g (); |
compileert het zaakje wel. In f roep ik duidelijk een member functie aan, hoe kan één of andere nonmember f ineens geldig maken?