Чтобы быть более точным, почему std::is_assignable_v<int, int> << '\n';
возвращает false
?Это потому, что у int нет перегруженного оператора присваивания (примитивный тип и все)?
(кстати, std::is_trivially_assignable_v<int, int>
тоже дает false
.)
Обратите внимание, что это: struct Structure {};
std::is_assignable<class Structure, class Structure>::value;
вернет true
, потому что перегруженный оператор присваивания неявно определен для Structure
.
Я прав до сих пор?Если это так, то я полагаю, было бы нетривиально улучшить is_assignable
, чтобы принимать и примитивные типы?Иначе, есть ли намеки на такой возможный обходной путь?