La plantilla std::add_lvalue_reference de C++ STL está presente en el archivo de encabezado <type_traits> . La plantilla std::add_lvalue_reference de C++ STL se usa para obtener el tipo de referencia lvalue que hace referencia al tipo T. Una referencia lvalue se forma colocando un ‘&’ después de algún tipo. Una referencia de rvalue se forma colocando un ‘&&’ después de algún tipo. El lvalue no puede vincular una referencia de lvalue ( no const ) a un rvalue.
El std::add_lvalue_reference es verificado por la plantilla std::is_lvalue_reference::value .
Archivo de cabecera:
#include<type_traits>
Clase de plantilla:
template< class T > struct add_lvalue_reference
Sintaxis:
std::is_lvalue_reference<T>::value
Parámetro: la plantilla std::add_lvalue_reference acepta un solo parámetro T (clase de rasgo)
A continuación se muestra el programa para demostrar std::add_lvalue_reference en C++ :
Programa 1:
// C++ program to illustrate // std::add_lvalue_reference #include <bits/stdc++.h> #include <type_traits> using namespace std; // Driver Code int main() { // Declare lvalue of type int, int&, // int&& and int* typedef add_lvalue_reference<int const&>::type A; typedef add_lvalue_reference<int&>::type B; typedef add_lvalue_reference<int&&>::type C; typedef add_lvalue_reference<int&>::type D; cout << std::boolalpha; // Check if A is int const& or not cout << "A: " << is_same<int const&, A>::value << endl; // Check if B is int* or not cout << "B: " << is_same<int*, B>::value << endl; // Check if C is int& or not cout << "C: " << is_same<int&, C>::value << endl; // Check if C is int && or not cout << "D: " << is_same<int&&, D>::value << endl; return 0; }
A: true B: false C: true D: false
Programa 2:
// C++ program to illustrate // std::add_lvalue_reference #include <bits/stdc++.h> #include <type_traits> using namespace std; // Driver Code int main() { // Declare lvalue using typename using a = int; using b = float; using lref = typename add_lvalue_reference<a>::type; using rref = typename add_rvalue_reference<b>::type; cout << std::boolalpha; // Check if the above declaration // are correct or not cout << "is int is lvalue? " << is_lvalue_reference<a>::value << '\n'; cout << "is lref is lvalue? " << is_lvalue_reference<lref>::value << '\n'; cout << "is float is lvalue? " << is_rvalue_reference<b>::value << '\n'; return 0; }
is int is lvalue? false is lref is lvalue? true is float is lvalue? false
Referencia: http://www.cplusplus.com/reference/type_traits/add_lvalue_reference/
Publicación traducida automáticamente
Artículo escrito por bansal_rtk_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA