A variant
type is on planned for inclusion in the C++ Standard, probably in
C++17. Current working papers are (list extracted from 2015 working group
papers):
- 2015-09-28: Variant design review. P0086R0
- 2015-09-28: Variant: a type-safe union without undefined behavior (v2) P0087R0
- 2015-09-27: Variant: a type-safe union that is rarely invalid (v5) P0088R0
- 2015-09-24: Simply a Strong Variant P0093R0
- 2015-09-24: Simply a Basic Variant P0094R0
- 2015-09-24: The Case for a Language Based Variant P0096R0
- 2015-09-25: Implementing the strong guarantee for variant<> assignment P0110R0
- 2015-09-24: Homogeneous interface for variant, any and optional (Revision 1) P0032R1
Last state can be seen from The Variant Saga: A happy ending?.
The optional
type is also on the way into the standard. The papers are:
- 2013-10-03: A proposal to add a utility class to represent optional objects (Revision 5) N3793
- 2014-01-18: Working Draft, Technical Specification on C++ Extensions for Library Fundamentals N3848
- Older working drafts are: N4218 (rev 1), N4516 (rev 2), N4450 (rev 3), and N4542 (rev 4). They have been split into P0086 (general design discussions) and P0087 and P0088 (containing two competing? specs).
- 2015-07-28: Variant: Discriminated Union with Value Semantics P0080R0 An alternative proposal to N4542.