User:Cubbi
From cppreference.com
I use modern C++ both at work and as a hobby.
I can also be found on stackoverflow and Quora.
Back around 2010 I started working on my own C++ reference, dissatisfied with the ones available, but then cppreference.com became publicly editable and I've redirected my efforts here.
Contents |
TODO
- SAN-2018
- CWG
- 1. Defect Reports P1350R0: 1636 1781 2133 2373
- 2. "Consolidated wording" section of P0668R5 (Revising the C++ memory model)
- 3. P0982R1 (Weaken Release Sequences)
- 4. P1084R2 (Today's return-type-requirements Are Insufficient)
- 5. P1131R2 (Core Issue 2292: simple-template-id is ambiguous between class-name and type-name)
- 6. P1289R1 (Access control in contract conditions)
- 7. (failed)
- 8. P1002R1 (Try-catch blocks in constexpr functions)
- 9. P1327R1 (Allowing dynamic_cast, polymorphic typeid in Constant Expressions)
-
10. P1236R1 (Two's Complement)- done -
11. P0482R6 (char8_t)- done - 12. P1353R0 (Missing Feature Test Macros)
- 13. P1073R3 (consteval)
- 14. P0595R2 (std::is_constant_evaluated())
- 15. P1141R2 (Concept auto).
- 16. P1094R2 (Nested Inline Namespaces)
- 17. P1330R0 (Changing the active member of a union inside constexpr)
- LWG
- (Concurrency TS) issue 2697 in P1224R0
- (LibFun TS) issues 2960 and 3134 in P1224R0
- (LibFun TS) P1210R0 (Rebase of libfun-3, LWG issue 3134)
- 4. issues except 2697, 2960 and 3134 in P1224R0: 2183 2184 2412 2682 2936 2943 2995 2996 3008 3025 3031 3037 3038 3054 3065 3096 3116 3122 3127 3128 3129 3130 3131 3132 3137 3140 3145 3147 3148 3153 3154 3160
- 5. P1123R0 (Editorial Guidance for merging P0019r8 and P0528r3). (memory/value in CAS)
- 6. P0487R1(Fixing operator>>(basic_istream&, CharT*) (LWG 2499)).
- 7. P0602R4(variant and optional should propagate copy/move triviality).
- 8. P0655R1 (visit<R>: Explicit Return Type for visit).
- 9. P0972R0 (<chrono> zero(), min(), and max() should be noexcept).
- 10. P1006R1 (Constexpr in std::pointer_traits).
- 11. P1032R1 (Misc constexpr bits).
- 12. P1148R0 (Cleaning up Clause 20).
- 13. P0318R1 (unwrap_ref_decay and unwrap_reference)
- 14. P0357R3 (reference_wrapper for incomplete types)
- 15. P0608R3 (A sane variant converting constructor)
- 16. P0771R1 (std::function move constructor should be noexcept)
- 17. P1007R3 (std::assume_aligned)
- 18. P1020R1 (Smart pointer creation with default initialization)
- 19. P1285R0 (Improving Completeness Requirements for Type Traits)
- 20. P1248R1 (Remove CommonReference requirement from StrictWeakOrdering
- 21. P0591R4 (Utility functions to implement uses-allocator construction)
- 22. P0899R1 (LWG 3016 is Not a Defect)
- 23. P1085R2 (Should Span be Regular?)
- 24. P1165R1 (Make stateful allocator propagation more consistent for operator+(basic_string))
- 25. P0896R4 (The One Ranges Proposal)
-
26. P0356R5 (Simplified partial function application).- done -
27. P0919R3 (Heterogeneous lookup for unordered containers).- done - 28. P1209R0 (Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20).
- RAP-2018
- LWG issue 3062 (decay->remove_cvref in all parallel algs: need to templatize that line)
- JAX-2018
This section is incomplete
Reason: review completeness of all below
- CWG Defect Reports
- Motion 1 P0968R0 (Core Language Working Group "tentatively ready" Issues) except 2237
- 1893 1910 1983 2059 2081 2088 2092 2164 2226 2227 2229 2234 2235 2255 2260 2299
- Motion 3
P0962R1 (Relaxing the range-for loop customization point finding rules) as a Defect Report-- applied by TC - Motion 4 P0969R0 (Allow structured bindings to accessible members) as a Defect Report
- Motion 5 P0961R1 (Relaxing the structured bindings customization point finding rules) as a Defect Report
- CWG C++20
- Motion 1 P0968R0 (Core Language Working Group "tentatively ready" Issues) 2237 only
- 2237
-
Motion 2 P0840R2 (Language support for empty objects)-- applied - Motion 6 P0634R3 (Down with typename!)
- Motion 7 P0780R2 (Allow pack expansion in lambda init-capture)
-
Motion 8 P0479R5 (Proposed wording for likely and unlikely attributes (Revision 5))-- applied - Motion 9 P0905R1 (Symmetry for spaceship)
- Coroutines TS
- Motion 10 P0914R1 (Add parameter preview to coroutine promise constructor)
- Motion 11 P0911R1 (Rebase the Coroutines TS onto the C++17 Standard)
- LWG C++20
- Motion 7 P0888R0 (C++ Standard Library Issues to be moved in Jacksonville) except 3002, 3010 and 3020
- 2164 2243 2816 2843 2849 2851 2969 2975 2989 3000 3004 3005 3007 3009 3013 3014 3015 3017 3026 3030 3034 3035 3039 3041 3042 3043 3045 3048 3051
- Motion 8 P1003R0 (C++ Standard Library Issues Resolved Directly In Jacksonville).
- 2946 3075
- Motion 9 P0754R2 (<version>).
- Motion 10 P0809R0 (Comparing Unordered Containers). This resolves LWG#2831
- Motion 11 P0355R7 (Extending chrono to Calendars and Time Zones)
- Motion 12 P0966R1 (string::reserve Should Not Shrink).
- P0551R3 (Thou Shalt Not Specialize std Function Templates!).
- P0753R2 (Manipulators for C++ Synchronized Buffered Ostream).
- P0122R7 (<span>).
- P0858R0 (Constexpr iterator requirements).
- LWG Parallelism TS
- Motion 1 P0214R9 (Data-Parallel Vector Types & Operations)
- Motion 2 transmit the approved updated working draft for PTDS.
- LWG Reflection TS
- Motion 3 New Work Item for a Technical Specification on "C++ Extensions for Reflection"
- LWG Coroutines TS
- Motion 4 P0913R1 (Add symmetric coroutine control transfer).
- LWG Networking TS
- Motion 5 issues 3002, 3010 and 3020 in P0888R0
- LWG LibFun TS
- Motion 6 New Work Item for a Technical Specification on "C++ Extensions for Library Fundamentals, Version 3"
- ABQ-2017
- CWG Defect Reports
- Motion 1 P0817R0 (Core Language "ready" issues)
- 2342
- Motion 2 P0818R1 (Core Language "tentatively ready" issues)
-
18622177 2305 2307 2313 2315 2338
-
- CWG C++20
-
Motion 3 P0614R1 (Range-based for statements with initializer)(applied to cppreference) - Motion 4 P0588R1 (Simplifying implicit lambda capture)
- Motion 5 P0846R0 (ADL and Function Templates that are not Visible)
- Motion 6 P0641R2 (Resolving Core Issue #1331 (const mismatch with defaulted copy constructor))
- Motion 7 P0859R0 (Core Issue 1581: When are constexpr member functions defined?)
-
Motion 8 part 1 P0515R3 (Consistent comparison)(applied to cppreference) -
Motion 8 part 2 P0768R1 (Library Support for the Spaceship (Comparison) Operator)(applied to cppreference) - Motion 9 P0857R0 (Wording for “functionality gaps in constraints”)
- Motion 10 P0692R1 (Access Checking on Specializations)
- Motion 11 P0624R2 (Default constructible and assignable stateless lambdas)
- Motion 12
P0767R1 (Deprecate POD)(applied to cppreference) - Motion 13 P0315R4 (Wording for lambdas in unevaluated contexts)
-
- LWG Parallelism TS
- Motion 1 P0776R1 (Rebase the Parallelism TS onto the C++17 Standard)
- Motion 2 P0075R2 (Template Library for Parallel For Loops)
- LWG Networking TS
- Motion 3 LWG issue 2779 in P0815R0 (C++ Standard Library Issues to be moved in Albuquerque)
- LWG C++20
- Motion 4 all of the issues except LWG issue 2779 in P0815R0 (C++ Standard Library Issues to be moved in Albuquerque)
- Motion 5 LWG issue 2958 in P0864R0 (C++ Standard Library Issues Resolved Directly In Albuquerque )
-
Motion 6 P0550R2 (Transformation Trait remove_cvref)(applied to cppreference) -
Motion 7 P0777R1 (Treating Unnecessary decay)(applied to cppreference) -
Motion 8 P0600R1 (nodiscard in the Library)(applied to cppreference) -
Motion 9 ("intentionally omitted") -
Motion 10 P0439R0 (Make std::memory_order a scoped enumeration)(applied to cppreference) -
Motion 11 P0053R7 (C++ Synchronized Buffered Ostream)(applied to cppreference) -
Motion 12 P0653R2 (Utility to convert a pointer to a raw pointer)(applied to cppreference) - Motion 13 P0202R3 (Add constexpr modifiers to functions in <algorithm> and <utility> Headers)
-
Motion 14 P0415R1 (Constexpr for std::complex)(applied to cppreference) -
Motion 15 P0718R2 (Atomic shared_ptr)(applied to cppreference) -
Motion 16 P0020R6 (Floating Point Atomic)(applied to cppreference) - Motion 17 P0616R0 (de-pessimize legacy <numeric> algorithms with std::move) t
-
Motion 18 P0457R2 (String Prefix and Suffix Checking)(applied to cppreference)
- Toronto-2017
- CWG Defect Reports
- Motion 1 P0710R1 (Core Language "ready" issues)
- 2253
- Motion 2 P0711R0 (Core Language "tentatively ready" issues)
- 1523 1704 1728 1836 2273 2277 2287 2290
- Motion 3 P0727R0
- 1299
- CWG C++20 motions
-
Motion 4 P0683R1 (Default member initializers for bit-fields (revision 1))-- applied to cppreference -
Motion 5 P0704R1 (Fixing const-qualified pointers to members)-- applied to cppreference -
Motion 6 P0409R2 (Allow lambda capture [=, this])-- applied to cppreference - Motion 7 P0306R4 (Comma omission and comma deletion)
-
Motion 8 P0329R4 (Designated Initialization Wording)-- applied to cppreference -
Motion 9 P0428R2 (Familiar template syntax for generic lambdas)-- applied to cppreference - Motion 10 P0702R1 (Language support for Constructor Template Argument Deduction)
- Motion 11 P0734R0 (Wording Paper, C++ extensions for Concepts)
- Motion 12 Modules -> PDTS
-
- LWG
- Motion 13 (Coroutines) P0664R1 (Coroutine TS NB Comments / Issues)
- Motion 14 Coroutines publication
- Motion 15 (Ranges) P0663R0 (Ranges TS “Ready” Issues)
- Motion 16 (Ranges) P0740R0 (Ranges TS “Immediate” Issues)
- Motion 17 (Ranges) P0541R1 (Ranges TS: Post-Increment on Input and Output Iterators)
- Motion 18 (Ranges) P0547R2 (Ranges TS: Assorted Object Concept Fixes)
- Motion 19 (Ranges) P0579R1 (Constexpr for <experimental/ranges/iterator>)
- Motion 20 (Ranges) P0651R1 (Switch the Ranges TS to Use Variable Concepts)
- Motion 21 (Ranges) P0662R0 (Wording for Ranges TS Issue 345 / US-2: Update ranged-for-loop wording)
- Motion 22 Ranges publication
- Motion 23 (net) P0728R0 (Wording for Networking PDTS ballot comment 005)
- Motion 24 (net) P0729R0 (Proposed wording for Networking TS NB comment GB 9)
- Motion 25 (net) P0742R0 (Wording for Networking PDTS ballot comment resolutions)
- Motion 26 (net) P0746R0 (Wording for Networking PDTS ballot comment 011 (US-10))
- Motion 27 (net) P0747R1 (Wording for Networking PDTS ballot comment 026 (GB-15), but not 027 (GB-16))
- Motion 28 (net) P0748R0 (Wording for Networking PDTS ballot comments on reentrancy)
- Motion 29 Networking publication
- Motion 30 (parallelism) P0076R4 (Vector and Wavefront Policies)
- Motion 31 all of the issues in P0698R0
- 2444 2593 2597 2783 2932 2937 2940 2942 2954 2961 2966 2974
- Motion 32 the issues in P0699R0
-
2901(tc)2956(tc)
-
-
Motion 33 P0463R1 (Endian just Endian)-- applied to cppreference -
Motion 34 P0682R1 (Repairing elementary string conversions)-- applied to cppreference - Motion 35 P0739R0 (Some improvements to class template argument deduction integration into the standard library)
-
Motion 36 P0674R1 (Extending make_shared to Support Arrays)-- applied to cppreference
- Kona-2017
- CWG
- Motion 1 P0575R1 (Core Language "ready" issues)
- 426
7271677 1710 1860 2174 2196 2198 2205 2218 2248 2251
- 426
- Motion 2 P0576R1 (Core Language "tentatively ready" issues)
- 2201 2206 2214 2220 2224 2259 2262
- Motion 3 P0622R0 (Additional CWG "ready" and "tentatively ready" Issues)
- 426 727 1622 1710 2196 2198 2211 2247 2248 2251 2268 2272 2276
-
Motion 4 P0612R0 (NB comment CH2: volatile)-- applied -
Motion 5 P0613R0 (NB comment GB15: Resolution of Core Issue 2011)-- applied -
Motion 6 P0298R3 (A byte type definition)-- applied -
Motion 7 P0615R0 (Renaming for structured bindings)-- applied -
Motion 8 P0620R0 (class template argument deduction issues)-- applied -
Motion 9 P0270R3 (Removing C dependencies from signal handler wording)--applied - Motion 10 P0250R3 (Wording improvements for initilization and thread ids (CWG 2046, 1784))
- Motion 11a P0582R0 (Modules: Contexts of Template Instantiations and Name Lookup)
- LWG
-
Motion 1 Coroutines PDTS- applied - Motion 2 P0165R4 (C++ Standard Library Issues to be moved in Kona)
- 2260 2768 2769 2781 2782 2784 2785 2786 2787 2789 2794 2795 2804 2812 2824 2826 2834 2835 2837 2838 2842 2850 2853 2855
- Motion 3 "Review" issues:
- 2796 2790 2676
- (WIP: since I dropped unreviewed noexcept from cpp/filesystem/error_handling, need to review the rest of filesystem for noexcept)
Motion 4 P0317R1 (Directory Entry Caching for Filesystem) -
Motion 5 P0492R2 (Proposed Resolution of C++17 NB Comments for Filesystems)-- applied -
Motion 6 P0430R2 (File system library on non-POSIX-like operating systems)-- applied -
Motion 7 P0452R1 (Unifying Parallel Algorithms).-- applied - (WIP: blanket wording; needs to go to many pages as a template or directly to cpp/algorithm) Motion 8 P0518R1 (Allowing copies ... in parallel algorithms in response to CH11)
- (WIP: blanket wording; needs to go to many pages as a template) Motion 9 P0523R1 (Wording for CH 10: Complexity of parallel algorithms)
-
Motion 10 P0574R1 (Algorithm Complexity Constraints and Parallel Overloads).-- applied -
Motion 11 P0467R2 (Iterator Concerns for Parallel Algorithms).-- applied -
Motion 12 P0623R0 (Final C++17 Parallel Algorithms Fixes).-- applied -
Motion 13 A and B from P0604R0 (Resolving GB 55, US 84, US 85, US 86)-- applied by tc -
Motion 14 A and B2 from P0607 (Inline Variables for the Standard Library)-- applied by tc -
Motion 15 P0618R0 (Deprecating <codecvt>).-- applied -
Motion 16 revert P0181R1 "Ordered By Default"-- finished off by tc -
Motion 17 P0156R2 (Variadic Lock guard).-- applied -
Motion 18 P0599R1 (noexcept for hash functions).-- applied -
Motion 19 P0433R2 (template deduction for class templates into the standard library). - Motion 20/20a/20b P0625R0 (C++ Standard Library Issues Resolved Directly In Kona).
- 2788 2801 2802 2806 2807 2857 2861 2866 2868 2872 2873 2874 2875 2876 2878 2890 2900 2903 2904 2905 2908 2911 2921 2934
- Motion 21 P0558R1 (Resolving atomic named base class inconsistencies).
- Motion 22 P0548R1 (common_type and duration).
- Motion 23 P0621R0 (Ready Ranges TS Issues).
-
- Issaquah
- CWG
-
Motion 1 P0519R0 (Core Language "ready" issues)
-
13951825196121432155(noop, we didn't get that low in the grammar when applying cwg1838)2271
-
-
Motion 2 P0520R0 (Core Language "tentatively ready" issues)-- applied
-
20942100
-
-
Motion 3 P0507R0 -- Core Language issue 1343 -
Motion 4 P0522R0 -- Core Language issue 150 -
Motion 5 P0003R5 ("Removing Deprecated Exception Specifications from C++17"). - Motion 6 P0490R0 ("Core language changes addressing National Body comments for CD C++17").
-
Motion 7 P0195R2 ("Pack expansions in using-declarations").- applied -
Motion 8 P0512 ("Class Template Argument Deduction Assorted NB resolution and issues").-- applied -
Motion 9 P0298R2 ("A byte type definition").-- failed in plenary -
Motion 10 P0500R0 (Modules TS defect reports)-- we don't have a Modules page yet -
Motion 11 P0266R2 ("Lifting Restrictions on requires-Expressions").-- applied -
Motion 12 NWI for Coroutines TS-- not for us
-
- LWG
- Motion 1 (libfun2) N4616 (NB Responses PDTS 19568 2 Collated Comments).
- Motion 2 (libfun2) P0253R1 (Fixing a design mistake in the searchers interface in Library Fundamentals).
-
Motion 3 libfun2 for publication-- not for us -
Motion 4 Ranges TS-- we don't have a ranges page yet -
Motion 5 Ranges TS-- same -
Motion 6 Networking TS-- same -
Motion 7 Networking TS-- same -
Motion 8 Coroutines TS-- same -
Motion 9: There is no motion 9. -
Motion 10 P0304R1 (C++ Standard Library Issues Resolved Directly In Issaquah)-- applied
-
2770
-
- Motion 11 P0165r3 (C++ Standard Library Issues to be moved in Issaquah) with the exception of 2768 (which has been pulled back) and 2570, 2745, 2750, and 2733 (which apply to the LFTS)
- 2062 2166 2221 2223 2261 2394 2460 2468 2475 2503 2510 2514 2519 2531 2534 2536 2540 2543 2544 2556 2562 2567 2569 2578 2584 2589 2591 2598 2664 2672 2678 2679 2680 2681 2686 2694 2696 2699 2712 2722 2729 2732 2735 2736 2738 2739 2740 2742 2744 2747 2748 2749 2752 2753 2754 2755 2756 2758 2759 2760 2765 2767 2771 2773 2777 2778
-
Motion 12: US 81 and RU 4 P0426R1 (Constexpr for std::char_traits).-- applied -
Motion 13: US 80 and FI 6 P0403R1 (Literal suffixes for basic_string_view).-- applied -
Motion 14: GB 50 P0505R0 (Wording for GB 50 - constexpr for chrono).-- applied -
Motion 15: CA 16 P0418R2 (Fail or succeed: there is no atomic lattice). This also resolves LWG issue 2445.-- applied -
Motion 16: GB 58 P0508R0 (Wording for GB 58 - structured bindings for node_handles).-- applied -
Motion 17: GB 68, US 155, US 154 P0503R0 (Correcting library usage of "literal type").-- applied -
Motion 18: FI 19 P0414R2 (Merging shared_ptr changes from Library Fundamentals to C++17) and P0497R0 (Fixes to shared_ptr support for arrays).-- applied diffs from r0 (which was done earlier) -
Motion 19: CH 3A P0504R0 (Revisiting in-place tag types for any/optional/variant).-- applied - Motion 20: US 18, US 70 and GB 43 P0003R5 (Removing Deprecated Exception Specifications from C++17) - just the changes to the library clauses.
-
Motion 21: US 112, US 115, US 116, US 117, US 120, US 181, FI 22, CH 3B, CH 4, CH 5, CH 6, and CH 8 P0510R0 (Disallowing references, incomplete types, arrays, and empty variants).-- applied -
Motion 22: GB 62 P0516R0 (Clarify That shared_future’s Copy Operations have Wide Contracts).-- applied -
Motion 23: GB 41 and GB 42 P0509R1 (Updating “Restrictions on exception handling”).-- a home for 17.6 (library requirements) is on the todo list -
Motion 24: US 15, US 16, US 167, US 168, US 169, US 170, CA 17 P0502R0 (Throwing out of a parallel algorithm terminates—but how?).-- applied -
Motion 25: US 163 P0517R0 (Make future_error Constructible).-- applied -
Motion 26: CA 14 P0521R0 (shared_ptr use_count/unique)).-- applied -
Motion 27: FI 15, GB 69 P0513R0 (Poisoning the Hash). Also resolves LWG 2791 and LWG 2543.--applied -
Motion 28: FI 5 P0067R5 (Elementary string conversions, revision 5)-- applied - Motion 29 P0435R1 (Resolving LWG Issues re common_type). Resolves LWG issues 2465 and 2763.
- new symbols for search/index/etc: std::to_chars, std::from_chars, std::chars_format, std::from_chars_result, std::to_chars_result, std::in_place_type, std::in_place_index
- removed symbols: std::in_place_tag
- Oulu
- LWG
- Motion 1 issues in "Ready" status from p0165r2: 2393 2542 2436 2550 2310 2181 2328 2667 2669 2671 2673 2670 2426 2309
- Motion 2 issues in "Tentatively Ready" status from p0165r2: 2710 2685 2698 2596 2684 2689 2707 2674 2706 2683
- Motion 3 issues in "Ready" status from p0165r2 [libfun2]: 2555 2451 2573 2551 2516
- Motion 4 issues in "Tentatively Ready" status from p0165r2 to the Library Fundamentals 2 Working Paper: 2509
- Motion 5 Priority 1 issues in "Immediate" status from p0397r0: 2704 2711 2725
- Motion 6 issues in "Immediate" status from p0304r1: 2422 2709 2716 2718 2719 2720 2721 2723 2726 2728
- Motion 34 p0180r2, Reserve a New Library Namespace for Future Standardization
- Jacksonville
- CWG
- Motion 2 P0263R1 (2069, 2071, 2079, 2085, 2095, 2096, 2098, 2104, 2106, 2107, 2109, 2113, 2122, 2129, 2140, 2141, 2146, 2147, 2153, 2154, 2156)
- LWG
- Motion 1: issues 2276 2523 2537
- Motion 2: issues 2192 2450 2520 2545 2557 2560 2565 2566 2571 2572 2576 2577 2579 2581 2582 2583 2585 2586 2590
- Motion 3: issues 2522 2539 2558 2574 2575
Other TODO
- shrink examples in cpp/chrono/high_resolution_clock and cpp/types/numeric_limits/max_digits10
- update cpp/atomic/memory_order to talk more about where rel/ack establishes happens-before (and avoids data races), and not just where it ensures side effect visibility (see std-discussion thread)
- each Source and EcharT still needs an enable_if line
- the type traits in cpp/types (and elsewhere) could use _v and _t versions included in the titles of their dsc templates
- finish up cpp/language (qual lookup, various other todos)
- finish up the remaining redlinks in cpp/concepts
- do something about cpp/links/libs (maybe list license and last update)
- explain rebind for allocator concept/allocator_traits/std::allocator/scoped allocator adaptor
- better examples for valarray masks and slices
- cpp/types/climits (especially the cfloat macros) and c/types/limits need TLC. At the very least, the macros there need their own pages with rationales/usage. Some use cases for DIGITS: [1] and [2]
- Merge behavior-changing DRs into main article texts and list them in a new section (see Talk:cpp/language/value_initialization) (CWG, not LWG).
- Should define "function signature" somewhere
- mention the ambig between member enum decl and unnamed bit fields of enum type.. maybe
- find home for 17.6.5.5 [member.functions], 17.6.4.10[res.on.objects] etc. Perhaps a new page about the C++ standard library guarantees and leeways?
Follow up
- Talk:cpp/language/lookup missing class member access loookup
- Talk:cpp/algorithm/set_difference tweak the comp template once again
- Talk:cpp/language/lambda formatting
- Talk:Main_Page#Broken_search_box index the header files for the search box
- the /cpp/concept pages should be indexed as their proper names, in addition to prose (/cpp/concept/EqualityComparable is currently indexed as "equality comparable")
Sandbox
Big-picture items for cpp/language Miscellaneous
- Tag dispatch (notes: boost doc SO #15368763 foonathan 11/16/15 crazy eddie 12/15/14 boost.dispatch candidate library)
- CRTP, mixins, and policies
- Value-semantic polymorphism