 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Helfer Thomas Guest
|
Posted: Wed Aug 09, 2006 1:49 am Post subject: Constructeurs invalides : est-ce légal ? |
|
|
Bonjour,
je souhaiterai écrire une classe template test dérivant de son argument.
Cet argument déclare un constructeur qui prend un ou deux arguments (ou
exclusif).
Supposons que T ne déclare qu'un seul constructeur ne prenant qu'un
argument. Le code suivant est-il légal, si je n'appelle que le
constructeur 1 dans mon code:
template<typename T>
struct test
: public T
{
// Constructeur 1
test(const typename T::first_arg src)
: T(src)
{}
// Constructeur 2
test(const typename T::first_arg src,const typename T::second_arg src2)
: T(src,src2)
{}
};
Ce code passe avec gcc. Est-il portable ?
Cordialement,
Thomas |
|
| Back to top |
|
 |
Pierre Barbier de Reuille Guest
|
Posted: Wed Aug 09, 2006 3:28 am Post subject: Re: Constructeurs invalides : est-ce légal ? |
|
|
Helfer Thomas wrote:
| Quote: | Bonjour,
je souhaiterai écrire une classe template test dérivant de son argument.
Cet argument déclare un constructeur qui prend un ou deux arguments (ou
exclusif).
Supposons que T ne déclare qu'un seul constructeur ne prenant qu'un
argument. Le code suivant est-il légal, si je n'appelle que le
constructeur 1 dans mon code:
template<typename T
struct test
: public T
{
// Constructeur 1
test(const typename T::first_arg src)
: T(src)
{}
// Constructeur 2
test(const typename T::first_arg src,const typename T::second_arg src2)
: T(src,src2)
{}
};
Ce code passe avec gcc. Est-il portable ?
Cordialement,
Thomas
|
Oui, c'est légal car une méthode d'une classe template n'est instanciée
que si elle est effectivement utilisée (toutefois, toutes les méthodes
sont *définies*).
Pierre |
|
| Back to top |
|
 |
|
|
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
|
|