На самом деле, почему невозможно иметь прямое объявление класса шаблона?
Если вам остро нужен обходной путь, вы можете использовать что-то вроде этого:
namespace std {
template<typename T>
class allocator;
template<typename T, typename Alloc>
class vector;
}
Добавить включенную охрану, сохранить как "stdfwd.h" или что-то в этом роде.
Тогда что-то подобное работает без включения <vector>
:
void print(std::vector<int, std::allocator<int> >& v);
Работает дляменя с GCC 4.5.В настоящее время я понятия не имею, как сделать прозрачный обходной путь для проблемы, которая не может иметь аргумент по умолчанию (также аргумент шаблона) в объявлении и в определении одновременно, что .. Но это могло бы быть возможно - возможно, кто-то могвзять отсюда?:) Я бы не стал использовать его в производственном коде, я думаю, но выглядит как интересное упражнение.