Title
Add <tuple> and <utility> to freestanding implementations
Status
nad
Section
[compliance]
Submitter
BSI

Created on 2010-08-25.00:00:00 last changed 168 months ago

Messages

Date: 2011-03-05.21:44:45

Rationale:

No consensus for a change at this time.

Date: 2010-11-29.10:49:30

[ 2010-Batavia: ]

Closed as NAD, reversing the decision at Rapperswil.

The consensus was that any freestanding implementation is going to feel compelled to offer the important features of <utility> even if we do not make them a freestanding requirement; breaking out additional small headers may have additional costs at compile time, and while the critical move-related functions could migrate to <type_traits>, the header name is far from appealing; adding the whole of <utility> starts to drag in dependencies on <tuple> and <memory>, so we prefer to place the burden of slicing or supporting this whole header on free-standing vendors.

Date: 2010-10-24.22:33:31

[ Resolution proposed by ballot comment ]

Add <utility> and <tuple> to table 15, headers required for a free-standing implementation.

Date: 2010-10-29.16:11:50

[ Summary of Rapperswil discusions ]

The preference of the meeting was to extract the rvalue-reference related utilities and swap into a freestanding header, but there was no clear preference for a name. Howard suggested simply dropping them into <type_traits> as both these utilities and type traits are used pretty much everywhere in the library implementation, it is the most convenient place to keep them (from an implementer's perspective).

Poll: Two-way: New header for forward, move, swap, move_with_noexcept and declval vs. calling out forward, move, swap, move_with_noexcept and declval as freestanding explicitly? SF new header: 4 WF new header: 3 WF call out as freestanding: 1 SF call out as freestanding: 2 Alisdair: Willing to write up both solutions, give us some time to think on it. Action: Need an issue and proposed wording for GB 56 - Alisdair to draft both options as in the last poll.

Date: 2010-10-24.10:50:39

Addresses GB-56

The <utility> header provides support for several important C++ idioms with move, forward and swap. Likewise, declval will be frequently used like a type trait. In order to complete cycles introduced by std::pair, the <tuple> header should also be made available. This is a similarly primitive set of functionality, with no dependency of a hosted environment, but does go beyond the minimal set of functionality otherwise suggested by the freestanding libraries.

Alternatively, split the move/forward/swap/declval functions out of <utility> and into a new primitive header, requiring only that of freestanding implementation.

History
Date User Action Args
2011-03-05 21:44:45adminsetmessages: + msg5599
2010-11-08 22:43:56adminsetmessages: + msg5313
2010-11-08 22:36:21adminsetstatus: open -> nad
2010-10-24 22:33:31adminsetmessages: + msg5066
2010-10-24 10:50:39adminsetmessages: + msg4990
2010-10-24 10:50:39adminsetmessages: + msg4989
2010-08-25 00:00:00admincreate