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