January 2019

C++ Links #16—Bartlomiej Filipek and Wojciech Razik

The next episode of the ‘most useful C++ links’ is now available:

C++ Links #16

by Bartlomiej Filipek and Wojciech Razik

From the article:

See the most important and useful articles, podcasts and videos that happen between 19th and 25th of January 2019.

This week you will find a link to a ray-tracer, real-life examples of ranges, new useful features of Microsoft Visual Studio and many more!

Italian C++ Conference 2019: Call for sessions and sponsors

I am very happy to announce the 4th edition of the Italian C++ Conference, the biggest annual conference about C++ development in Italy.


When: June 15, 2019

Where: Milan (Politecnico di Milano)

Website: https://italiancpp.org/itcppcon19


I am very excited to have Andrei Alexandrescu as keynote speaker this year!


The call for sessions is open until Feb 28:

Submit your talk here

One track will be entirely in English.


The event is totally not-for-profit so we are looking for sponsors. For more information, please get in touch by sending an email to info [at] italiancpp [dot] org.

2019-01 pre-Kona mailing available (part 2 of 2)

The full 2019-01 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
P1253R0 Guidelines for when a WG21 proposal should be reviewed by SG16, the text and Unicode study group Steve Downey 2019-01-21 2019-01 WG21
P1255R2 A view of 0 or 1 elements: view::maybe Steve Downey 2018-11-26 2019-01 P1255R1 Library Evolution
P1280R1 Integer Width Literals Isabella Muerte 2018-10-05 2019-01 P1280R0 Library Evolution
P1286R1 Contra CWG DR1778 Richard Smith 2019-01-18 2019-01 P1286R0 Core, Library
P1290R1 Avoiding undefined behavior in contracts J. Daniel Garcia, Ville Voutilainen 2019-01-21 2019-01 P1290R0 Evolution, Core
P1293R2 ostream_joiner Mike Spertus, Nathan Wilson 2019-01-21 2019-01 P1293R1 Library Evolution, Library
P1301R2 [[nodiscard("should have a reason")]] JeanHeyd Meneide, Isabella Muerte 2019-01-21 2019-01 P1301R1 Evolution, Core
P1302R1 Implicit Module Partition Lookup Isabella Muerte, Richard Smith 2019-01-21 2019-01 P1302R0 Evolution
P1306R1 Expansion statements Andrew Sutton, Sam Goodrick, Daveed Vandevoorde 2019-01-21 2019-01 P1306R0 Evolution
P1320R1 Allowing contract predicates on non-first declarations Ville Voutilainen 2019-01-20 2019-01 P1320R0 Evolution
P1323R1 Contract postconditions and return type deduction Hubert S.K. Tong 2019-01-19 2019-01 P1323R0 Core
P1329R0 On the Coroutines TS Mihail Mihaylov, Vassil Vassilev 2018-11-20 2019-01 WG21
P1331R0 Permitting trivial default initialization in constexpr contexts CJ Johnson 2019-01-04 2019-01 Evolution
P1337R0 Aliasing the standard library as a means to save C++ CJ Johnson 2019-04-01 2019-01 Library Evolution
P1339R0 Disallowing the friending of names in namespace std CJ Johnson 2019-01-04 2019-01 Library Evolution
P1344R0 Pre/Post vs. Enspects/Exsures Nathan Myers 2019-01-18 2019-01 Evolution
P1347R1 Modules: ADL & Internal Linkage Nathan Sidwell, Davis Herring 2019-01-17 2019-01 P1347R0 Evolution
P1351R0 Intrusive smart pointer feedback Mark Zeren 2019-01-20 2019-01 Library Evolution
P1355R1 Exposing a narrow contract for ceil2 Chris Kennelly 2019-01-21 2019-01 P1355R0 SG6, Library Evolution, Library
P1357R0 Traits for [Un]bounded Arrays Walter E. Brown, Glen J. Fernandes 2019-01-06 2019-01 Library
P1361R0 Integration of chrono with text formatting Victor Zverovich, Daniela Engert, Howard E. Hinnant 2019-01-20 2019-01 Library Evolution, Library
P1371R0 Pattern Matching Sergei Murzin, Michael Park, David Sankel, Dan Sarginson 2019-01-21 2019-01 Evolution
P1377R0 Summary of Dec 2018 SG14 freestanding discussions Ben Craig 2019-01-12 2019-01 WG21
P1380R1 Ambiguity and Insecurities with Three-Way Comparison Lawrence Crowl 2019-01-20 2019-01 P1380R0 Core, Library
P1382R0 volatile_load<T> and volatile_store<T> JF Bastien, Paul McKenney 2019-01-11 2019-01 SG1
P1383R0 More constexpr for <cmath> and <complex> Edward J. Rosten, Oliver J. Rosten 2019-01-18 2019-01 SG6, Library Evolution, Library
P1385R0 A proposal to add linear algebra support to the C++ standard library Guy Davidson, Bob Steagall 2019-01-21 2019-01 SG6, Library Evolution Incubator
P1386R0 A Standard Audio API for C++: Motivation, Scope, and Basic Design Guy Somberg, Guy Davidson, Timur Doumler 2019-01-21 2019-01 SG13
P1388R0 2019-01-11 SG20 Telecon Minutes JC van Winkel, Christopher Di Bella 2019-01-11 2019-01 SG20
P1389R0 Standing Document for SG20: Guidelines for Teaching C++ to Beginners Christopher Di Bella, Simon Brand, Michael Adams 2019-01-21 2019-01 SG20
P1390R0 Suggested Reflection TS NB Resolutions Matúš Chochlík, Axel Naumann, and David Sankel 2019-01-10 2019-01 SG7, Evolution, Core, Library Evolution, Library
P1391R0 Range constructor for std::string_view Corentin Jabot 2019-01-21 2019-01 Library Evolution
P1392R0 Differences Between Functions and Function Templates Davis Herring, Roger Orr 2019-01-14 2019-01 WG21
P1393R0 A General Property Customization Mechanism David Hollman, Chris Kohlhoff, Bryce Lelbach, Jared Hoberock, Gordon Brown, Michał Dominiak 2019-01-13 2019-01 Library Evolution
P1394R0 Range constructor for std::span Corentin Jabot, Casey Carter 2019-01-21 2019-01 Library Evolution
P1395R0 Modules: Partitions Are Not a Panacea Nathan Sidwell 2019-01-18 2019-01 Evolution
P1401R0 Narrowing contextual conversions to bool Andrzej Krzemienski 2019-01-15 2019-01 Evolution
P1402R0 std::cstring_view - a C compatible std::string_view adapter Andrew Tomazos 2019-01-10 2019-01 Library Evolution
P1403R0 Experience Report: Implementing a Coroutines TS Frontend to an Existing Tasking Library David S. Hollman 2019-01-16 2019-01 SG1, Evolution
P1404R0 bad_alloc is not out-of-memory! Andrzej Krzemienski 2019-01-15 2019-01 Evolution, Library Evolution
P1405R0 C++20 Executors are Resilient to ABI Breakage Jared Hoberock, Chris Kohlhoff 2019-01-21 2019-01 SG1
P1406R0 Add more std::hash specializations Alexander Zaitsev, Antony Polukhin 2018-12-04 2019-01 Library Evolution Incubator, Library Evolution, Library
P1407R0 Tell Programmers About Signed Integer Overflow Behavior Scott Schurr 2019-01-17 2019-01 SG12
P1408R0 Abandon observer_ptr Bjarne Stroustrup 2018-01-04 2019-01 Evolution, Library Evolution
P1410R0 Remove deprecated strstream Peter Sommerlad 2019-01-21 2019-01 Library Evolution, Library
P1411R0 Please reconsider <scope> for C++20 Peter Sommerlad 2019-01-21 2019-01 Library Evolution
P1413R0 A safer interface for std::aligned_storage CJ Johnson 2019-01-17 2019-01 Library Evolution
P1415R0 SG19 Machine Learning Layered List Michael Wong, Vincent Reverdy, Ritwik Dubey, Richard Dosselmann, Eugenio Bargiacchi 2019-01-21 2019-01 SG19
P1416R0 SG19 Linear Algebra for Data Science and Machine Learning Johann Mabille, Matthieu Brucher 2019-01-21 2019-01 SG19
P1417R0 Historical lessons for C++ linear algebra library standardization Mark Hoemmen, Jayesh Badwaik, Matthieu Brucher, Athanasios (Nasos) Iliopoulos, John Michopoulos 2019-01-21 2019-01 SG6
P1419R0 A SFINAE-friendly trait to determine the extent of statically sized containers Corentin Jabot, Casey Carter 2019-01-21 2019-01 Library Evolution
P1421R0 Assigning semantics to different Contract Checking Statements Andrzej Krzemienski 2019-01-18 2019-01 Evolution
P1422R0 SG16: Unicode meeting summaries 2018/10/17 - 2019/01/09 Tom Honermann 2019-01-17 2019-01 SG16
P1423R0 char8_t backward compatibility remediation Tom Honermann 2019-01-20 2019-01 Evolution, Library Evolution
P1424R0 'constexpr' feature macro concerns Antony Polukhin 2018-12-26 2019-01 SG10, Library
P1425R0 Iterators pair constructors for stack and queue Corentin Jabot 2019-01-21 2019-01 Library Evolution
P1426R0 Pull the Plug on Contracts? Nathan Myers 2019-01-18 2019-01 WG21
P1427R0 Concerns about module toolability Peter Bindels, Ben Craig, Steve Downey, Rene Rivera, Tom Honermann, Corentin Jabot, Stephen Kelly 2018-11-20 2019-01 WG21
P1428R0 Subscripts and sizes should be signed Bjarne Stroustrup 2018-01-18 2019-01 Evolution, Library Evolution
P1429R0 Contracts That Work Joshua Berne, John Lakos 2019-01-22 2019-01 Evolution
P1430R0 First-class symmetric coroutines in C++ Mihail Mihaylov, Vassil Vassilev 2019-01-21 2019-01 WG21
P1433R0 Compile Time Regular Expressions Hana Dusíková 2019-01-21 2019-01 SG16, Library Evolution Incubator
P1434R0 Discussing Pointer Provenance Hal Finkel, Jens Gustedt, Martin Uecker 2019-01-21 2019-01 SG12
P1436R0 Executor properties for affinity-based execution Gordon Brown, Ruyman Reyes, Michael Wong, H. Carter Edwards, Thomas Rodgers, Mark Hoemmen 2019-01-21 2019-01 SG1, SG14, Library Evolution
P1439R0 Charset Transcoding, Transformation, and Transliteration Steve Downey 2019-01-21 2019-01 SG16
P1440R0 is_clamped Johel Guerrero 2019-01-19 2019-01 Library Evolution Incubator
P1442R0 A Medley of Networking TS improvements Damian Jarek 2019-01-18 2019-01 Library Evolution
P1443R0 SG14: Low Latency Meeting Minutes 2018/07/11 - 2019/01/09 Michael Wong 2019-01-21 2019-01 SG14
P1444R0 SG19: Machine Learning 2018/12/14 - 2019/01/11 Michael Wong 2019-01-21 2019-01 SG19
P1445R0 Concurrency TS: to update or not update Michael Wong 2019-01-21 2019-01 SG1
P1446R0 Reconsider the Networking TS for inclusion in C++20 Christopher Kohlhoff 2019-01-18 2019-01 WG21
P1447R0 constexpr C++ is not constexpr C Matúš Chochlík, Axel Naumann, and David Sankel 2019-01-21 2019-01 SG7, Evolution, Library Evolution
P1448R0 Simplifying Mixed Contract Modes Nathan Burgers 2019-01-20 2019-01 Evolution
P1449R0 Towards Tree and Graph Data Structures for C++ Vincent Reverdy 2019-01-21 2019-01 SG19
P1450R0 Enriching type modification traits Vincent Reverdy 2019-01-21 2019-01 Library Evolution Incubator
P1452R0 On the non-uniform semantics of return-type-requirements Hubert S.K. Tong 2019-01-21 2019-01 Evolution
P1453R0 Modularizing the Standard Library is a Reorganization Opportunity Bryce Adelstein Lelbach 2019-01-21 2019-01 Library Evolution
P1456R0 Move-only views Casey Carter 2019-01-25 2019-01 Library Evolution
P1457R0 C++ Standard Library Issues to be moved in Kona Marshall Clow 2019-01-21 2019-01 WG21
P1458R0 Mandating the Standard Library: Clause 16 - Language support library Marshall Clow 2019-01-20 2019-01 Library
P1459R0 Mandating the Standard Library: Clause 18 - Diagnostics library Marshall Clow 2019-01-20 2019-01 Library
P1462R0 Mandating the Standard Library: Clause 20 - Strings library Marshall Clow 2019-01-20 2019-01 Library
P1463R0 Mandating the Standard Library: Clause 21 - Containers library Marshall Clow 2019-01-20 2019-01 Library
P1464R0 Mandating the Standard Library: Clause 22 - Iterators library Marshall Clow 2019-01-20 2019-01 Library
P1465R0 Function optimization hint attributes: [[always_inline]], [[never_inline]] David Goldblatt 2019-01-20 2019-01 Evolution
P1466R0 Miscellaneous minor fixes for chrono Howard E. Hinnant 2019-01-21 2019-01 Library
P1467R0 Extended floating-point types Michał Dominiak, David Olsen 2019-01-21 2019-01 SG6, Evolution, Library Evolution
P1468R0 Fixed-layout floating-point type aliases Michał Dominiak, Boris Fomitchev, Sergei Nikolaev 2019-01-21 2019-01 SG6, Evolution, Library Evolution
P1469R0 Disallow _ Usage in C++20 for Pattern Matching in C++23 Sergei Murzin, Michael Park, David Sankel, Dan Sarginson 2019-01-21 2019-01 Evolution
P1470R0 Against a standard concurrent hashmap David Goldblatt 2018-01-20 2019-01 SG1
P1471R0 The trouble with coroutine_traits Christopher Kohlhoff 2019-01-20 2019-01 Evolution
P1472R0 SG5: Transactional Memory (TM) Meeting Minutes (June 2018 - January 2019) Hans Boehm 2019-01-18 2019-01 SG5
P1473R0 Shadow namespaces Casey Carter 2019-01-21 2019-01 Library Evolution
P1474R0 Helpful pointers for ContiguousIterator Casey Carter 2019-01-21 2019-01 Library Evolution
P1477R0 Coroutines TS Simplifications Lewis Baker 2019-01-20 2019-01 Evolution
P1479R0 ostringstream wrapper Robert Kawulak 2019-01-21 2019-01 Library Evolution Incubator
P1481R0 constexpr structured bindings Nicolas Lesser 2019-01-21 2019-01 Evolution

