Bonjour à tous!
Désolé d'avance si ce que je demande est trivial :-)
Je viens de récupérer un projet C++ qui compilait avec une version plus ancienne de Visual Studio (je ne suis pas sûr de laquelle, c'était en 2006).
Voici les premières lignes de code (en omettant les include, etc):
1 2 3 4 5 6 7 8 9
| template<class _Ty, class _A = allocator<_Ty> >
class vector {
public:
typedef vector<_Ty, _A> _Myt;
typedef _A allocator_type;
typedef _A::size_type size_type;
typedef _A::difference_type difference_type;
typedef _A::pointer _Tptr;
typedef _A::const_pointer _Ctptr; |
Maintenant, avec Visual Studio 2008, j'obtiens les warnings suivants:
1 2
| vector.h(24) : warning C4346: '_A::size_type'*: le nom dépendant n'est pas un type
1> préfixer avec 'typename' pour indiquer un type |
Suivent des erreurs:
vector.h(24) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'size_type'
et autres.
Est-ce que quelqu'un sait ce qui peut causer ces erreurs?? Certaines erreurs disparaissent si je change les typedef par des typename, mais c'est pas ce que je veux faire, et en plus le projet compilait comme ça...
Merci d'avance pour toutes réponse!!
Partager