Standardization

Modules: Update on work in progress -- Doug Gregor

[Updated to add video link]

Earlier this month, Doug Gregor gave a presentation on Modules at the November 2012 LLVM Developers' Meeting. Doug is lead Clang developer at Apple, chairs the WG21 Study Group on Modules (SG2), and in this talk reports his design goals and partial progress to date on designing and implementing a module system for C++. This talk is an extended version of the presentation Doug made at the Feb 2012 ISO C++ meeting in Kona.

The talk slides and video recording is available via the 2012 DevMeeting page.

Standardization note: SG2 was formed in February and has been relatively quiet as a handful of experts (notably Doug with Clang) make further progress on proof-of-concept designs and implementations. As this prototyping work coalesces, SG2 is expected to become active early in the new year.

Modules (MP4 video) (PDF slides)

Doug Gregor -- Apple

The C preprocessor has long been a source of problems for programmers and tools alike.

Programmers must contend with widespread macro pollution and #include-ordering problems due to ill-behaved headers. Developers habitually employ various preprocessor workarounds, such as LONG_MACRO_PREFIXES, #include guards, and the occasional #undef of a library macro to mitigate these problems.

Tools, on the other hand, must cope with the inherent scalability problems associated with parsing the same headers repeatedly, because each different preprocessing context could effect how a header is interpreted -- even though the programmer rarely wants it.

Modules seeks to solve this problem by isolating the interface of a particular library and compiling it (once) into an efficient, serialized representation that can be efficiently imported whenever that library is used, improving both the programmer's experience and the scalability of the compilation process.

Continue reading...

SG4 (Networking) wiki online

Study Group 4 (SG4), which focuses on Networking topics, now has a wiki on GitHub for those who want to follow its work and near-term deliverables.

The link is also available via SG4's entry in the SG list on The Committee page.

Please contact the SG4 chair, Kyle Kloepper, for further information.

Post-Portland mailing available

The post-Portland mailing is now available. It includes meeting minutes, updated issues lists, and the papers adopted at this meeting (among other papers).

Of particular note is the Evolution Working Group paper status, now present again and maintained by Ville Voutilainen. Thanks, Ville!

 

