| View previous topic :: View next topic |
| Author |
Message |
Benoit Dejean Guest
|
Posted: Thu Sep 04, 2003 8:31 pm Post subject: Spécialisation partielle de fonctions impossible |
|
|
mon compilateur s'y refuse et je n'arrive pas à trouver de référence
l'expliquant. est ce mon compilateur ou y a t il une bonne raison qui fait
que cela n'est pas possible/permis avec les fonctions à contrario des
classes?
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Thu Sep 04, 2003 8:35 pm Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
| Quote: | mon compilateur s'y refuse et je n'arrive pas à trouver de référence
l'expliquant. est ce mon compilateur ou y a t il une bonne raison qui fait
que cela n'est pas possible/permis avec les fonctions à contrario des
classes?
|
La spécialisation partielle des fonctions templates n'existe
pas. C'est comme ça.
Si tu veux spécialiser partiellement, utilise quelque chose que tu
peux, i.e. une classe template.
-- Gaby
|
|
| Back to top |
|
 |
Benoit Dejean Guest
|
Posted: Fri Sep 05, 2003 7:41 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Le Thu, 04 Sep 2003 22:35:17 +0200, Gabriel Dos Reis a écrit :
| Quote: | Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
[texte cité caché]
La spécialisation partielle des fonctions templates n'existe
pas. C'est comme ça.
|
et y a t il une raison valable ?
| Quote: | Si tu veux spécialiser partiellement, utilise quelque chose que tu
peux, i.e. une classe template.
|
ce que je fais
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Sep 05, 2003 8:02 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
| Quote: | Le Thu, 04 Sep 2003 22:35:17 +0200, Gabriel Dos Reis a écrit :
Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
[texte cité caché]
La spécialisation partielle des fonctions templates n'existe
pas. C'est comme ça.
et y a t il une raison valable ?
|
à part que la norme le dit ?
-- Gaby
|
|
| Back to top |
|
 |
