Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::as_const(3)	      C++ Standard Libary	      std::as_const(3)

NAME
       std::as_const - std::as_const

Synopsis
	  Defined in header <utility>
	  template< class T >					    (1)	(since
       C++17)
	  constexpr std::add_const_t<T>& as_const( T& t	) noexcept;
	  template< class T >					    (2)	(since
       C++17)
	  void as_const( const T&& ) = delete;

	  1) Forms lvalue reference to const type of t.
	  2) const rvalue reference overload is	deleted	to disallow rvalue ar-
       guments.

Possible implementation
	  template<class T>
	  constexpr std::add_const_t<T>& as_const(T& t)	noexcept
	  {
	      return t;
	  }

Notes
	  Feature-test macro  Value    Std	Feature
	  __cpp_lib_as_const 201510L (C++17) std::as_const

Example
       // Run this code

	#include <cassert>
	#include <string>
	#include <type_traits>
	#include <utility>

	int main()
	{
	    std::string	mutableString =	"Hello World!";
	    auto&& constRef = std::as_const(mutableString);

	    mutableString.clear(); // OK
	//  constRef.clear(); // Error:	'constRef' is 'const' qualified,
			      //	but 'clear' is not marked const

	    assert(&constRef ==	&mutableString);
	    assert(&std::as_const(mutableString) == &mutableString);

	    using	  ExprType	  =	   std::remove_reference_t<de-
       cltype(std::as_const(mutableString))>;

	    static_assert(std::is_same_v<std::remove_const_t<ExprType>,
       std::string>,
			  "ExprType should be some kind	of string.");
	    static_assert(!std::is_same_v<ExprType, std::string>,
			  "ExprType shouldn't be a mutable string.");
	}

See also
	  is_const		checks if a type is const-qualified
	  (C++11)		(class template)
	  add_cv
	  add_const
	  add_volatile		adds const and/or volatile specifiers  to  the
       given type
	  (C++11)		(class template)
	  (C++11)
	  (C++11)
	  remove_cv
	  remove_const
	  remove_volatile	 removes const and/or volatile specifiers from
       the given type
	  (C++11)		(class template)
	  (C++11)
	  (C++11)
	  ranges::as_const_view	converts a view	into a constant_range
	  views::as_const	(class template) (range	adaptor	object)
	  (C++23)

http://cppreference.com		  2024.06.10		      std::as_const(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::as_const&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help