On Saturday, January 24, 2026, Thiago Macieira wrote:
And it's only worse when we consider you want it to be non-cross-platform. I think that's a DOA request.
The term you seek is "implementation-specific behaviour".
So the Standard would say something like:
=== is_trivially_copy_constructible ===
- For polymorphic objects, trait will always be false if the following expression is false: 'is_final_v<T> || guaranteed_complete_object'.
- For polymorphic objects, trait will be implementation-defined if the following expression is true: 'is_final_v<T> || guaranteed_complete_object'.
But that's only if we don't also introduce "std::copy_lifetime". If we introduce "std::copy_lifetime" then the trait can be defined as:
=== is_trivially_copy_constructible ===
- For polymorphic objects, trait will evaluate to 'is_final_v<T> || guaranteed_complete_object'
And so then "std::copy_lifetime" will be a no-op on every machine except for arm64e. On arm64e it will re-sign the vptr and vbptrs.