WG21 Number PL22.16 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
SD-1 12-0000R3 2012 PL22.16/WG21 document list Clark Nelson 2012-11-03 2012-11      
SD-2 12-0001R2 ISO WG21 and INCITS PL22.16 membership list Clark Nelson 2012-09-12 2012-09      
SD-3   SC22/WG21 (C++) Study Group Organizational Information Herb Sutter 2012-10-04 2012-09      
SD-5   WG21 and PL22.16 (C++) Joint Mailing and Meeting Information Herb Sutter 2010-09-20 2012-09      
N3453 12-0143 Minutes, WG21 Teleconference 2012-10-5 Kyle Kloepper 2012-10-5 2012-11      
N3454 12-0144 Minutes, WG21 Meeting No. 54, 15-19 October 2012 Portland, Oregon, USA Kyle Kloepper 2012-11-3 2012-11      
N3455 12-0145 Minutes, PL22.16 Meeting No. 59, 15-19 October 2012 Portland, Oregon, USA Kyle Kloepper 2012-11-3 2012-11      
N3456 12-0146 Range arguments for container constructors and methods, with wording Jeffrey Yasskin 2012-11-03 2012-11   Library  
N3457 12-0147 Algorithm std::iota and its modifications. Vladimir Grigoriev 2012-10-30 2012-11   Library  
N3458 12-0148 Simple Database Integration in C++11 Thomas Neumann 2012-10-22 2012-11   Library  
N3459 12-0149 Comparison of Two Database Access Methodologies Bill Seymour 2012-10-13 2012-11   Library  
N3462 12-0152 std::result_of and SFINAE E. Niebler, D. Walker, J. de Guzman 2012-10-18 2012-11 N3436= 12-0126 Library Adopted 2012-10
N3463 12-0153 Portable Program Source Files Beman Dawes 2012-11-02 2012-11   Evolution  
N3465 12-0155 Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 2) Joaquín Mª López Muñoz 2012-10-29 2012-11 N2882= 09-0072 Library  
N3466 12-0156 More Perfect Forwarding Mike Spertus 2012-11-03 2012-11   Evolution  
N3467 12-0157 Runtime-sized arrays with automatic storage duration (revision 3) Jens Maurer 2012-10-29 2012-11 N3412= 12-0102 Core  
N3468 12-0158 User-defined Literals for Standard Library Types (version 2) Peter Sommerlad 2012-10-24 2012-11 N3402= 12-0092 Evolution  
N3469 12-0159 Constexpr Library Additions: chrono, v3 B. Kosnik, D. Krügler 2012-10-18 2012-11 N3303= 11-0073 Library Adopted 2012-10
N3470 12-0160 Constexpr Library Additions: containers, v2 B. Kosnik, D. Krügler 2012-10-18 2012-11 N3304= 11-0074 Library Adopted 2012-10
N3471 12-0161 Constexpr Library Additions: utilities, v3 B. Kosnik, D. Krügler 2012-10-18 2012-11 N3305= 11-0075 Library Adopted 2012-10
N3472 12-0162 Binary Literals in the C++ Core Language James Dennett 2012-10-19 2012-11   Core  
N3473 12-0163 C++ Standard Library Active Issues List (Revision R80) Alisdair Meredith 2012-11-03 2012-11 N3438= 12-0128 Library  
N3474 12-0164 C++ Standard Library Defect Report List (Revision R80) Alisdair Meredith 2012-11-03 2012-11 N3439= 12-0129 Library  
N3475 12-0165 C++ Standard Library Closed Issues List (Revision R80) Alisdair Meredith 2012-11-03 2012-11 N3440= 12-0130 Library  
N3477 12-0167 C++ Internet Protocol Classes A. Fabijanic, G. Obiltschnig 2012-10-28 2012-11   Networking  
N3478 12-0168 Core Issue 1512: Pointer comparison vs qualification conversions Jens Maurer 2012-10-29 2012-11   Core  
N3479 12-0169 Priority Queue, Queue and Stack: Changes and Additions G. Powell, T. Blechmann 2012-11-02 2012-11 N3443= 12-0133 Library  
N3480 12-0170 C++ Standard Core Language Active Issues, Revision 81 William M. Miller 2012-11-03 2012-11 N3382= 12-0072 Core  
N3481 12-0171 C++ Standard Core Language Defect Reports and Accepted Issues, Revision 81 William M. Miller 2012-11-03 2012-11 N3383= 12-0073 Core  
N3482 12-0172 C++ Standard Core Language Closed Issues, Revision 81 William M. Miller 2012-11-03 2012-11 N3384= 12-0074 Core  
N3484 12-0174 A URI Library for C++ G. Matthews, D. Berris 2012-11-01 2012-11 N3420= 12-0110 Networking  
N3485 12-0175 Working Draft, Standard for Programming Language C++ Stefanus Du Toit 2012-11-02 2012-11 N3376= 12-0066    
N3486 12-0176 C++ Editor's Report, October 2012 Stefanus Du Toit 2012-11-02 2012-11      
N3487 12-0177 TLS and Parallelism Pablo Halpern 2012-05-08 2012-11   Concurrency  
N3488 12-0178 Evolution Working Group paper status Ville Voutilainen 2012-11-02 2012-11   Evolution  
N3489 12-0179 A Rational Number Library for C++ Bill Seymour 2012-10-13 2012-11 N3414= 12-0104 Numerics  
N3490 12-0180 ADL Control for C++ Dave Abrahams 2012-10-31 2012-11   Evolution  
N3491 12-0181 Minutes: SG4 Networking, October 2012 Alex Fabijanic 2012-11-01 2012-11      
N3492 12-0182 Use Cases for Compile-Time Reflection (Rev. 2) Mike Spertus 2012-11-03 2012-11 N3403= 12-0093 Evolution  

Poll: Portland attendees and subgroups

If you are planning to attend the Portland meeting, please fill out this brief poll to help us allocate rooms and plan for the week. Thanks!

 

 

Unifying Generic Functions and Function Objects -- Dave Abrahams

From Dave Abrahams:

Unifying Generic Functions and Function Objects

I just got finished collaborating on a proposal with Faisal Vali and Herb Sutter to include generic lambdas and pythy functions in the core language. After the upcoming Portland committee meeting, we should have a good sense of how much appetite there is on the committee for including these features in C++.

While we were writing that paper, we got some of our most helpful comments and insights from Mathias Gaunard. It was a pivotal moment when Mathias reminded us that we could create operator overload sets explicitly with inheritance and using declarations, and then used it to demonstrate "overloaded lambda expressions..."

[more]

 

Fall WG21 meeting: Register by Fri Sep 14 (this week)

Via Clark Nelson:

Final reminder: The registration page for the Portland meeting (Oct 15-19, 2012) closes after this Friday, September 14. If you're planning to come and haven't made your reservation yet, don't delay to get the discount room rate.

Registration page for Portland meeting

A few people have asked about reserving a room at the DoubleTree outside the range of dates acceptable to the web site. Just reserve what you can, and make your request for additional days in the "Special Requirements" box. Be advised that the DoubleTree is already all booked up for both Saturday nights, October 13 and 20.

More information about the Portland meeting:

Where To Get the Standard (and Drafts)

I'm not calling out all the changes we're making as we gradually add information to the site, but here's a new page many people will find useful...

The Standard: "Want to read the standard, or working drafts of the standard? You have several options, most of them free." This page summarizes:

  • where to get the current standard (official for $30, or almost-official for free);
  • where to get working drafts (prebuilt or at GitHub); and
  • what to expect, that the standard is a treaty, not a tutorial.

Enjoy!