gpt4 book ai didi

C++ 可变参数模板异常示例

转载 作者:IT老高 更新时间:2023-10-28 23:17:31 25 4
gpt4 key购买 nike

下面的构造是什么意思?

#include <iostream>

template <int ...> struct s;

int main() {
int i = s<,>::xxx;

std::cout << i << std::endl;
}

由gcc 4.4.5+编译,执行时输出0.

最佳答案

我把程序改写成这样:

template <int ...> struct s;

int main() {
int i = s<,>::xxx;

return i;
}

并用 -S 编译它-switch,以获得我清理到以下内容的程序集输出:

main:
pushq %rbp
movq %rsp, %rbp
movl -4(%rbp), %eax
popq %rbp
ret

现在,我的 asm 有点生疏了,但唯一重要的代码似乎是 movl -4(%rbp), %eax ,它将返回值设置为它可以从 i 读取的任何值.换句话说,当 main 时,程序只返回堆栈顶部的任何内容功能被输入。这似乎证实了@jrok 的评论,即 i 的初始化以某种方式被忽略。尚未为神秘的 s<,>::xxx 生成代码-表达式。

底线;这看起来像一个编译器错误。编译器应该给出错误信息。

确凿的旁注:我得到了相同的程序集输出 int main() { int i; return i; } .

关于C++ 可变参数模板异常示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com