Форвард-объявленный тип и «неклассовый тип, который уже был объявлен как тип класса»

У меня проблема со следующим кодом:

  template <typename T>
  void foo(struct bar & b);
  struct bar {};
  int main(){}

Он успешно компилируется на GCC, но не работает на MSVC (2008) с следующая ошибка:

C2990: 'bar': неклассовый тип, который уже был объявлен как тип класса

Код неправильный или это ошибка в MSVC?

Это сработает, если я добавлю struct bar; перед определением шаблона.

6
задан Hello C Plus Plus 13 May 2011 в 17:45
поделиться