Post-Bristol standards papers mailing available

The official post-meeting standards papers mailing is now available. It includes papers adopted at the meeting, updated papers, and updated issues lists.

Please direct discussion to the public std-proposals forum.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
SD-1 2013 PL22.16/WG21 document list Clark Nelson 2013-05-07 2013-05      
SD-2 ISO WG21 and INCITS PL22.16 membership list Clark Nelson 2013-05-06 2013-05      
N3621 Minutes, WG21 Teleconference 2013-03-29 Kyle Kloepper 2013-03-29 2013-05      
N3622 Minutes: WG21 Meeting No. 55, 15-20 April 2013 - Bristol, UK Kyle Kloepper 2013-05-03 2013-05      
N3623 Minutes: PL22.16 Meeting No. 60, 15-20 April 2013 - Bristol, UK Kyle Kloepper 2013-05-03 2013-05      
N3624 Core Issue 1512: Pointer comparison vs qualification conversions (revision 3) Jens Maurer 2013-04-15 2013-05 N3498 Core Adopted 2013-04
N3625 A URI Library for C++ G. Matthews, D. Berris 2013-04-30 2013-05 N3507 Networking  
N3626 Floating-Point Typedefs Having Specified Widths P. Bristow, C. Kormanyos, J. Maddock 2013-04-05 2013-05   Numerics  
N3627 Relaxed switch statement Zhihao Yuan 2013-02-07 2013-05   Evolution  
N3628 C and C++ Compatibility Bjarne Stroustrup 2013-04-08 2013-05      
N3629 Simplifying C++0x Concepts Doug Gregor 2013-04-09 2013-05   Concepts  
N3630 async, ~future, and ~thread (Revision 1) Herb Sutter 2013-04-12 2013-05 N3451 Concurrency Revised N3636, N3637
N3631 C11: The New C Standard Thomas Plum   2013-05      
N3632 Additional std::async Launch Policies Peter Dimov 2013-04-11 2013-05   Concurrency  
N3633 What can signal handlers do? (CWG 1441) Hans Boehm 2013-4-25 2013-05 N3618 Concurrency  
N3634 Improvements to std::future<T> and Related APIs N. Gustafsson, A. Laksberg, H. Sutter, S. Mithani 2013-05-02 2013-05 N3558 Concurrency  
N3635 Towards restrict-like semantics for C++ M. Wong, R. Silvera, R. Mak, C. Cambly, et al. 2013-04-29 2013-05   Evolution  
N3636 ~thread should join Herb Sutter 2013-04-17 2013-05 N3630 Concurrency  
N3637 async and ~future (Revision 3) Herb Sutter 2013-04-17 2013-05 N3630 Concurrency  
N3638 Return type deduction for normal functions Jason Merrill 2013-04-17 2013-05 N3582 Core Adopted 2013-04
N3639 Runtime-sized arrays with automatic storage duration (revision 5) Jens Maurer 2013-04-16 2013-05 N3497 Core Adopted 2013-04
N3640 Extending shared_ptr to Support Arrays Peter Dimov 2013-04-15 2013-05   Library  
N3641 Extending make_shared to Support Arrays Peter Dimov 2013-05-02 2013-05   Library  
N3642 User-defined Literals for Standard Library Types (part 1 - version 4) Peter Sommerlad 2013-04-18 2013-05 N3531 Library Adopted 2013-04
N3643 Range Adaptor for Selecting from Pair or Tuple Alan Talbot 2013-04-16 2013-05 N3585 Ranges  
N3644 Null Forward Iterators Alan Talbot 2013-04-18 2013-05 N3585 Library Adopted 2013-04
N3645 Splicing Maps and Sets (Revision 1) A. Talbot, H. Hinnant, J. Dennett, J. Wakely 2013-05-04 2013-05 N3586 Library  
N3646 Network byte order conversion Robert Pratte 2013-04-16 2013-05 N3620 Networking  
N3647 Minutes: PL22.16 Meeting No. 59, 15-19 October 2012 Portland, Oregon, USA Kyle Kloepper 2013-04-15 2013-05 N3455    
N3648 Wording Changes for Generalized Lambda-capture D. Vandevoorde, V. Voutilainen 2013-04-17 2013-05 N3610 Evolution Adopted 2013-04
N3649 Generic (Polymorphic) Lambda Expressions (Revision 3) F. Vali, H. Sutter, D. Abrahams 2013-04-19 2013-05 N3559 Evolution Adopted 2013-04
N3650 Resumable Functions N. Gustafsson, D. Brewis, H. Sutter, S. Mithani 2013-05-02 2013-05 N3564 Concurrency  
N3651 Variable Templates (Revision 1) Gabriel Dos Reis 2013-04-19 2013-05 N3615 Evolution Adopted 2013-04
N3652 Relaxing constraints on constexpr functions / constexpr member functions and implicit const Richard Smith 2013-04-18 2013-05 N3597, N3598 Evolution Adopted 2013-04
N3653 Member initializers and aggregates V. Voutilainen, R. Smith 2013-04-17 2013-05 N3605 Evolution Adopted 2013-04
N3654 Quoted Strings Library Proposal (Revision 2) Beman Dawes 2013-04-19 2013-05 N3570 Library Adopted 2013-04
N3655 TransformationTraits Redux, v2 Walter E. Brown 2013-04-18 2013-05 N3546 Library Adopted 2013-04
N3656 make_unique (Revision 1) Stephan T. Lavavej 2013-04-18 2013-05 N3588 Library Adopted 2013-04
N3657 Adding heterogeneous comparison lookup to associative containers (rev 4) J. Wakely, S. Lavavej, J. Muñoz 2013-03-19 2013-05 N3465 Library Adopted 2013-04
N3658 Compile-time integer sequences Jonathan Wakely 2013-04-18 2013-05 N3493 Library Adopted 2013-04
N3659 Shared locking in C++ H. Hinnant, D. Vollmann, H. Boehm 2013-04-19 2013-05 N3568 Concurrency  
N3660 User-defined Literals for std::complex, part 2 of UDL for Standard Library Types (version 4) Peter Sommerlad 2013-04-19 2013-05 N3531 Library  
N3661 Digit Separators Lawrence Crowl 2013-04-19 2013-05 N3499 Evolution  
N3662 C++ Dynamic Arrays L. Crowl, M. Austern 2013-04-19 2013-05 N3532 Library Adopted 2013-04
N3663 C++ Sized Deallocation Lawrence Crowl 2013-04-30 2013-05 N3536 Core  
N3664 Clarifying Memory Allocation L. Crowl, C. Carruth, R. Smith 2013-04-19 2013-05 N3537 Core Adopted 2013-04
N3665 Uninterleaved String Output Streaming L. Crowl 2013-04-19 2013-05   Library  
N3666 C++ Latches and Barriers Alasdair Mackintosh 2013-04-18 2013-05 N3600 Concurrency  
N3667 Drafting for Core 1402 Jason Merrill 2012-04-16 2013-05   Core Adopted 2013-04
N3668 exchange() utility function, revision 3 Jeffrey Yasskin 2013-04-19 2013-05 N3608 Library Adopted 2013-04
N3669 Fixing constexpr member functions without const Nicolai Josuttis 2013-04-19 2013-05   Library Adopted 2013-04
N3670 Wording for Addressing Tuples by Type: Revision 2 Mike Spertus 2013-04-19 2013-05 N3584 Library Adopted 2013-04
N3671 Making non-modifying sequence operations more robust: Revision 2 M. Spertus, A. Pall 2013-04-19 2013-05 N3607 Library Adopted 2013-04
N3672 A proposal to add a utility class to represent optional objects (Revision 4) F. Cacciola, A. Krzemieński 2013-04-19 2013-05 N3527 Library Adopted 2013-04
N3673 C++ Library Working Group Ready Issues Bristol 2013 Daniel Krügler 2013-04-19 2013-05 N3522 Library Adopted 2013-04
N3674 C++ Standard Core Language Active Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3539 Core  
N3675 C++ Standard Core Language Defect Reports and Accepted Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3540 Core  
N3676 C++ Standard Core Language Closed Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3541 Core  
N3677 A Proposal to Add additional RAII Wrappers to the Standard Library Andrew L. Sandoval 2013-04-26 2013-05   Library  
N3678 C++ Stream Guards Lawrence Crowl 2013-04-30 2013-05   Concurrency  
N3679 Async() future destructors must wait Hans-J. Boehm 2013-5-05 2013-05   Concurrency  
N3680 Improving pair and tuple Daniel Krügler 2013-04-14 2013-05   Library  
N3681 Auto and braced-init lists Ville Voutilainen 2013-05-02 2013-05   Evolution  
N3682 C++ Standard Evolution Active Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05 N3566 Evolution  
N3683 C++ Standard Evolution Completed Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05   Evolution  
N3684 C++ Standard Evolution Closed Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05 N3567 Evolution  
N3685 string_view: a non-owning reference to a string, revision 4 Jeffrey Yasskin 2013-05-03 2013-05 N3609 Library  
N3686 Traversable arguments for container constructors and methods, wording revision 3 Jeffrey Yasskin 2013-05-03 2013-05 N3513 Ranges  
N3687 C++ Standard Library Active Issues List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3522 Library  
N3688 C++ Standard Library Defect Report List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3523 Library  
N3689 C++ Standard Library Closed Issues List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3524 Library  

