A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../numeric/math/../../types/common_reference.html below:

std::common_reference - cppreference.com

template< class... T >
struct common_reference;

(since C++20)

Determines the common reference type of the types T..., that is, the type to which all the types in T... can be converted or bound. If such a type exists (as determined according to the rules below), the member type names that type. Otherwise, there is no member type. The behavior is undefined if any of the types in T... is an incomplete type other than (possibly cv-qualified) void.

When given reference types, common_reference attempts to find a reference type to which the supplied reference types can all be bound, but may return a non-reference type if it cannot find such a reference type.

The simple common reference type of two reference types T1 and T2 is defined as follows:

See Conditional operator for the definition of the type of expression false ? X : Y like the ones used above.

[edit] Member types Name Definition type the common reference type for all T... [edit] Helper types

template< class... T >
using common_reference_t = std::common_reference<T...>::type;

template< class T, class U, template<class> class TQual, template<class> class UQual >
struct basic_common_reference {};

The class template basic_common_reference is a customization point that allows users to influence the result of common_reference for user-defined types (typically proxy references). The primary template is empty.

[edit] Specializations

A program may specialize std::basic_common_reference<T, U, TQual, UQual> on the first two parameters T and U if std::is_same_v<T, std::decay_t<T>> and std::is_same_v<U, std::decay_t<U>> are both true and at least one of them depends on a program-defined type.

If such a specialization has a member named type, it must be a public and unambiguous member that names a type to which both TQual<T> and UQual<U> are convertible. Additionally, std::basic_common_reference<T, U, TQual, UQual>::type and std::basic_common_reference<U, T, UQual, TQual>::type must denote the same type.

A program may not specialize basic_common_reference on the third or fourth parameters, nor may it specialize common_reference itself. A program that adds specializations in violation of these rules has undefined behavior.

The standard library provides following specializations of basic_common_reference:

[edit] Notes [edit] Examples [edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4