C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Spécialisation partielle de fonctions impossible

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Benoit Dejean
Guest





PostPosted: Thu Sep 04, 2003 8:31 pm    Post subject: Spécialisation partielle de fonctions impossible Reply with 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?
Back to top
Gabriel Dos Reis
Guest





PostPosted: Thu Sep 04, 2003 8:35 pm    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote



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





PostPosted: Fri Sep 05, 2003 7:41 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote



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

Quote:
-- Gaby


Back to top
Gabriel Dos Reis
Guest





PostPosted: Fri Sep 05, 2003 8:02 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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





PostPosted: Fri Sep 05, 2003 8:29 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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 Wink ?

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





PostPosted: Fri Sep 05, 2003 8:58 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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





PostPosted: Fri Sep 05, 2003 9:22 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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





PostPosted: Fri Sep 05, 2003 9:28 am    Post subject: Re: Spécialisation partielle de fonctionsimpossible Reply with quote

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





PostPosted: Fri Sep 05, 2003 10:27 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

Gabriel Dos Reis wrote:
Quote:

tu veux que je refasses le débat passé ici ?

non Smile. 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





PostPosted: Fri Sep 05, 2003 10:45 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with 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:
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





PostPosted: Fri Sep 05, 2003 10:56 am    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

"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 Smile 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 Smile]


Back to top
Benoit Dejean
Guest





PostPosted: Fri Sep 05, 2003 3:05 pm    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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 Smile]

tout est donc une histoire de foi %oD

Back to top
Gabriel Dos Reis
Guest





PostPosted: Fri Sep 05, 2003 4:50 pm    Post subject: Re: Spécialisation partielle de fonctions impossible Reply with quote

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 Smile]

tout est donc une histoire de foi %oD

sans la foi, tu es perdu mon fils.

-- Gaby

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.