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

标签 c++11

我正在考虑(只是一个想法)C++ 0x中的脱节指针别名。我在考虑是否可以与const正确性类似地实现它,即由编译器执行。这样的事情有什么要求?由于这更多是一种思想实验,因此我非常高兴看到破坏旧代码或重新定义一半语言和此类内容的解决方案。

我真正不愿意做的是,例如,从C99那里获得restrict,程序员只是 promise 这样做。应该强制执行。

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

最佳答案

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

另外,不允许符合标准的程序向 namespace std添加声明和定义。

看到std::unique_ptr<T>的实例化后,编译器就知道了有关该实例化行为的所有信息-正是作为语言实现的一部分而实现的行为,编译器本身就是该行为的一部分,并且编译器可以自由地执行“特殊优化”来自C++标准的保证。

例如,出于相同思路的一个例子,GCC已经在托管模式下使用了许多标准C99函数来做到这一点-可以用内联insn序列或对其他函数的调用来代替标准函数的调用-正是因为GCC知道只需知道函数名称即可获得精确的语义。

关于c++11 - 指针别名-在C++ 0x中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4574570/

相关文章:

c++ - 接收参数并为可能失败的函数 move 语义(强大的异常安全性)

C++0x : Slice template fails to compile with range-based for()

c++ - 尝试制作 shared_ptr 时 std::make_shared() 出错?

c++ - constexpr : literal class type copy behavior

c++ - 如何在没有参数的情况下从 for_each() 调用函数

c++ - 试图在 gdb 7.5 中获取 vim 命令击键

c++ - 用模板初始化的 N 维 std::array

c++ - 如何从 C++ 中的输入读取文件路径以便打开 txt 文件?

关于继承成员地址的 C++ 标准

c++ - 有没有办法只评估仿函数的参数?