Why did they choose to make the std::assignable_from
concept behave so differently
from its name-sharing type-trait std::is_assignable
? (Opposed to some of the other name-sharing type-traits and concepts.)
static_assert(not std::is_convertible_v<char, std::string>); // ok
static_assert(not std::convertible_to<char, std::string>); // ok
static_assert(not std::is_constructible_v<std::string, char>); // ok
static_assert(not std::constructible_from<std::string, char>); // ok
static_assert(std::is_assignable_v<std::string&, char>); // ok
static_assert(std::assignable_from<std::string&, char>); // fail
Why didn't they either change std::is_assignable
to be more in line with std::assignable_from
, or simply give a different name to std::assignable_from
?
Please note that I'm not asking what explains the difference in behavior between the type-trait and related concept.