为什么自定义删除器不会增加unique_ptr对象的大小?

时间:2016-03-16 19:39:28

标签: c++ c++14 unique-ptr

我写了这个测试代码:

int main(int argc, const char * argv[]) {
    int *testRaw = nullptr;
    cout << sizeof(testRaw) << endl;

    unique_ptr<int> testUnique(nullptr);
    cout << sizeof(testUnique) << endl;

    auto CustomeDeleter = [](int *ptr)
    {
        cout << *ptr;
        delete ptr;
    };

    unique_ptr<int, decltype(CustomeDeleter)> testUniqueCustom(nullptr, CustomeDeleter);
    cout << sizeof(testUniqueCustom) << endl;

    return 0;
}

使用编译器clang-700.1.81,我的输出是:

8
8
8

自定义删除器怎么可能没有增加指针大小? 据我所知,lambda函数是闭包类型的一个对象,任何类的大小总是&gt; C ++中为0。 谢谢你的帮助!

0 个答案:

没有答案