typedef struct node {
int val;
int val2;
node(int a, int b) : val(a), val2(b) {}
node(int val) = delete;
}node;
int main()
{
node a = {3};
cout << a.val << " " << a.val2 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了编译错误,表明使用了已删除的函数node::node(int)。
但是,当我删除 时node(int a, int b) : a(val), b(val2) {},这段代码编译没有问题。这怎么会发生呢?
c++ initialization aggregate-initialization list-initialization c++20
.file "test-instr.c"
.text
.Ltext0:
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hum?"
.LC1:
.string "Looks like a zero to me!"
.LC2:
.string "A non-zero value? How quaint!"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
/* --- trampoline malloc shm space begin --- */
.align 4
.section .data
shmSize: .quad 8 * 4 * 0x10000
.global shmptr
shmptr: .quad 0
.section .text
.extern malloc
movq (shmSize), %rdi
call malloc
movq %rax, (shmptr)
/* --- trampoline malloc shm spacd end --- */ …Run Code Online (Sandbox Code Playgroud) 所述的描述LAHF指令为:
该指令在兼容模式和传统模式下如上所述执行。仅当 CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1 时才在 64 位模式下有效
第一个问题:什么是兼容性和传统模式。它们与实模式和保护模式有何不同
第二个问题:CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1是什么意思
谢谢!!!