Bonjour à tous,
Je me pose des questions sur le(s) sens de instancié / spécialisé pour un
template.
Quand je fais ça :
std::vector<int> v;
Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé
par le compilo ?
Et dans l'exemple suivant :
template<typename T>
T Test()
{
return T();
}
void f()
{
int i = Test<int>();
}
Diriez-vous qu'il y a instanciation explicite de Test ?
Merci.
Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé par le compilo ?
Jean-Marc Bourguet
"Aurélien REGAT-BARREL" writes:
Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé par le compilo ?
Les deux.
Pour les noms, il y a une différence:
L'instantiation c'est le processus, La spécialisation c'est le résultat.
Pour les verbes je n'en vois pas.
A+ -- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé
par le compilo ?
Les deux.
Pour les noms, il y a une différence:
L'instantiation c'est le processus,
La spécialisation c'est le résultat.
Pour les verbes je n'en vois pas.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé par le compilo ?
Les deux.
Pour les noms, il y a une différence:
L'instantiation c'est le processus, La spécialisation c'est le résultat.
Pour les verbes je n'en vois pas.
A+ -- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Gabriel Dos Reis
Jean-Marc Bourguet writes:
| "Aurélien REGAT-BARREL" writes: | | > Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé | > par le compilo ? | | Les deux. | | Pour les noms, il y a une différence: | | L'instantiation c'est le processus, | La spécialisation c'est le résultat. | | Pour les verbes je n'en vois pas.
Dans
template<> struct vector<foo*> { };
est-ce « instancier » ou « specialiser » ?
-- Gaby
Jean-Marc Bourguet <jm@bourguet.org> writes:
| "Aurélien REGAT-BARREL" <nospam-aregatba@yahoo.fr.invalid> writes:
|
| > Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé
| > par le compilo ?
|
| Les deux.
|
| Pour les noms, il y a une différence:
|
| L'instantiation c'est le processus,
| La spécialisation c'est le résultat.
|
| Pour les verbes je n'en vois pas.
| "Aurélien REGAT-BARREL" writes: | | > Est-ce que std::vector est instancié pour le type int, ou est-il spécialisé | > par le compilo ? | | Les deux. | | Pour les noms, il y a une différence: | | L'instantiation c'est le processus, | La spécialisation c'est le résultat. | | Pour les verbes je n'en vois pas.
Dans
template<> struct vector<foo*> { };
est-ce « instancier » ou « specialiser » ?
-- Gaby
drkm
Jean-Marc Bourguet writes:
L'instantiation c'est le processus, La spécialisation c'est le résultat.
Tiens. Je pensais que la spécialisation c'était :
template< bool B > struct If { typedef True value ; } ;
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
drkm <usenet.fclcxx@fgeorges.org> writes:
Jean-Marc Bourguet <jm@bourguet.org> writes:
L'instantiation c'est le processus,
La spécialisation c'est le résultat.
Tiens. Je pensais que la spécialisation c'était :
template< bool B >
struct If {
typedef True value ;
} ;
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Aurélien REGAT-BARREL
Merci pour les réponses.
C'est une specialisation explicite.
Est-ce que ça aussi c'est une spécialisation explicite ?
template<typename T> T Test() { return T(); }
void f() { int i = Test<int>(); }
-- Aurélien REGAT-BARREL
Merci pour les réponses.
C'est une specialisation explicite.
Est-ce que ça aussi c'est une spécialisation explicite ?
Est-ce que ça aussi c'est une spécialisation explicite ?
template<typename T> T Test() { return T(); }
void f() { int i = Test<int>(); }
-- Aurélien REGAT-BARREL
Gabriel Dos Reis
"Aurélien REGAT-BARREL" writes:
| Merci pour les réponses. | | > C'est une specialisation explicite. | | Est-ce que ça aussi c'est une spécialisation explicite ? | | template<typename T> | T Test() | { | return T(); | } | | void f() | { | int i = Test<int>(); | }
| Merci pour les réponses.
|
| > C'est une specialisation explicite.
|
| Est-ce que ça aussi c'est une spécialisation explicite ?
|
| template<typename T>
| T Test()
| {
| return T();
| }
|
| void f()
| {
| int i = Test<int>();
| }
| Merci pour les réponses. | | > C'est une specialisation explicite. | | Est-ce que ça aussi c'est une spécialisation explicite ? | | template<typename T> | T Test() | { | return T(); | } | | void f() | { | int i = Test<int>(); | }
Non, c'est une demande d'instantiation implicite.
-- Gaby
Aurelien REGAT-BARREL
Non, c'est une demande d'instantiation implicite.
Qui si j'ai bien compris peut provoquer une spécialisation de la part du compilo ?
Non, c'est une demande d'instantiation implicite.
Qui si j'ai bien compris peut provoquer une spécialisation de la part du
compilo ?
Qui si j'ai bien compris peut provoquer une spécialisation de la part du compilo ?
drkm
"Aurelien REGAT-BARREL" writes:
Non, c'est une demande d'instantiation implicite.
Qui si j'ai bien compris peut provoquer une spécialisation de la part du compilo ?
Qui, si j'ai bien compris, nécessite l'existence d'une spécialisation. Ce qui peut évuentuellement déclencher une instanciation. La spécialisation sera alors créée à partir du modèle initial, ou d'une spécialisation partielle.
Qui si j'ai bien compris peut provoquer une spécialisation de la part du
compilo ?
Qui, si j'ai bien compris, nécessite l'existence d'une
spécialisation. Ce qui peut évuentuellement déclencher une
instanciation. La spécialisation sera alors créée à partir du modèle
initial, ou d'une spécialisation partielle.
Qui si j'ai bien compris peut provoquer une spécialisation de la part du compilo ?
Qui, si j'ai bien compris, nécessite l'existence d'une spécialisation. Ce qui peut évuentuellement déclencher une instanciation. La spécialisation sera alors créée à partir du modèle initial, ou d'une spécialisation partielle.
À confirmer.
--drkm
Gabriel Dos Reis
drkm writes:
| "Aurelien REGAT-BARREL" writes: | | >> Non, c'est une demande d'instantiation implicite. | | > Qui si j'ai bien compris peut provoquer une spécialisation de la part du | > compilo ? | | Qui, si j'ai bien compris, nécessite l'existence d'une | spécialisation. Ce qui peut évuentuellement déclencher une | instanciation. La spécialisation sera alors créée à partir du modèle | initial, ou d'une spécialisation partielle. | | À confirmer.
Oui.
-- Gaby
drkm <usenet.fclcxx@fgeorges.org> writes:
| "Aurelien REGAT-BARREL" <nospam.aregatba@yahoo.fr.invalid> writes:
|
| >> Non, c'est une demande d'instantiation implicite.
|
| > Qui si j'ai bien compris peut provoquer une spécialisation de la part du
| > compilo ?
|
| Qui, si j'ai bien compris, nécessite l'existence d'une
| spécialisation. Ce qui peut évuentuellement déclencher une
| instanciation. La spécialisation sera alors créée à partir du modèle
| initial, ou d'une spécialisation partielle.
|
| À confirmer.
| "Aurelien REGAT-BARREL" writes: | | >> Non, c'est une demande d'instantiation implicite. | | > Qui si j'ai bien compris peut provoquer une spécialisation de la part du | > compilo ? | | Qui, si j'ai bien compris, nécessite l'existence d'une | spécialisation. Ce qui peut évuentuellement déclencher une | instanciation. La spécialisation sera alors créée à partir du modèle | initial, ou d'une spécialisation partielle. | | À confirmer.