struct S { ~S(); // non-trivial }; static_assert(std::is_trivially_constructible<S>::value, "");
Should the assert pass? Implementations disagree.
Per [meta.unary.prop]'s Table 38, this trait looks at whether the following variable definition is known to call no operation that is not trivial:
S t(create<Args>()...);
... where Args is an empty pack in this case. That variable definition results in a call to the S destructor. Should that call be considered by the trait?