指针别名 - 在C ++ 0x中

时间:2011-01-01 15:48:36

标签: c++11

我正在考虑(仅作为一个想法)在C ++ 0x中脱节指针别名。我在考虑是否可以与const正确性类似地实现 - 也就是说,由编译器强制执行。对这样的事情有什么要求?由于这是一个更多的思想实验,我很高兴看到破坏遗留代码或重新定义一半语言和那种东西的解决方案。

我真的不想做的就是从C99那里得到restrict,程序员就是这样做的。它应该被强制执行。

我在考虑让unique_ptr不是库的一部分,而是语言的一部分。这样,编译器可以对它执行特殊优化,并在需要时编写自己的唯一指针类。

1 个答案:

答案 0 :(得分:1)

标准C ++库(包括std::unique_ptr 是该语言的一部分。

此外,不允许符合程序向名称空间std添加声明和定义。

在看到std::unique_ptr<T>的实例化时,编译器知道关于此实例化行为的所有 - 这正是作为编译器本身的语言实现的一部分实现的行为。编译器的一部分,可以自由地执行来自C ++标准保证的“特殊优化”。

作为来自同一思路的一个例子,GCC已经在托管模式下使用了许多标准C99函数 - 它可以用内联insn序列替换标准函数调用或者调用其他函数 - 正是因为GCC只知道函数的名称就知道确切的语义。