gpt4 book ai didi

C++ 模板 : intiantiating a variable out of a particular integer (as type)

转载 作者:行者123 更新时间:2023-11-28 00:31:53 26 4
gpt4 key购买 nike

我显然误解了代码。感谢您指出错误。

--原帖--

我知道整数可以用作 C++ 模板编程中的类型。令我惊讶的是,当使用诸如 2 和 3 之类的整数作为类型时,实际上可以实例化该类型之外的变量,如下面从 gcc 4.8.1 random.h 中提取的示例所示。 .

在我看来,可以声明一个变量

2 x; //not actual c++ code

并且 x 将是一个整数变量,初始化为 2 的值.

判断一个数是否为2的幂的代码:

#include <iostream>
template<typename _Tp> inline bool
_Power_of_2(_Tp __x) {
return ((__x - 1) & __x) == 0;
};

int main() {
std::cout << _Power_of_2(2) << std::endl;
std::cout << _Power_of_2(3) << std::endl;
}

输出:

1
0

有人可以根据类型和域解释这里发生了什么吗?

其他编程语言中是否有任何类似的功能可以做同样的事情,即使用具体值作为类型?

此外,此功能是否适用于其他类型,例如 struct , stringfloat

谢谢,

最佳答案

在您的示例中,2 未用作类型,而是用作函数参数。由此,模板参数 _tP 被自动推断为 int。所以 main 中的行将等同于:

std::cout << _Power_of_2<int>(2) << std::endl;
std::cout << _Power_of_2<int>(3) << std::endl;

关于C++ 模板 : intiantiating a variable out of a particular integer (as type),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22530743/

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