在llvm的编译器实现教程中(例如here)id
被使用。他们没有使用llvm::make_unique
的原因是什么?我无法找到任何明确的文件。
答案 0 :(得分:5)
LLVM是使用符合C ++ 11的代码编写的,而std::make_unique是C ++ 14的功能。因此,如果他们想要make_unique
,则需要实现它。
如果我们去LLVM Coding Standards,C++ Standard Versions section说:
LLVM,Clang和LLD当前使用的是符合C ++ 11的代码,尽管我们将自己限制在作为宿主编译器支持的主要工具链中可用的功能。 LLDB项目在受支持的主机编译器集中更具侵略性,因此使用更多功能。无论受支持的功能如何,代码(在合理的情况下)都应该是标准的,可移植的和现代的C ++ 11代码。我们避免不必要的特定于供应商的扩展,等等。
我们从cppreference看到std::make_unique
是C ++ 14功能。如果他们想使用make_unique
,则不能使用std版本。
从最近的llvm-dev discussion中我们可以看到,转向C ++ 14仍然是一个开放的话题。