drkm writes:
|> [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
|> Gabriel Dos Reis writes:
|> > drkm writes:
|> > | James Kanze writes:
|> > | > Il n'y a pas, formellement, une interdiction de surcharge.
|> > | 7.4/6 :
|> > | At most one function with a particular name can have C
|> > | language linkage.
|> > oui, mais tu peux surcharger sur le linkage. Sic.
|> Je la connaissais pas, celle-là. Comment se passe la résolution de
|> surcharge ?
En fait, je pensais plutôt au fait que tu peux surcharger une fonction
extern "C" avec d'autres fonctions extern "C".
Mais le surcharge sur le
linkage marche aussi, comme n'importe quel autre surcharge. (Comme j'ai
dit dans le thread, extern "C" joue sur les types.) Même, il y en a des
cas dans la norme, comme atexit.
Mais pour le petit exemple :
typedef void (*pfCpp)( void * ) ;
extern void f( void* ) ;
extern "C" {
typedef void (*pfC)( void * ) ;
extern void g( void* ) ;
}
void h( pfCpp ) ; // #1
void h( pfC ) ; // #2
h( f ) ; // appelle #1
h( g ) ; // appelle #2
Exactement comme n'importe quel autre surcharge, en fait.
drkm <usenet.fclcxx@fgeorges.org> writes:
|> [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
|> Gabriel Dos Reis <gdr@cs.tamu.edu> writes:
|> > drkm <usenet.fclcxx@fgeorges.org> writes:
|> > | James Kanze <james.kanze@free.fr> writes:
|> > | > Il n'y a pas, formellement, une interdiction de surcharge.
|> > | 7.4/6 :
|> > | At most one function with a particular name can have C
|> > | language linkage.
|> > oui, mais tu peux surcharger sur le linkage. Sic.
|> Je la connaissais pas, celle-là. Comment se passe la résolution de
|> surcharge ?
En fait, je pensais plutôt au fait que tu peux surcharger une fonction
extern "C" avec d'autres fonctions extern "C".
Mais le surcharge sur le
linkage marche aussi, comme n'importe quel autre surcharge. (Comme j'ai
dit dans le thread, extern "C" joue sur les types.) Même, il y en a des
cas dans la norme, comme atexit.
Mais pour le petit exemple :
typedef void (*pfCpp)( void * ) ;
extern void f( void* ) ;
extern "C" {
typedef void (*pfC)( void * ) ;
extern void g( void* ) ;
}
void h( pfCpp ) ; // #1
void h( pfC ) ; // #2
h( f ) ; // appelle #1
h( g ) ; // appelle #2
Exactement comme n'importe quel autre surcharge, en fait.
drkm writes:
|> [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
|> Gabriel Dos Reis writes:
|> > drkm writes:
|> > | James Kanze writes:
|> > | > Il n'y a pas, formellement, une interdiction de surcharge.
|> > | 7.4/6 :
|> > | At most one function with a particular name can have C
|> > | language linkage.
|> > oui, mais tu peux surcharger sur le linkage. Sic.
|> Je la connaissais pas, celle-là. Comment se passe la résolution de
|> surcharge ?
En fait, je pensais plutôt au fait que tu peux surcharger une fonction
extern "C" avec d'autres fonctions extern "C".
Mais le surcharge sur le
linkage marche aussi, comme n'importe quel autre surcharge. (Comme j'ai
dit dans le thread, extern "C" joue sur les types.) Même, il y en a des
cas dans la norme, comme atexit.
Mais pour le petit exemple :
typedef void (*pfCpp)( void * ) ;
extern void f( void* ) ;
extern "C" {
typedef void (*pfC)( void * ) ;
extern void g( void* ) ;
}
void h( pfCpp ) ; // #1
void h( pfC ) ; // #2
h( f ) ; // appelle #1
h( g ) ; // appelle #2
Exactement comme n'importe quel autre surcharge, en fait.
drkm writes:
| [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
| Gabriel Dos Reis writes:
| > oui, mais tu peux surcharger sur le linkage. Sic.
| Je la connaissais pas, celle-là. Comment se passe la résolution de
| surcharge ?
Comme dans les autres cas.
drkm <usenet.fclcxx@fgeorges.org> writes:
| [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
| Gabriel Dos Reis <gdr@cs.tamu.edu> writes:
| > oui, mais tu peux surcharger sur le linkage. Sic.
| Je la connaissais pas, celle-là. Comment se passe la résolution de
| surcharge ?
Comme dans les autres cas.
drkm writes:
| [ X-Post f.c.l.c et f.c.l.c++, Fu2 f.c.l.c++. ]
| Gabriel Dos Reis writes:
| > oui, mais tu peux surcharger sur le linkage. Sic.
| Je la connaissais pas, celle-là. Comment se passe la résolution de
| surcharge ?
Comme dans les autres cas.
drkm writes:
| Gabriel Dos Reis writes:
| > drkm writes:
| > | Gabriel Dos Reis writes:
| > | > oui, mais tu peux surcharger sur le linkage. Sic.
| > | Je la connaissais pas, celle-là. Comment se passe la
| > | résolution de surcharge ?
| > Comme dans les autres cas.
| C'est à dire que le linkage fait partie du système de type, et que
| la résolution est faire sur les argument de la fonction ?
Oui -- et dans le cas où on prend implicitement l'adresse de la
fonction, le type de destination joue pour sélectionner la bonne
fonction.
drkm <usenet.fclcxx@fgeorges.org> writes:
| Gabriel Dos Reis <gdr@cs.tamu.edu> writes:
| > drkm <usenet.fclcxx@fgeorges.org> writes:
| > | Gabriel Dos Reis <gdr@cs.tamu.edu> writes:
| > | > oui, mais tu peux surcharger sur le linkage. Sic.
| > | Je la connaissais pas, celle-là. Comment se passe la
| > | résolution de surcharge ?
| > Comme dans les autres cas.
| C'est à dire que le linkage fait partie du système de type, et que
| la résolution est faire sur les argument de la fonction ?
Oui -- et dans le cas où on prend implicitement l'adresse de la
fonction, le type de destination joue pour sélectionner la bonne
fonction.
drkm writes:
| Gabriel Dos Reis writes:
| > drkm writes:
| > | Gabriel Dos Reis writes:
| > | > oui, mais tu peux surcharger sur le linkage. Sic.
| > | Je la connaissais pas, celle-là. Comment se passe la
| > | résolution de surcharge ?
| > Comme dans les autres cas.
| C'est à dire que le linkage fait partie du système de type, et que
| la résolution est faire sur les argument de la fonction ?
Oui -- et dans le cas où on prend implicitement l'adresse de la
fonction, le type de destination joue pour sélectionner la bonne
fonction.