使用其他参数引用 const 默认参数?

ref to a const default parameter using other parameter?

我正在创建自定义 forward_list,但在制作 this copy constructor. 时遇到了问题 问题是,在我的 forward_list 中,我有一个私有变量 A& heap;,我想用 alloc 实例化它,除非没有提供 alloc(我不明白这是怎么回事,因为alloc 是参考参数,因此必须提供 ?)。 因此,如果没有以某种方式提供,我唯一可以实例化 alloc 的地方是在 init 列表中(因为它是一个引用),但我不能,因为 allocator_traits 需要 other.get_allocator(),这是另一个参数.


template<typename T, typename A = std::allocator<T>>
class forward_list
{
    ...
private:
    struct node
    {
        T data;
        std::unique_ptr<T> next;
    };
    std::unique_ptr<node> root_;
    std::unique_ptr<node> leaf_;
    size_t count_;
    const A& heap;
}

/* Copy constructor. Constructs the container with the copy of the contents of other.
 * If alloc is not provided, allocator is obtained by calling
 * std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator());
 */
forward_list(const forward_list& other, const A& alloc = A())
 : heap(std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator()))
{
}
inline forward_list(const forward_list& other)
 : root_(other.root_), leaf_(other.leaf_), count_(other.count_), heap(std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator())) {};

inline forward_list(const forward_list& other, const A& alloc)
 : root_(other.root_), leaf_(other.leaf_), count_(other.count_), heap(alloc) {};