Si plus loin tu appelle foo(10), on va récuperer une erreur lors de a.baz() disant que le type int n'a pas de méthode baz. Les assomptions sur T sont implicites. Et le problème c'est que cela peut se propager très très loin. Si l'appel à baz se fait après plusieurs résolution de type / appels de fonctions qui travaillent sur T, tu vas récupérer une erreur dans un bout de code que tu ne maîtrise pas du tout et largement hors du contexte. Alors que on peut supposer que le code de foo est correct et que le problème est au niveau de a.baz().
En étant plus explicite sur le type de foo, l'erreur sera sans doute plus ciblée.
[^] # Re: Typage structurel
Posté par Guillaum (site web personnel) . En réponse au journal C++ Hell/Heaven et les concepts. Évalué à 3.
};
Si plus loin tu appelle
foo(10), on va récuperer une erreur lors dea.baz()disant que le type int n'a pas de méthodebaz. Les assomptions surTsont implicites. Et le problème c'est que cela peut se propager très très loin. Si l'appel àbazse fait après plusieurs résolution de type / appels de fonctions qui travaillent surT, tu vas récupérer une erreur dans un bout de code que tu ne maîtrise pas du tout et largement hors du contexte. Alors que on peut supposer que le code defooest correct et que le problème est au niveau dea.baz().En étant plus explicite sur le type de
foo, l'erreur sera sans doute plus ciblée.