It seems that a std::tuple is never trivially copyable… that sucks!
struct TrivialStruct {
TrivialStruct (int a, int b, int c) : a_ (a), b_ (b), c_ (c)
{
}
int a_;
int b_;
int c_;
};
using TrivialTuple = std::tuple<int, int, int>;
static_assert (std::is_trivially_copyable_v<TrivialStruct> == true);
static_assert (std::is_trivially_copyable_v<TrivialTuple> == false);