2019-01 pre-Kona mailing available (part 1 of 2)

The full 2019-01 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
N4795 PL22.16/WG21 Draft agenda: 18-23 Febuary 2019, Kona, HI, USA John Spicer 2019-01-04 2019-01   WG21  
N4796 Working Draft, C++ Extensions for Parallelism Version 2 Jared Hoberock 2019-01-21 2019-01 N4793 WG21  
N4797 Parallelism TS Editor’s Report, pre-Kona mailing Jared Hoberock 2019-01-21 2019-01   WG21  
N4798 WG21 telecon meeting: Pre-Kona Herb Sutter 2019-01-19 2019-01   WG21  
N4799 Editors' Report - Programming Languages - C++ Richard Smith 2019-01-21 2019-01   WG21  
N4800 Working Draft, Standard for Programming Language C++ Richard Smith 2019-01-21 2019-01 N4791 WG21  
P0009R9 mdspan: A Non-Owning Multidimensional Array Reference H. Carter Edwards, Bryce Adelstein Lelbach, Daniel Sunderland, David Hollman, Christian Trott, Mauro Bianco, Ben Sander, Athanasios Iliopoulos, John Michopoulos, Mark Hoemmen 2019-01-20 2019-01 P0009R8 Library  
P0037R6 Fixed-Point Real Numbers John McFarlane 2019-01-21 2019-01 P0037R5 SG6, SG14, Library Evolution  
P0228R3 unique_function: a move-only std::function Ryan McDougall, Matt Calabrese 2019-01-09 2019-01 P0228R2 Library Evolution  
P0260R3 C++ Concurrent Queues Lawrence Crowl, Chris Mysen 2019-01-20 2019-01 P0260R2 Library Evolution Incubator  
P0330R4 Literal Suffixes for ptrdiff_t and size_t JeanHeyd Meneide, Rein Halbersma 2019-01-21 2019-01 P0330R3 Evolution, Core  
P0408R6 Efficient Access to basic_stringbuf’s Buffer Peter Sommerlad 2019-01-21 2019-01 P0408R5 Library Evolution, Library  
P0429R6 A Standard flatmap Zach Laine 2019-01-21 2019-01 P0429R5 Library  
P0443R10 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, H. Carter Edwards, Gordon Brown, David Hollman 2019-01-21 2019-01 P0443R9 SG1, Library Evolution  
P0448R2 A strstream replacement using span<charT> as buffer Peter Sommerlad 2019-01-21 2019-01 P0448R1 Library Evolution, Library  
P0533R4 constexpr for <cmath> and <cstdlib> Edward J. Rosten, Oliver J. Rosten 2019-01-07 2019-01 P0533R3 Library  
P0549R5 Adjuncts to std::hash Walter E. Brown 2019-01-20 2019-01 P0549R4 Library  
P0593R3 Implicit creation of objects for low-level object manipulation Richard Smith 2019-01-18 2019-01 P0593R2 Evolution  
P0631R5 Math Constants Lev Minkovsky, John McFarlane 2019-01-12 2019-01 P0631R4 Library  
P0645R5 Text Formatting Victor Zverovich 2019-01-20 2019-01 P0645R4 Library Evolution, Library  
P0652R2 Concurrent associative data structure with unsynchronized view Sergey Murylev, Anton Malakhov, Antony Polukhin 2019-01-15 2019-01 P0652R1 SG1  
P0660R8 Stop Tokens and a Joining Thread Nicolai Josuttis, Lewis Baker, Billy O’Neal, Herb Sutter, Anthony Williams 2019-01-20 2019-01 P0660R7 SG1, Library Evolution, Library  
P0664R7 C++ Coroutine TS Issues Gor Nishanov 2019-01-16 2019-01 P0664R6 Evolution, Core, Library  
P0784R5 More constexpr containers Peter Dimov, Louis Dionne, Nina Ranns, Richard Smith, Daveed Vandevoorde 2019-01-21 2019-01 P0784R4 Evolution, Core, Library Evolution  
P0790R2 Effect of operator<=> on the C++ Standard Library David Stone 2019-01-21 2019-01 P0790R1 Library Evolution, Library  
P0798R3 Monadic operations for std::optional Simon Brand 2019-01-21 2019-01 P0798R2 SG14, Library Evolution  
P0829R4 Freestanding Proposal Ben Craig 2019-01-12 2019-01 P0829R3 SG14, Library Evolution  
P0843R3 static_vector Gonzalo Brito Gadeschi 2019-01-20 2019-01 P0843R2 Library Evolution  
P0847R2 Deducing this Gašper Ažman, Simon Brand, Ben Deane, Barry Revzin 2019-01-15 2019-01 P0847R1 SG7, Evolution  
P0848R1 Conditionally Trivial Special Member Functions Barry Revzin, Casey Carter 2019-01-18 2019-01 P0848R0 Core  
P0876R5 fiber_context - fibers without scheduler Oliver Kowalke, Nat Goodspeed 2019-01-19 2019-01 P0876R4 SG1  
P0880R2 Numbers interaction Igor Klevanets, Antony Polukhin 2019-01-15 2019-01 P0880R1 SG6, Library Evolution  
P0881R3 A Proposal to add stacktrace library Alexey Gorgurov, Antony Polukhin 2019-01-04 2019-01 P0881R2 Core, Library  
P0886R0 Response to “Fibers under the magnifying glass” Nat Goodspeed, Oliver Kowalke 2019-01-06 2019-01   SG1, Evolution  
P0889R1 Ultimate copy elision Antony Polukhin 2019-01-09 2019-01 P0889R0 Evolution, Core  
P0891R2 Make strong_order a Customization Point! Gašper Ažman, Jeff Snyder 2019-01-20 2019-01 P0891R1 Library Evolution, Library  
P0894R1 realloc() for C++ Victor Dyachenko 2019-01-18 2019-01 P0894R0 Library Evolution  
P0901R3 Size feedback in operator new Andrew Hunter, Chris Kennelly 2019-01-21 2019-01 P0901R2 Evolution  
P0912R4 Merge Coroutines TS into C++20 working draft Gor Nishanov 2019-01-16 2019-01 P0912R3 WG21  
P0920R1 Precalculated hash values in lookup Mateusz Pusz 2019-01-07 2019-01 P0920R0 Library  
P0939R2 Direction for ISO C++ H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, M. Wong 2019-01-21 2019-01 P0939R1 WG21  
P0940R2 Concurrency TS is growing: Concurrent Utilities and Data Structures Michael Wong, Olivier Giroux 2019-01-21 2019-01 P0940R1 SG1  
P0953R2 constexpr reflexpr Matúš Chochlík, Axel Naumann, and David Sankel 2019-01-19 2019-01 P0953R1 SG7  
P1019R2 Integrating Executors with Parallel Algorithms Jared Hoberock 2019-01-21 2019-01 P1019R1 SG1, Library Evolution  
P1021R3 Filling holes in Class Template Argument Deduction Mike Spertus, Timur Doumler, Richard Smith 2018-11-26 2019-01 P1021R2 Core  
P1024R2 Usability Enhancements for std::span Tristan Brindle 2019-01-20 2019-01 P1024R1 Library  
P1035R4 Input range adaptors Christopher Di Bella, Casey Carter, Corentin Jabot 2018-10-08 2019-01 P1035R3 Library Evolution  
P1040R4 std::embed JeanHeyd Meneide 2019-01-21 2019-01 P1040R3 Evolution, Library Evolution  
P1041R3 Make char16_t/char32_t string literals be UTF-16/32 R. Martinho Fernandes 2019-01-21 2019-01 P1041R1 Evolution  
P1063R2 Core Coroutines Geoff Romer, James Dennett, Chandler Carruth 2019-01-16 2019-01 P1063R1 WG21  
P1072R3 basic_string::resize_default_init Chris Kennelly, Mark Zeren 2019-01-21 2019-01 P1072R2 SG16, Library Evolution, Library  
P1097R2 Named character escapes R. Martinho Fernandes 2019-01-21 2019-01 P1097R1 SG16, Evolution, Core  
P1099R3 Using Enum Gašper Ažman, Jonathan Müller 2019-01-20 2019-01 P1099R2 Evolution, Core  
P1121R1 Hazard Pointers: Proposed Interface and Wording for Concurrency TS 2 Maged M. Michael, Michael Wong, Paul McKenney, Geoffrey Romer, Andrew Hunter, Arthur O'Dwyer, David S. Hollman, JF Bastien, Hans Boehm, David Goldblatt, Frank Birbacher, Mathias Stearn 2019-01-20 2019-01 P1121R0 Library  
P1130R1 Module Resource Requirement Propagation JeanHeyd Meneide 2019-01-21 2019-01 P1130R0 Evolution  
P1132R3 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide, Todor Buyukliev, Isabella Muerte 2019-01-21 2019-01 P1132R2 Library Evolution, Library  
P1135R2 The C++20 Synchronization Library Bryce Adelstein Lelbach, Olivier Giroux, JF Bastien, Detlef Vollmann 2019-01-15 2019-01 P1135R1 SG1, Library Evolution, Library  
P1135R3 The C++20 Synchronization Library Bryce Adelstein Lelbach, Olivier Giroux, JF Bastien, Detlef Vollmann 2019-01-21 2019-01 P1135R2 Library  
P1139R0 Address wording issues related to ISO 10646 R. Martinho Fernandes 2019-01-21 2019-01   SG16, Core  
P1139R1 Address wording issues related to ISO 10646 R. Martinho Fernandes 2019-01-22 2019-01 P1139R0 SG16, Core  
P1143R1 Adding the constinit keyword Eric Fiselier 2019-01-21 2019-01   P1143R0 Evolution  
P1144R2 Object relocation in terms of move plus destroy Arthur O'Dwyer 2019-01-18 2019-01 P1144R1 Evolution, Library Evolution  
P1152R1 Deprecating volatile JF Bastien 2019-01-20 2019-01 P1152R0 SG1, Evolution, Library Evolution  
P1154R1 Type traits for structural comparison Arthur O'Dwyer, Jeff Snyder 2019-01-19 2019-01 P1154R0 Library Evolution  
P1155R2 More implicit moves Arthur O'Dwyer, David Stone 2019-01-19 2019-01 P1155R1 Evolution  
P1161R2 Deprecate uses of the comma operator in subscripting expressions Corentin Jabot 2019-01-21 2019-01 P1161R1 Core  
P1166R0 What do we need from a linear algebra library? Guy Davidson, Bob Steagall 2019-01-12 2019-01   SG6, SG14, Library Evolution Incubator, Library Evolution  
P1185R1 <=> != == Barry Revzin 2019-01-22 2019-01 P1185R0 Evolution, Core  
P1186R1 When do you actually use <=>? Barry Revzin 2019-01-22 2019-01 P1186R0 Evolution  
P1188R0 Library utilities for <=> Barry Revzin 2019-01-22 2019-01   Library Evolution  
P1202R1 Asymmetric Fences David Goldblatt 2019-01-20 2019-01 P1202R0 SG1  
P1206R1 ranges::to: A function to convert any range to a container Corentin Jabot, Eric Niebler, Casey Carter 2019-01-21 2019-01 P1206R0 Library Evolution  
P1207R1 Movability of Single-pass Iterators Corentin Jabot 2019-01-21 2019-01 P1207R0 Library Evolution  
P1208R3 Source-Code Information Capture Robert Douglas, Corentin Jabot 2018-11-08 2019-01 P1208R2 Library  
P1221R1 Parametric Expressions Jason Rice 2018-10-03 2019-01 P1221R0 Evolution  
P1222R1 A Standard flatset Zach Laine 2019-01-21 2019-01 P1222R0 Library Evolution, Library  
P1223R1 find_backward Zach Laine 2018-10-02 2019-01 P1223R0 Library Evolution  
P1227R1 Signed ssize() functions, unsigned size() functions Jorg Brown 2019-01-21 2019-01 P1227R0 Library Evolution  
P1228R1 A proposal to add an efficient string concatenation routine to the Standard Library Jorg Brown 2019-01-21 2019-01 P1228R0 Library Evolution  
P1243R1 Rangify New Algorithms Dan Raviv 2019-01-16 2019-01 P1243R0 Library  

Variant Visitation V2—Michael Park

Optimising accesses.

Variant Visitation V2

by Michael Park

From the article:

In 2015, I wrote an article titled Variant Visitation which described an implementation strategy for std::visit. The approach involved a matrix of function pointers, and many have raised concerns regarding poor code-gen caused by optimization limitations of function pointers on some compilers.

This post describes the switch-based approach implemented in mpark/variant, and its benchmark results...