I have hard time to understand following concepts:
- is_trivially_copyable
- is_trivially_copy_assignable
- is_trivially_copy_constructible
- is_trivially_destructible
- is_trivially_move_assignable
Take for example std::string_view.
#include <string_view>
int main(){
using sv = std::string_view;
// static_assert(std::is_trivial_v<sv> );
static_assert(std::is_trivially_copyable_v<sv> );
static_assert(std::is_trivially_copy_assignable_v<sv> );
static_assert(std::is_trivially_copy_constructible_v<sv> );
static_assert(std::is_trivially_destructible_v<sv> );
static_assert(std::is_trivially_move_assignable_v<sv> );
}
My question is which of these, imply others, so I can to less static_assert's in my code?
I know is_trivial imply all of these,
Note I am not interested in c-tors:
- is_trivially_constructible
- is_trivially_default_constructible