Modèle de classes avec des constructeurs

De considérer les éléments suivants exemple artificiel basé sur un modèle de définition de tableau:

template <typename t, unsigned int n> class TBase
{
protected:
    t m_Data[n];

    //...
};

template <typename t, unsigned int n> class TDerived : public TBase<t, n>
{
    TDerived()
    {
    }
};

Je peut se spécialiser ce type un constructeur par défaut pour un tableau de taille 2 comme suit:

template <typename t> class TDerived<t, 2> : public TBase<t, 2>
{
public:
    TDerived(const t& x0, const t& x1)
    {
        m_Data[0] = x0;
        m_Data[1] = x1;
    }
};

int main()
{
    TDerived<float, 2> Array2D_A(2.0f, 3.0f); //uses specialised constructor
    TDerived<float, 3> Array3D_A;             //uses default constructor

    return 0;
}

Est-il un autre moyen que je peux créer une classe qui dispose de différentes options constructeur heurte paramètres du modèle au moment de la compilation, sans l'exigence d'une classe complète de la spécialisation pour chaque variation?

En d'autres termes, est-il une manière que je peux avoir constructeurs spécialisés dans le TBase de la classe sans le besoin pour l'étape intermédiaire de la création de TDerived tout en préservant la fonctionnalité de TBase?

Quel compilateur et la version utilisez-vous, a-t-elle de C++0x soutien?
Rodríguez - dribeas je switch entre MSVC 2008/2010 donc à la fois oui et non.
Pourquoi ne pas mettre dans tous les constructeurs? Ils ne sont pas être instanciée, sauf si elles sont utilisées.

OriginalL'auteur Munro | 2011-08-11