OVH Cloud OVH Cloud

Templates pour les nuls

1 réponse
Avatar
diego-olivier.fernandez-pons
Bonjour,

A chaque nouvelle version de GCC, l'ensemble de mes templates refuse de
compiler/linker (noter que MSVC se contente de me dire que je suis un
idiot car je ne sais trop quelle fonction ne correspond pas =E0 je ne
sais trop quelle prototype mais tout finit par fonctionner).

Avec GCC 4.0.1 c'est -frepo qui a miraculeusement tout fait
fonctionner, sans explication v=E9ritable car avec 3.4 tout passait
tr=E8s bien.

Pourtant je ne fais rien de bien compliqu=E9 puisque je ne les utilise
que pour factoriser du code autrement dit par instantiation explicite
avec sp=E9cialisation. De plus, ils sont totalement cach=E9s par des
typedef : on peut utiliser IntArray en ignorant totalement qu'il s'agit
de UnboxedArray<int>.

Quelqu'un aurait-il une r=E9f=E9rence expliquant les "templates pour les
nuls qui sont oblig=E9s de maintenir du code multiversions,
multiplateforme GCC*/msvc*"

Diego Olivier

1 réponse

Avatar
Loïc Joly
Bonjour,

A chaque nouvelle version de GCC, l'ensemble de mes templates refuse de
compiler/linker (noter que MSVC se contente de me dire que je suis un
idiot car je ne sais trop quelle fonction ne correspond pas à je ne
sais trop quelle prototype mais tout finit par fonctionner).

Avec GCC 4.0.1 c'est -frepo qui a miraculeusement tout fait
fonctionner, sans explication véritable car avec 3.4 tout passait
très bien.

Pourtant je ne fais rien de bien compliqué puisque je ne les utilise
que pour factoriser du code autrement dit par instantiation explicite
avec spécialisation. De plus, ils sont totalement cachés par des
typedef : on peut utiliser IntArray en ignorant totalement qu'il s'agit
de UnboxedArray<int>.

Quelqu'un aurait-il une référence expliquant les "templates pour les
nuls qui sont obligés de maintenir du code multiversions,
multiplateforme GCC*/msvc*"


Pour la partie bug-compatibilité de divers compilos, je ne sais pas
trop. Pour la partie référence, ce que je connais de mieux est "C++
template, the complete guide" de David Vandevoorde et Nicolai M. Josuttis.

--
Loïc