is_reference 模板在 C++ 中


在本文中,我们将讨论 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;
   // 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

更新日期:2020 年 3 月 23 日

59 人次浏览

开启你的 职业生涯

完成课程,获得认证

开始
广告
© . All rights reserved.