
I'd like to announce the beginning of the review of the Heap library,
I have a couple of issues that I'd like to see addressed, but I'd like to discuss them rather than just noting them in the review app. One of my primary objections to the current design is the use of unspecified policy parameters in the template parameter list of the main data structures. I think that it is important to limit the number of top-level template parameters to only non-policy parameters. I would recommend encapsulating policies in a single top-level parameter, for example: template<typename T, typename Policies = default_b_heap_policies<T>> class b_heap { ... }; where default_b_heap_policies determines the set of ancillary parameters to the instantiation of the data structure. It could be a template alias to a more concrete specification. There are two main reasons I suggest this. First, it simplifies the interface for general usage. There are only two parameters, their order is well specified, you can describe each parameter with concepts (probably), and general usage can probably ignore the second parameter. Second, it protects the template interface from later design decisions. For example, if you accept Thorstens recommendation to parameterize over the container type, you don't have to add a new top-level template parameter; you would only have to modify the default policies and the metafunctions that query for it. Andrew