Можно ли переслать объявление класса, который использует аргументы по умолчанию, не указав или не узнав эти аргументы?
Например, я хотел бы объявить boost::ptr_list< TYPE >
в классе "Черты", не перетаскивая всю библиотеку Boost в каждый файл, содержащий черты. Я хотел бы заявить
namespace boost { template<class T> class ptr_list< T >; }
, но это не работает, потому что оно точно не соответствует истинному объявлению класса:
template < class T,
class CloneAllocator = heap_clone_allocator,
class Allocator = std::allocator<void*>
>
class ptr_list { ... };
Могут ли мои варианты жить с ним или указать boost::ptr_list< TYPE, boost::heap_clone_allocator, std::allocator<void*>
в моем классе свойств? (Если я использую последний, мне также придется переслать declare boost::heap_clone_allocator
и включить <memory>
, я полагаю.)
Я просмотрел книгу Страуступа, ТАК, и остальную часть Интернета и не нашел решения. Обычно люди обеспокоены тем, что не включают STL, и решение "просто включает заголовки STL". Тем не менее, Boost - это гораздо более массивная библиотека, насыщенная компиляторами, поэтому я бы предпочел оставить ее, если только мне это не нужно.