llvm :: make_unique的目的是什么?

Sar*_*aph 13 c++ llvm

在llvm的编译器实现教程(例如这里)llvm::make_unique中使用.他们没有使用的原因是什么std::make_unique?我无法找到任何明确的文件.

Sha*_*our 5

TL; DR;

LLVM使用符合C++ 11的代码编写,而std :: make_unique是C++ 14功能.所以如果他们想要make_unique他们需要实现它.

细节

如果我们转到LLVM编码标准,C++标准版本部分说:

LLVM,Clang和LLD 目前使用符合C++ 11的代码编写,尽管我们仅限于主机编译器支持的主要工具链中提供的功能.LLDB项目在支持的主机编译器集中更具攻击性,因此使用了更多功能.无论支持的功能如何,代码(合理的)都应该是标准的,可移植的和现代的C++ 11代码.我们避免不必要的供应商特定扩展等.

我们可以从cppreference看到这std::make_unique是一个C++ 14特性.如果他们想使用make_unique那么他们就不能使用std版本.

我们可以从最近的llvm-dev讨论中看到,转向C++ 14仍然是一个开放的主题.

  • 只是提醒一下,最近他们改编了 C++14 并用 `std::make_unique` 替换了 `llvm::make_unique` - https://reviews.llvm.org/D66259 (2认同)