Différenciation array <> container dans un template
Bonjour à tous.
J'aimerais qu'une fonction renvoie deux éléments du type et dans le type du container passé en paramètre template. Par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
template <typename range>
range f(range _r[])
{
range r = new range[2] ;
return r ;
}
template <typename range>
range f(range _r)
{
range r = range() ;
r.resize(2) ;
return r ;
}
template <typename range>
range f1(void)
{
range r ;
r = f(r) ;
r[0] = '1';
r[1] = '2';
return r;
}
int main()
{
int *r = f1<int*>() ;
std::cout << r[0] << " " << r[1] << std::endl ;
std::string s = f1<std::string>() ;
std::cout << s << std::endl ;
} |
J'essaye avec les deux premières fonctions d'isoler l'initialisation d'une "raw array" et d'un container.
J'ai l'erreur suivante : '=' : cannot convert from 'int' to 'int *' à cette ligne-ci :
Avez-vous d'autres techniques ou savez-vous où se trouve mon erreur ?
Merci d'avance.