Re[4]: Объявление внутреннего класса
От: Liza  
Дата: 17.07.06 15:15
Оценка:
L>>Насколько это общепринятая практика? Я имею в виду:

L>>

L>>namespace std
L>>{
L>>    template class string<...>;
L>>    template class vector<...>;
L>>}

L>>


АШ>Пространства имен были введены для решения проблемы конфликта имен. Поэтому это даже не общепринятая, а единственно возможная практика в условиях мультибиблиотечкой среды:


Это понятно. Насколько часто встречается в коде именно не включение "mylib.h" и "yourlib.h", а объявление функций и классов в них содержащихся? В заголовочных файлах. С целью ускорить компиляцию программы.

// main.h

// #include <vector>
// #include "yourlib.h"


namespace std
{
    template class vector<...>;
}

namespace yourlib
{
   class foo{};
}

void bar(std::vector<yourlib::foo> vf);


Если я правильно понимаю, то для стандартных контейнеров это сдеалть не так просто, потому что реальное количество параметров в них может зависеть от реализации STL (то есть, может быть vector<T, allocator<T>, NonDocumentedParametr = DefaultND>)...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.