【发布时间】:2015-08-28 15:34:34
【问题描述】:
目前,我有一个类,形式如下:
template <std::size_t N,
class T,
class Allocator = typename std::conditional<N, void, std::allocator<T>>::type>
class myclass {};
这是一个具有以下行为的特定容器:
- 如果
N > 0,则容器的静态大小为N,Allocator模板参数应为void。 - 如果
N == 0,则容器为动态大小,将使用Allocator参数。
但我对这种设计并不满意,因为它看起来并不优雅。我想要一个解决方案standard-like 或boost-ready。也许在设计一个 boost 库时已经遇到过这样的问题。如果是,选择了什么解决方案?
考虑到我想保留一个版本的myclass,而不是两个版本的static_myclass 和dynamic_myclass。
【问题讨论】:
-
用户是否可以提供
Allocator或者它只是用作内部实现? -
@Jarod42 是的,用户可以提供分配器。
-
删除
N并创建一个特殊的“fixed_allocator”怎么样?
标签: c++ templates boost architecture software-design