BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslmf_addconst

Detailed Description

Outline

Purpose

Provide a meta-function for adding a top-level const-qualifier.

Classes

See also
bslmf_removeconst

Description

This component defines a meta-function, bsl::add_const and declares an bsl::add_const_t alias to the return type of the bsl::add_const, that may be used to add a top-level const-qualifier to a type if it is not a reference type, nor a function type, nor already const-qualified at the top-level.

bsl::add_const and bsl::add_const_t meet the requirements of the add_const template defined in the C++11 standard [meta.trans.cv].

Usage

In this section we show intended use of this component.

Example 1: Adding a const-qualifier to a Type

Suppose that we want to add a const-qualifier to a particular type.

First, we create two typedefs – a const-qualified type (MyConstType) and the same type without the const-qualifier (MyType):

typedef int MyType;
typedef const int MyConstType;

Now, we add a const-qualifier to MyType using bsl::add_const and verify that the resulting type is the same as MyConstType:

assert(true ==
(bsl::is_same<bsl::add_const<MyType>::type, MyConstType>::value));
BloombergLP::bslmf::AddConst_Imp< t_TYPE,!is_reference< t_TYPE >::value &&!is_function< t_TYPE >::value &&!is_const< t_TYPE >::value >::Type type
Definition bslmf_addconst.h:172
Definition bslmf_issame.h:146

Finally, if the current compiler supports alias templates C++11 feature, we add a const-qualifier to MyType using bsl::add_const_t and verify that the resulting type is the same as MyConstType:

#ifdef BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES
assert(true ==
(bsl::is_same<bsl::add_const_t<MyType>, MyConstType>::value));
#endif

Note, that the bsl::add_const_t avoids the ::type suffix and typename prefix when we want to use the result of the bsl::add_const meta-function in templates.