gcc -std = c ++ 14上unique_ptr的自定义deletor

时间:2015-08-07 16:10:53

标签: c++ c++11 gcc

这应该以RAII方式获取Linux上的当前工作目录:

#include <iostream>
#include <memory>
#include <unistd.h>
#include <cstdlib>

int main() {
    using namespace std;
  ios_base::sync_with_stdio(false);

  //unique_ptr<const char> cwd (get_current_dir_name());
  //unique_ptr<const char, [](const char* ptr){ free(ptr) }> cwd (get_current_dir_name());

  unique_ptr<const char> cwd (get_current_dir_name());
  cout<<cwd.get()<<'\n';
  return 0;
}

它不应该使用默认删除器,因为get_current_dir_name()会返回malloc内存,而应该是free d而不是delete d。

如何让自定义删除工具正常工作? 注释掉的行是我无法编译的失败尝试 在gcc 4.9.2(-std=c++14)。

0 个答案:

没有答案