在本文中,我们将讨论C ++ STL中std::is_reference模板的工作,语法和示例。
is_reference是<type_traits>头文件下的模板。该模板用于检查给定类型T是否为引用类型。
此模板是is_rvalue和is_lvalue的组合,并检查如果一个为true,则is_reference的结果也为true。
引用是已有变量的别名或其他名称。引用与指针不同-
因为我们不能将引用设置为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