それらの引数を指定または知らずに、デフォルト引数を使用するクラスを前方宣言することは可能ですか?
boost::ptr_list< TYPE >
たとえば、Boost ライブラリ全体を特性を含むすべてのファイルにドラッグすることなく、Traits クラスで aを宣言したいと考えています。を宣言したい
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*>
私の特性クラスで指定することだけですか? (後者を使用する場合は、declareboost::heap_clone_allocator
と includeも転送する必要が<memory>
あると思います。)
私は Stroustrup の本、SO、およびその他のインターネットを調べましたが、解決策は見つかりませんでした。通常、人々は STL を含めないことを懸念しており、解決策は「STL ヘッダーを含めるだけ」です。ただし、Boost はより大規模でコンパイラを多用するライブラリであるため、どうしても必要な場合を除き、省略したいと思います。