Quick Q: How can I make my type construct from { 1, 2, 3, 4 } like vector? -- StackOverflow

Quick A: Write a constructor that takes a std::initializer_list.

See the link for the nice longer answer:

how to implement an initializer list for user defined type? (analogus to std::vector initializer list)

std::vector can be initialized as

 

std::vector<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
ref

Now if want to achieve the similar functionality for one of my types how do I go about doing it? How should I implement the constructor for this functionality?

Quick Q: How does return by rvalue reference work? -- StackOverflow

Quick A: So easily that it's automatic... just return a value, not a reference.

How does return by rvalue reference work?

Just when I thought I kind of understand rvalue reference, I ran into this problem. The code is probably unnecessarily long, but the idea is quite simple. There is a main() function, and returnRValueRef() function.

[...]

AClass && returnRValueRef() {
  AClass a1(4);
  return move(a1);
}

int main() {
  AClass a;
  a = returnRValueRef();
}

Quick Q: What's the difference between vector<T...> and vector<T>...? -- StackOverflow

SO's version of the question added one layer of wrapping:

What's the difference between doing vector<vector<T...>> and vector<vector<T>...>

I saw code like this earlier:

 

using A = std::vector<std::vector<T>...>

where T is a variadic list of template arguments. I wanted to know what the difference is between putting the parameter pack at the end of the last angle bracket and the first. For example:

