- 
    Type:New Feature 
- 
    Resolution: Duplicate
- 
    Priority:Major - P3 
- 
    None
- 
    Affects Version/s: None
- 
    Component/s: Build, Implementation
- 
    None
As part of an overhaul of bsoncxx, we should rely on C+17's std::variant instead of typed unions. With a bump to C17, we can drop polyfills and rely only on the C+17 standard library.
We'll need to assess C++17 support by compilers for major platforms and use this as one of the main features for a 4.0 (or 5.0) release.
When scheduled, this should be converted to an Epic ticket and individual tickets created for the work required to complete the transition to C++17.