初始化T&默认值为

时间:2017-06-18 08:13:56

标签: c++ c++11

我有以下分配器类:

 template <class BackingAllocator>
    class ScratchAllocator : public Allocator // Allocator is non-copyable
    {
    public:
        ScratchAllocator(size_t size, BackingAllocator& ref_allocator);
        ScratchAllocator(size_t size);
        ~ScratchAllocator();

        // Allocate, Free, ...


    private:
        BackingAllocator& m_backingAllocator;

        char* m_begin;
        char* m_end;
        char* m_allocate;
        char* m_free;
    };

我希望能够通过在构造函数中提供支持分配器引用来创建ScratchAllocator(在这种情况下,它是&#39; sa MallocAllocator),在这种情况下,支持调用allocator的默认构造函数。

问题是我在我的类中将支持分配器存储为引用,所以如果我尝试在构造函数中给它一个默认值,它将被范围的终点。

我想到的一个可能的解决方案是分配一个分配器,但问题是如果提供了支持分配器则没有必要。

有什么想法吗?

修改

我无法按值获取BackingAllocator,因为在Allocator类中禁用了赋值运算符。

0 个答案:

没有答案