Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make static_vector<T,N> trivially relocatable when T is trivially relocatable #263

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

Quuxplusone
Copy link

This PR definitely isn't ready for prime time, but I figured I might as well exploit Cunningham's Law here.

The idea is that when the compiler supports __cpp_impl_trivially_relocatable (P1144's proposed feature-test macro), then we should define -DBOOST_CONTAINER_ATTRIBUTE_TRIVIALLY_RELOCATABLE_IF(x)=[[trivially_relocatable(x)]]. (And/or set it to a vendor-specific attribute if-and-when anyone supports a vendor-specific attribute; no mainstream compiler does, yet.)

The big problem with this patch as it stands right now is that I have no idea where these macros are configured. We want to do the same thing that BOOST_CONTAINER_ATTRIBUTE_NODISCARD does; but that's not configured anywhere in this repo, either.

I see that Boost.Container is just inheriting all its type-traits from Boost.Move, so probably dtl::is_trivially_relocatable belongs in Boost.Move, not here?

Fixes #258.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feature request: Make static_vector "trivially relocatable" when possible
1 participant