在本文中,我们将讨论 C++ STL 中 std::is_reference 模板的工作、语法和示例。
is_reference 是位于 <type_traits> 头文件下的模板。此模板用于检查给定类型 T 是否为引用类型。
该模板是 is_rvalue 和 is_lvalue 的组合,并检查其中一个是否为真,is_reference 的结果是否也为真。
什么是 C++ 中的引用?
引用是已存在变量的别名或其他名称。引用不同于指针 -
- 因为我们不能将引用设置为空,但指针可以是空指针。
- 一旦一个引用被初始化为一个对象,它就不能被改变。指针可以随时指向任何其他对象。
- 引用必须在创建时初始化,因为指针可以在创建后稍后初始化。
可以在要引用的变量之前使用与号 (&) 符号来声明引用。
用法
template <class T> is_reference;
参数
模板只能有类型 T 的参数,并检查给定类型是否为引用类型。
返回值
它返回一个布尔值,如果给定类型是引用类型,则返回 true,如果给定类型不是引用类型,则返回 false。
示例
Input:is_reference<int>::value; Output:False Input:is_reference<int&>::value; Output:True
示例
#include <iostream>
#include <type_traits>
using namespace std;
class TP {
};
int main() {
cout << boolalpha;
cout << "Checking for is_reference:";
cout << "\n class TP:"<<is_reference<TP>::value;
cout << "\n class TP&:"<<is_polymorphic<TP&>::value;
cout << "\n class TP&&:"<<is_polymorphic<TP&&>::value;
return 0;
}
输出
如果我们运行上面的代码,它将生成以下输出 -
Checking for is_reference: class TP:false class TP&:false class TP&&:false
示例
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
cout << boolalpha;
cout << "Checking for is_reference:";
cout << "\n int:"<<is_reference<int>::value;
cout << "\n int&:"<< is_reference <int&>::value;
cout << "\n int&&:"<< is_reference <int&&>::value;
// char
cout << "\n char:"<<is_reference<char>::value;
cout << "\n char&:"<< is_reference <char&>::value;
cout << "\n char&&:"<< is_reference <char&&>::value;
//float
cout << "\n float:"<<is_reference<float>::value;
cout << "\n float&:"<< is_reference <float&>::value;
cout << "\n float&&:"<< is_reference <float&&>::value;
//double
cout << "\n double:"<<is_reference<double>::value;
cout << "\n double&:"<< is_reference <double&>::value;
cout << "\n double&&:"<< is_reference <double&&>::value;
return 0;
}
输出
如果我们运行上面的代码,它将生成以下输出 -
Checking for is_reference: int:false int&:true int&&:true char:false char&:true char&&:true float:false float&:true float&&:true double:false double&:true double&&:true
相关用法
- C++ is_rvalue_reference用法及代码示例
- C++ is_unsigned用法及代码示例
- C++ is_fundamental用法及代码示例
- C++ is_scalar用法及代码示例
- C++ is_pointer用法及代码示例
- C++ is_polymorphic用法及代码示例
- C++ is_class用法及代码示例
- C++ is_trivial用法及代码示例
- C++ is_void用法及代码示例
- C++ is_empty用法及代码示例
- C++ is_final用法及代码示例
- C++ is_signed用法及代码示例
- C++ is_pod用法及代码示例
- C++ is_permutation()用法及代码示例
- C++ is_abstract用法及代码示例
- C++ is_arithmetic用法及代码示例
- C++ is_const用法及代码示例
- C++ is_standard_layout用法及代码示例
- C++ is_lvalue_reference用法及代码示例
- C++ isdigit()用法及代码示例
注:本文由纯净天空筛选整理自Sunidhi Bansal大神的英文原创作品 is_reference Template in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。