std::convertible_to(3)
π std::convertible_to(3) π
okay so this is the std::convertible_to(3) page from the C++ Standard Libary (that spelling is straight from the header, bestie, not me π). buckle up, we're talking concepts and conversions and it's gonna be iconic π«Ά
β¨ NAME β¨
std::convertible_toβ literallystd::convertible_to, that's the name, no cap π
πΈ Synopsis πΈ
Defined in header <concepts> β yes bestie, that exact header π
template< class From, class To >
concept convertible_to =
std::is_convertible_v<From, To> && (since C++20)
requires {
static_cast<To>(std::declval<From>());
};
The concept convertible_to<From, To> says that an expression of the same type and value category as those of std::declval<From>() can be implicitly and explicitly converted to the type To, and the two forms of conversion produce equal results. it's giving "both roads lead to the same slay" β¨
π¦ Semantic requirements π¦
So convertible_to<From, To> is modeled only if β given a function fun of type std::add_rvalue_reference_t<From>() such that the expression fun() is equality-preserving β these things are true:
- Either
Tois neither an object type nor a reference-to-object type, orstatic_cast<To>(fun())is equal to[]() -> To { return fun(); }(), and
- One of the following is true:
std::add_rvalue_reference_t<From>is not a reference-to-object type, orstd::add_rvalue_reference_t<From>is an rvalue reference to a non-const-qualified type, and the resulting state of the object referenced byfun()is valid but unspecified after either expression above; or- the object referred to by
fun()is not modified by either expression above.
π Equality preservation π
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise). that's the rule, bestie, no exceptions unless the page says so π
π See also π
is_convertible(C++11) (class template) andis_nothrow_convertible(C++20) β checks if a type can be converted to the other type.
std::convertible_to(3)Β· source/version:http://cppreference.comΒ· date:2024.06.10β okay bye bestie, go convert responsibly πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms