Bonjour à tous !

Je suis en train de faire une classe template matrice (à la fois le type des valeurs stockées mais aussi la taille sont connus à la compilation), ce qui me donne la classe mat<T, N, M>.

Jusque là tout va bien, les accesseurs fonctionnent.

Maintenant je souhaite pouvoir extraire une sous-matrice. Donc pour rendre le comportement transparent sans changer l'interface ni dupliquer le code je me dis pourquoi pas stocker des std::reference_wrapper ! Problème c'est que mon algo de création de matrice à d'abord besoin d'initialiser une matrice qui sera le result, hors std::refrence_wrapper ne dispose pas de constructeur par défaut :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
// P et Q sont la taille de la sous matrice
// M et N sont la taille de la matrice mère
// sub est le nom de la fonction membre et i et j sont les indices de départs de la sous matrice
template<size_t P, size_t Q>
template<typename T, size_t N, size_t M>
mat<std::reference_wrapper<T>, P, Q>
mat<T, N, M>::sub(size_t i, size_t j)
{
    mat<std::reference_wrapper<T>, P, Q> result; // error du ctr
 
    // some code
}
Avez-vous une idée pour me dépatouiller de cette situation ?

Merci à tous !!