我想知道为什么std :: unique_ptr<>直接支持动态数组?但不是由std :: shared_ptr<>:
unique_ptr<int[]> ptr1(new int[n]); /// OK! shared_ptr<int[]> ptr2(new int[n]); /// Incorrect: will not call delete[]
更新:我发现第二行可以改写为:
shared_ptr<int> ptr2(new int[n],default_delete<int[]>());
现在我想知道幕后发生了什么让std :: shared_ptr与第二种方法一起使用而不是类似于std :: unique_ptr的方式?