Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabien LE LEZ
On Fri, 23 May 2008 11:47:17 +0200, Guillaume GOURDIN :
Je ne comprends pas pourquoi l'operateur de cast n'est pas appelé ici...
Si tu avais une fonction
void Mem_Copy_2 (uint16_t * out, const uint16_t * in, int count);
ce serait le cas.
Mais Mem_Copy<T> est un template. Il faut donc, avant de se préoccuper de l'appel proprement dit, savoir quel est le type T.
De deux choses l'une :
- soit tu l'indiques explicitement, et tout va bien :
Mem_Copy<uint16_t> ( out, buffer, size );
- soit tu laisses le compilateur s'en charger, et choisir un T tel que tous les arguments correspondent exactement (c'est-à-dire, sans cast implicite).
En d'autres termes, il faut trouver T tel que : T * == uint16_t * et T const * == LiwBuffer<uint16_t>
Ce n'est pas possible sans cast, donc le compilo refuse.
On Fri, 23 May 2008 11:47:17 +0200, Guillaume GOURDIN :
Je ne comprends pas pourquoi l'operateur de cast n'est pas appelé ici...
Si tu avais une fonction
void Mem_Copy_2 (uint16_t * out, const uint16_t * in, int count);
ce serait le cas.
Mais Mem_Copy<T> est un template. Il faut donc, avant de se préoccuper
de l'appel proprement dit, savoir quel est le type T.
De deux choses l'une :
- soit tu l'indiques explicitement, et tout va bien :
Mem_Copy<uint16_t> ( out, buffer, size );
- soit tu laisses le compilateur s'en charger, et choisir un T tel que
tous les arguments correspondent exactement (c'est-à-dire, sans cast
implicite).
En d'autres termes, il faut trouver T tel que :
T * == uint16_t *
et
T const * == LiwBuffer<uint16_t>
Ce n'est pas possible sans cast, donc le compilo refuse.
On Fri, 23 May 2008 11:47:17 +0200, Guillaume GOURDIN :
Je ne comprends pas pourquoi l'operateur de cast n'est pas appelé ici...
Si tu avais une fonction
void Mem_Copy_2 (uint16_t * out, const uint16_t * in, int count);
ce serait le cas.
Mais Mem_Copy<T> est un template. Il faut donc, avant de se préoccuper de l'appel proprement dit, savoir quel est le type T.
De deux choses l'une :
- soit tu l'indiques explicitement, et tout va bien :
Mem_Copy<uint16_t> ( out, buffer, size );
- soit tu laisses le compilateur s'en charger, et choisir un T tel que tous les arguments correspondent exactement (c'est-à-dire, sans cast implicite).
En d'autres termes, il faut trouver T tel que : T * == uint16_t * et T const * == LiwBuffer<uint16_t>
Ce n'est pas possible sans cast, donc le compilo refuse.