У меня возникли трудности с объявлением шаблонного типа, как показано ниже.объявление шаблона `typedef typename Foo <T> :: Bar Bar '
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class Foo
{
typedef T Bar;
};
template <class T>
typedef typename Foo<T>::Bar Bar;
int main(int argc, char *argv[])
{
Bar bar;
Foo<int> foo;
system("PAUSE");
return EXIT_SUCCESS;
}
Я получаю ошибку
template declaration of `typedef typename Foo<T>::Bar Bar'
о линии
template <class T>
typedef typename Foo<T>::Bar Bar;
Я делаю это, потому что я хочу избежать написания имяТипа Foo :: Bar Повсеместно мой код.
Что я делаю неправильно?
Спасибо! все вы были одинаково полезны. Хотел бы я принять все три ответа. В любом случае, я проголосую за все три ответа. – geraldCelente
@geraldCelente: Я не думаю, что это важно, или кто-то был бы расстроен - выберите любой ответ, который вы найдете наиболее полезным :-) (или бросьте монету). –
есть библиотека (например, boost), которая обеспечивает «backaround» «для компиляторов, которые все еще падают с подлости C++ 11 (например, компиляторы gcc/mingw)? –