Modify

Ticket #8189 (closed Feature Requests: fixed)

Opened 14 months ago

Last modified 11 months ago

Port some type traits from Boost.Variant

Reported by: apolukhin Owned by: apolukhin
Milestone: Boost 1.54.0 Component: type_traits
Version: Boost 1.52.0 Severity: Problem
Keywords: rvalues move trivial Cc: john@…

Description (last modified by apolukhin) (diff)

Boost.Varaint has the following traits, that can be used across modules and sould be ported to Boost.TypeTraits?

has_nothrow_move_assign
has_nothrow_move_constructor
has_trivial_move_assign
has_trivial_move_constructor

Implementation may be tuned to use C++11 features it they are available.

Attachments

type_traits.patch Download (68.5 KB) - added by apolukhin 14 months ago.
Initial patch (no documentation, but there are some tests)

Change History

Changed 14 months ago by apolukhin

Initial patch (no documentation, but there are some tests)

comment:1 Changed 14 months ago by apolukhin

  • Status changed from new to assigned
  • Description modified (diff)

Current patch has following issues, that must be solved before merging:

  • has_* functions must be renamed to is_*able to better reflect their behavior and to have more conformance with C++11
  • is_pod<T>::value || __has_trivial_move_assign(T) and is_pod<T>::value || __has_trivial_move_constructor(T) must be added to Clang and VC11 intrinsics
  • tests for detection of triviality and noexcept of user defined move operators and constructors on compilers with noexcept support

comment:2 Changed 14 months ago by apolukhin

(In [83206]) Added new type traits (more documentation, more tests and improved C++11 specific features detection still must to be done) (refs #8189)

comment:3 Changed 14 months ago by johnmaddock

  • Cc john@… added

comment:4 Changed 14 months ago by apolukhin

(In [83241]) Added documentation for new type traits (refs #8189) HTML pages regenerated (refs #8189)

comment:5 Changed 14 months ago by apolukhin

(In [83245]) Fix MSVC11 test (refs #8189). Added C++11 noexcept implementation of is_nothrow_move_constructible and is_nothrow_move_assignable traits and changed C++03 version to to work close to C++11 (refs #8189).

comment:6 Changed 14 months ago by apolukhin

(In [83365]) Added C++11 specific tests for implementation of is_nothrow_move_constructible and is_nothrow_move_assignable traits (refs #8189).

comment:7 Changed 13 months ago by apolukhin

(In [83430]) Added missing header for is_nothrow_move_constructible (refs #8189).

comment:8 Changed 11 months ago by apolukhin

  • Status changed from assigned to closed
  • Resolution set to fixed

This was merged to release branch and Boost.Variant already successfully uses new traits from release branch.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.