0
나는 list-like 템플릿 클래스 sll (Single Linked List)을 작성했습니다. 자, 그것에 할당자를 플러그인하려고합니다. 기본 할당 자, 할당 자 및 풀 기반 할당자인 pool_allocator가 있습니다. 이것들은 STL 할당 자 인터페이스 이후에 설계되었지만, 할당 자 (max_size)가 처리 할 요소의 수를 템플릿 매개 변수로 추가해야합니다. 그래서, 나는 다음을했다.기본 템플릿 템플릿 매개 변수 구문
enum {Default_1 = 16}; // for example
template <typename T, size_t N = Default_1>
struct allocator {
};
enum {Default_2 = 32}; // for example
template <typename T, size_t N = Default_2>
struct pool_allocator {
};
나는 두 종류의 지원하려는 경우 클라이언트가 사용 :
1. sll<int> == implying ==> sll<int, allocator<int, Default_1> >
2. sll<int, pool_allocator<int, 4096> >
나는 SLL 템플릿 클래스의 기본 할당을 지정하는 것입니다 데 어려움. 처음에 나는
template<typename T, typename Allocator = allocator<T> > class sll { ...};
그것은 작동하지만 문제가 있었다, 사용자는 수 t은 할당의 용량을 지정합니다.
나는template<typename T,
typename Allocator = allocator< typename T, size_t N = Default_3> >
class sll { ... };
을 시도하지만 오류가 나타납니다 내가 몇 가지 다른 조합을 시도
error: template argument 1 is invalid
을하지만, 그들 중 누구도 일했다. 이 시점에서 나는 아이디어가 부족하고 SO 커뮤니티에서 도움을 찾고 있습니다. 어떤 제안이나 조언을 부탁드립니다.
+1 : 감사합니다. 그건 간단했다, 나는 가장 간단한 옵션을 간과했다 :-(:(의) : 다음 질문은 : 내부 sll 클래스 템플릿, 어떻게 할당 자의 두 번째 템플릿 인수 (대문자 A 참고)에 액세스합니까? – Arun
정적 상수를 정의 할 수 있습니다. allocator 클래스, 예를 들어'enum {size = ...;}'와 같이 사용하면 Allocator :: size로 액세스 할 수 있지만 모든 allocator 내에'size' 상수를 정의해야합니다. –
감사합니다. 정적 const 접근 방식에 대해서도 생각했습니다. – Arun