我写了这个测试代码:
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。 谢谢你的帮助!