| Gabriel Dos Reis wrote in message | news:... | > Marc Boyer writes: | | > | Gabriel Dos Reis wrote: | > | > Marc Boyer writes: | | > | >| Gabriel Dos Reis wrote: | > | >| J'ai lu et relu ton message. Je ne comprends pas pourquoi il | > | >| n'y a plus de déduction d'argument template. | | > | > C'est parce que, dns ce cas, pour qu'il y ait déduction d'argument | > | > de templates, il faut qu'il y a une fonction template. Or il n'y | > | > en a pas :-). | | > | > La fonction amie operator+ (définie dans ArithmeticType<>) et la | > | > fonction amie add (définie dans Entier<>) ne sont pas des | > | > fonctions templates. | | > | La distinction qui m'avait échappée, c'est qu'une fonction | > | template n'est pas la même chose qu'une function membre d'une classe | > | template (ce dont j'aurais pu me souvenir puisque l'une accepte les | > | spécialisations partielles et pas l'autre), et que les fonctions | > | amies de classes templates sont encore une troisième chose, c'est ça | > | ? | | > Presque. Les fonctions amies d'une classe template ne sont pas | > forcément templates. Elles ne sont pas templates juste parce qu'elles | > sont définies dans une class template. Elles ne sont templates que si | > leurs déclarations sont précédées de l'entête « template<...> ». | | Juste pour voir si j'ai bien compris. Dans le cas d'une fonction | templatée, l'existance de la fonction dépend de l'induction des | types.
ou de la vérification des arguments de template lorsque ceux-ci sont explicitement fournis.
| Dans le cas d'une fonction ami définies dans une classe | templatée, la fonction existe (ou au moins est déclarée) du moment que | l'instance de la classe existe.
Tout à fait exact.
kanze@gabi-soft.fr writes:
| Gabriel Dos Reis <gdr@integrable-solutions.net> wrote in message
| news:<m3vft9e3ld.fsf@uniton.integrable-solutions.net>...
| > Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
|
| > | Gabriel Dos Reis wrote:
| > | > Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
|
| > | >| Gabriel Dos Reis wrote:
| > | >| J'ai lu et relu ton message. Je ne comprends pas pourquoi il
| > | >| n'y a plus de déduction d'argument template.
|
| > | > C'est parce que, dns ce cas, pour qu'il y ait déduction d'argument
| > | > de templates, il faut qu'il y a une fonction template. Or il n'y
| > | > en a pas :-).
|
| > | > La fonction amie operator+ (définie dans ArithmeticType<>) et la
| > | > fonction amie add (définie dans Entier<>) ne sont pas des
| > | > fonctions templates.
|
| > | La distinction qui m'avait échappée, c'est qu'une fonction
| > | template n'est pas la même chose qu'une function membre d'une classe
| > | template (ce dont j'aurais pu me souvenir puisque l'une accepte les
| > | spécialisations partielles et pas l'autre), et que les fonctions
| > | amies de classes templates sont encore une troisième chose, c'est ça
| > | ?
|
| > Presque. Les fonctions amies d'une classe template ne sont pas
| > forcément templates. Elles ne sont pas templates juste parce qu'elles
| > sont définies dans une class template. Elles ne sont templates que si
| > leurs déclarations sont précédées de l'entête « template<...> ».
|
| Juste pour voir si j'ai bien compris. Dans le cas d'une fonction
| templatée, l'existance de la fonction dépend de l'induction des
| types.
ou de la vérification des arguments de template lorsque ceux-ci sont
explicitement fournis.
| Dans le cas d'une fonction ami définies dans une classe
| templatée, la fonction existe (ou au moins est déclarée) du moment que
| l'instance de la classe existe.
| Gabriel Dos Reis wrote in message | news:... | > Marc Boyer writes: | | > | Gabriel Dos Reis wrote: | > | > Marc Boyer writes: | | > | >| Gabriel Dos Reis wrote: | > | >| J'ai lu et relu ton message. Je ne comprends pas pourquoi il | > | >| n'y a plus de déduction d'argument template. | | > | > C'est parce que, dns ce cas, pour qu'il y ait déduction d'argument | > | > de templates, il faut qu'il y a une fonction template. Or il n'y | > | > en a pas :-). | | > | > La fonction amie operator+ (définie dans ArithmeticType<>) et la | > | > fonction amie add (définie dans Entier<>) ne sont pas des | > | > fonctions templates. | | > | La distinction qui m'avait échappée, c'est qu'une fonction | > | template n'est pas la même chose qu'une function membre d'une classe | > | template (ce dont j'aurais pu me souvenir puisque l'une accepte les | > | spécialisations partielles et pas l'autre), et que les fonctions | > | amies de classes templates sont encore une troisième chose, c'est ça | > | ? | | > Presque. Les fonctions amies d'une classe template ne sont pas | > forcément templates. Elles ne sont pas templates juste parce qu'elles | > sont définies dans une class template. Elles ne sont templates que si | > leurs déclarations sont précédées de l'entête « template<...> ». | | Juste pour voir si j'ai bien compris. Dans le cas d'une fonction | templatée, l'existance de la fonction dépend de l'induction des | types.
ou de la vérification des arguments de template lorsque ceux-ci sont explicitement fournis.
| Dans le cas d'une fonction ami définies dans une classe | templatée, la fonction existe (ou au moins est déclarée) du moment que | l'instance de la classe existe.