using B = std::vector<std::vector<T...>>;

Both of these two compile fine but I don't know what the difference is.

Can someone explain? Thanks.

Introduction To the C++11 Feature: Delegating Constructors -- sumi_cj

Head on over to the C/C++ Cafe for:

Introduction to the C++11 feature: delegating constructors

by sumi_cj

Excerpt:

In C++98, if a class has multiple constructors, these constructors usually perform identical initialization steps before executing individual operations. In the worst scenario, the identical initialization steps are copied and pasted in every constructor. See the following example: ...

Trip Report: ACCU 2013 and the C++ Standards Meeting -- Anthony Williams

Anthony Williams just posted another nice trip report on the recent standards meeting in Bristol, as well as a few words on the ACCU conference held back-to-back with the ISO meeting:

ACCU 2013 and the C++ Standards Meeting

by Anthony Williams

 

This year's ACCU conference was at a new venue: the Marriott hotel in Bristol. This is a bit closer to home for me than the previous venue in Oxford, which made the trip there and back more comfortable. As ever, the conference itself was enjoyable, educational and exhausting in equal measure.

 

This year was also BSI's turn to host the Spring ISO C++ committee meeting, which was conveniently arranged to be the week following ACCU, in the same hotel. Having not attended a meeting since the last time the committee met in the UK, I was glad to be able to attend this too. ...

Introduction To the C++11 Feature: Extended friend Declaration -- FangLu

Head on over to the C/C++ Cafe for:

Introduction to the C++11 feature: extended friend declaration

by FangLu

Excerpt:

The extended friend declaration feature is newly introduced in the C++11 standard. In this article, I will introduce this feature and provide some examples on how to use this feature.

 

Firstly, let's see why this feature is added into C++11. ...

 

GotW #1: Variable Initialization—or Is It? -- Herb Sutter

Herb Sutter is resuming his Guru of the Week series of problem-and-solution articles about coding in C++, with the intent to gradually update the 88 existing issues and write a few more along the way.

The first problem was posted today:

GotW #1: Variable Initialization -- or Is It? (3/10)

by Herb Sutter

This first problem highlights the importance of understanding what you write. Here we have a few simple lines of code — most of which mean something different from all the others, even though the syntax varies only slightly.

The solution is coming "soon"...

Clang/LLVM Conference videos and slides are now available

The recent 2013 European Clang/LLVM developer meeting talk videos and/or slides are now available here.

Here are a few of the talks of interest to C++ developers. All have videos available except the last. Check out the page for details and a full talk list.

Keynotes

Optimization in LLVM - Numbers, A Case Study, and Looking Forward
Chandler Carruth (Google)

Talks

clang-format - Automatic formatting for C++
Daniel Jasper (Google)

Performing Source-to-Source Transformations with Clang
Olaf Krzikalla (TU Dresden)

Run-time tracking of uninitialized data with MemorySanitizer
Evgeniy Stepanov (Google)

LLVM on IBM POWER processors: a progress report
Ulrich Weigand (IBM)

Tutorials

How to implement an LLVM Assembler
Simon Cook (Embecosm)

The Clang AST (slides only)
Manuel Klimek (Google)

For more talks, and video/slide links, head over to the site.