给定 c++ 关键字 decltype 并用代码示例进行说明:
int main(){
    int variableName = 0;
    sizeof(variableName) == sizeof(decltype(variableName));//Always true for all types? And for all expressions?
    //
    //
    double variableDoubleName = 0;
    sizeof(variableName+variableDoubleName) == sizeof(decltype(variableName+variableDoubleName));//further example of an expression.
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,一般来说, sizeof(non-type) 和 sizeof(decltype(non-type)) 总是严格相等的吗?如果不是,它们会有什么不同?
我只是问为什么当我传统上希望在运行时分配和使用内存时,为什么允许通过非类型模板传递对象/原语的内存位置。我知道传递其内存的变量必须具有外部链接,但鉴于此,这是否意味着外部链接变量的内存位置始终不变?为了显示:
template<std::string *temp>
void f();
Run Code Online (Sandbox Code Playgroud)
每次执行程序时,通过模板传递的内存位置会不会有所不同,因此不会像我认为非类型参数所需的模板那样是编译时常量?
尽管我确实尝试分别启用 std:c++latest 和 c++17,但我无法使用 c++17 中添加的 std::aligned_alloc() 函数。这是真实生活吗?Visual Studio 2019 是否完全没有在标准中实现像这样的一项古老功能(也是一个非常重要的功能)?其他人可以确认吗?
我指的功能:
我发现的最新 C++ 功能(也很现代)是属性。它们对于向编译器发出信号似乎非常有用,但除此之外,属性还有哪些其他更具体的用途?如何创建和使用自定义属性以及使用 C++ 属性背后的主要思想是什么?如果主题太宽泛,我对带有函数的属性特别感兴趣。我所说的属性是指:https ://en.cppreference.com/w/cpp/language/attributes
什么是复制和交换习语? 在这个问题中,在最重要的答案中,在实现交换公共朋友重载的部分中,实现使用了这个:
friend void swap(dumb_array& first, dumb_array& second){
    //the line of code below
    using std::swap;
    //then it calls the std::swap function on data members of the dumb_array`s
}
Run Code Online (Sandbox Code Playgroud)
我的问题如下:using std::swap这里的用途是什么(答案提到了与启用 ADL 相关的内容);此处特别调用了“使用”的什么用例,添加该行代码的效果和不添加该代码行的效果是什么?
在以下答案中:https : //softwareengineering.stackexchange.com/a/363379/370129
CPU 访问内存的方式解释得很清楚。假设我们创建了一个小于 CPU 数据总线的数据类型——as 是一个 c++ char;如何将 CPU 读取的数据总线大小的内存块修改为在寄存器中用作预期类型?指定的字节是否已移位,以便它占用寄存器中的最低有效字节(如果它已经不存在)?那么多余的(根据类型大小)最高有效字节是否设置为 0?
然后 CPU 是否可以将一个/多个修改的单个字节写入一个/多个内存地址,或者是否必须将整个总线大小的块写入/被占用的总线大小的内存插槽?使用的字节数?