gpt4 book ai didi

c++ - 元编程传递值类型应该在哪里?

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:35 24 4
gpt4 key购买 nike

我用了一个例子

http://en.wikipedia.org/wiki/Template_metaprogramming

const unsigned long long y = Factorial<0>::value; // == 1  

我知道编译器可以进行类型检查,但我不认为你可以把 0 放在类型应该出现的地方,它会被当作值。

有人可以解释这是如何工作的吗?

谢谢

最佳答案

I did not think you could put 0 where the type should be and it would be taken as the value

问题在于假设:它不是“类型应该在哪里”。相反,它是“可以指定模板参数的地方”。

在这种情况下,有一个非类型模板参数

它之所以有效,仅仅是因为它是一个不同于类型模板参数的特性。

就是这样。我可以推荐C++ Templates: the Complete Guide或关于 that list 的许多其他书籍阅读 C++ 模板的基础知识。

关于c++ - 元编程传递值类型应该在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975678/

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