Julien Blanc Guest
|
Posted: Fri Sep 05, 2003 8:29 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Gabriel Dos Reis wrote:
| Quote: | Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
| Le Thu, 04 Sep 2003 22:35:17 +0200, Gabriel Dos Reis a écrit :
|
| > Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
|
| >> [texte cité caché]
|
| > La spécialisation partielle des fonctions templates n'existe
| > pas. C'est comme ça.
|
| et y a t il une raison valable ?
à part que la norme le dit ?
|
et une raison valable au fait que la norme le dit ?
je suppose que quelque part le compilateur pourrait se retrouver avec
deux spécialisations partielles candidates pour une expression, et aucun
critère de choix, mais je ne comprends pas pourquoi c'est possible pour
une classe mais pas une fonction (je suppose qu'il y'a quelque chose qui
m'échappe sur les différences entre fonctions et classes template).
--
Julien Blanc. Equipe cadp. VERIMAG. Grenoble. France.
|
|
| Back to top |
|
 |
Alain Migeon Guest
|
Posted: Fri Sep 05, 2003 8:58 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
In article <m3r82wl2be.fsf (AT) uniton (DOT) integrable-solutions.net>,
[email]gdr (AT) integrable-solutions (DOT) net[/email] says...
| Quote: | Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
| mon compilateur s'y refuse et je n'arrive pas à trouver de référence
| l'expliquant. est ce mon compilateur ou y a t il une bonne raison qui fait
| que cela n'est pas possible/permis avec les fonctions à contrario des
| classes?
La spécialisation partielle des fonctions templates n'existe
pas. C'est comme ça.
Si tu veux spécialiser partiellement, utilise quelque chose que tu
peux, i.e. une classe template.
|
Est-ce que le code suivant est conforme à la norme. J'utilise dans un
map, une déclaration incomplète d'une struct : A.
//-----------------------------
#include <map>
using std::map;
using std::less;
struct A;
typedef map <int, A, less MapA;
struct B
{
MapA::iterator itMapA;
};
typedef map <int, B, less MapB;
struct A
{
MapB::iterator itMapB;
};
int main ()
{
return 0;
}
//-----------------------------
Sous VC6, il ne compile pas avec la STL de Dinkumware, mais par contre,
STLport l'accepte.
Voilà l'erreur retournée par VC6, avec la STL de Dinkumware.
d:program filesmicrosoft visual studiovc98includeutility(26) :
error C2079: 'second' uses undefined struct 'A'
d:program filesmicrosoft visual studiovc98includextree(42)
: see reference to class template instantiation 'std::pair<int const
,struct A>' being compiled
d:program filesmicrosoft visual studiovc98includemap(46) :
see reference to class template instantiation 'std::_Tree<int,struct
std::pair
std::less
t A> >::_Kfn,struct std::less<int>,class std::allocator<struct A> >'
being compiled
e:devtesttest_maptest_map.cpp(10) : see reference to class
template instantiation 'std::map<int,struct A,struct std::less
' being compiled
Alain
|
|
| Back to top |
|
 |
Julien Blanc Guest
|
Posted: Fri Sep 05, 2003 9:22 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Gabriel Dos Reis wrote:
| Quote: | Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:
| mais je ne comprends pas pourquoi c'est
| possible pour une classe mais pas une fonction (je suppose qu'il y'a
| quelque chose qui m'échappe sur les différences entre fonctions et
| classes template).
jusqu'à nouveau désordre, on ne surcharge pas les classes il me semble.
|
Certes. Mais quel est le rôle de la surcharge dans tout ça ?
Parce que si j'ai
template <class T> foo { T elem };
foo<int> et foo<double> sont deux type différents à tous égards.
mais si j'ai une fonction template
template<class T> int foo(T elem) {..};
dois-je comprendre que foo<int>(int) est une surcharge de
foo<double>(double) ?, et pas une fonction différente à tous points de vue ?
--
Julien Blanc. Equipe cadp. VERIMAG. Grenoble. France.
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Sep 05, 2003 9:28 am Post subject: Re: Spécialisation partielle de fonctionsimpossible |
|
|
Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:
| Quote: | Gabriel Dos Reis wrote:
Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:
| mais je ne comprends pas pourquoi c'est
| possible pour une classe mais pas une fonction (je suppose qu'il y'a
| quelque chose qui m'échappe sur les différences entre fonctions et
| classes template).
jusqu'à nouveau désordre, on ne surcharge pas les classes il me
semble.
Certes. Mais quel est le rôle de la surcharge dans tout ça ?
|
tu veux que je refasses le débat passé ici ?
| Quote: | Parce que si j'ai
template <class T> foo { T elem };
foo<int> et foo<double> sont deux type différents à tous égards.
|
Yep.
| Quote: | mais si j'ai une fonction template
template<class T> int foo(T elem) {..};
|
ajoute
template<class T> void foo(T* p, const T& = T()) { }
-- Gaby
|
|
| Back to top |
|
 |
Julien Blanc Guest
|
Posted: Fri Sep 05, 2003 10:27 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Gabriel Dos Reis wrote:
| Quote: |
tu veux que je refasses le débat passé ici ?
|
non . J'irai chercher dans les archives si le problème me tarabuste
encore. Et je crois avoir à peu près compris, merci de tes pistes.
--
Julien Blanc. Equipe cadp. VERIMAG. Grenoble. France.
|
|
| Back to top |
|
 |
Christophe Lephay Guest
|
Posted: Fri Sep 05, 2003 10:45 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
"Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message de
news:m3ad9jiny8.fsf (AT) uniton (DOT) integrable-solutions.net...
Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:
| Quote: | Certes. Mais quel est le rôle de la surcharge dans tout ça ?
tu veux que je refasses le débat passé ici ?
|
Ou juste en rappeler la conclusion ?
Chris
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Sep 05, 2003 10:56 am Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
"Christophe Lephay" <christophe-lephay (AT) wanadoo (DOT) fr> writes:
| Quote: | "Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message de
news:m3ad9jiny8.fsf (AT) uniton (DOT) integrable-solutions.net...
Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:
Certes. Mais quel est le rôle de la surcharge dans tout ça ?
tu veux que je refasses le débat passé ici ?
Ou juste en rappeler la conclusion ?
|
Si je me souviens bien, il n'y a pas eu de conlucion acceptée par les
deux parties Il y a eu des tentatives de propositions qui sont
restéea lettre morte.
[Entre temps, ma compréhension des templates a progressé ainsi que ma
conviction ]
|
|
| Back to top |
|
 |
Benoit Dejean Guest
|
Posted: Fri Sep 05, 2003 3:05 pm Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Le Fri, 05 Sep 2003 12:56:41 +0200, Gabriel Dos Reis a écrit :
| Quote: | [Entre temps, ma compréhension des templates a progressé ainsi que ma
conviction ]
|
tout est donc une histoire de foi %oD
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Sep 05, 2003 4:50 pm Post subject: Re: Spécialisation partielle de fonctions impossible |
|
|
Benoit Dejean <bnet (AT) ifrance (DOT) com> writes:
| Quote: | Le Fri, 05 Sep 2003 12:56:41 +0200, Gabriel Dos Reis a écrit :
[Entre temps, ma compréhension des templates a progressé ainsi que ma
conviction ]
tout est donc une histoire de foi %oD
|
sans la foi, tu es perdu mon fils.
-- Gaby
|
|
| Back to top |
|
 |
|