C ++中的is_reference模板
在本文中,我们将讨论C++STL中std::is_reference模板的工作,语法和示例。
is_reference是<type_traits>头文件下的模板。该模板用于检查给定类型T是否为引用类型。
此模板是is_rvalue和is_lvalue的组合,并检查如果一个为true,则is_reference的结果也为true。
C++中的参考是什么?
引用是已有变量的别名或其他名称。引用与指针不同-
因为我们不能将引用设置为null,但是指针可以是null指针。
一旦对对象的引用被初始化,就无法更改。指针可以随时指向任何其他对象。
创建引用时必须对其进行初始化,其中,指针可以在创建后稍后进行初始化。
可以使用要引用的变量前面的与号(&)来声明引用。
语法
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; //字符 cout << "\n字符: "<<is_reference<char>::value; cout << "\n字符&: "<< is_reference <char&>::value; cout << "\n字符&&: "<< is_reference <char&&>::value; //浮动 cout << "\n 浮动: "<<is_reference<浮动>::value; cout << "\n 浮动&: "<< is_reference <浮动&>::value; cout << "\n 浮动&&: "<< is_reference <浮动&&>::value; //双 cout << "\n 双: "<<is_reference<双>::value; cout << "\n 双&: "<< is_reference <双&>::value; cout << "\n 双&&: "<< is_reference <双&&>::value; return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Checking for is_reference: int: false int&: true int&&: true char: false char&: true char&&: true 浮动: false 浮动&: true 浮动&&: true 双: false 双&: true 双&&: true