This component‐private metafunction is derived from bsl::true_type if (template parameter) t_SOURCE can be converted to (template parameter) t_DEST without narrowing, and bsl::false_type otherwise. A conversion from pointer or pointer‐to‐member type to cv bool is considered narrowing even if the compiler does not implement P1957R2 (which was adopted as a DR); however, on compilers that do not implement P1957R2, we do not have the ability to check whether a user‐defined conversion sequence to cv bool would use a narrowing standard conversion, so on those compilers, we permit conversion to a t_DEST that is cv bool only if t_SOURCE is also cv bool, and not when t_SOURCE is a class type. This behavior is not expected to pose a problem for users migrating from bdlb::Variant, because that class does not support implicit conversions from an argument type to an alternative type.

Synopsis

Base Classes

Name

Description

bsl::integral_constant<bool, !(!Variant_CheckForP1957R2<bool>::value && bsl::is_same<bool, typename bsl::remove_cvref<t_DEST>::type>::value && !bsl::is_same<bool, typename bsl::remove_cvref<t_SOURCE>::type>::value)>

Metafunction representing a compile‐time constant of the specified (template parameter) t_TYPE with the specified (template parameter) t_VALUE.

Type Aliases

Name

Description

type

Alias for this integral_constant specialization.

value_type

Member Functions

Name

Description

operator()

Return a copy of the template argument t_VALUE.

operator value_type

Static Data Members

Name

value

Created with MrDocs