N4055: Ruminations on (node-based) containers and noexcept -- Ville Voutilainen

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4055

Date: 2014-07-02

Ruminations on (node-based) containers and noexcept

by Ville Voutilainen

Excerpt:

There are quite many standard containers that do not have noexcept move constructors required by their synopsis. Implementations can strengthen such a noexcept-specification as per [res.on.exception.handling]/1: "Any of the functions defined in the C ++ standard library can report a failure by throwing an exception of a type described in its Throws: paragraph. An implementation may strengthen the exception-specification for a non-virtual function by adding a non-throwing noexcept-specification."

The issue is that this means that the performance of operations such as vector<T>::push_back becomes dependent on the noexcept-specification of the move constructor of T, and if T has a container member, the noexcept-specification of that container influences the noexcept-specification of the move constructor of T in implementation-specific ways.

This paper explores the reasons of why container move constructors are not noexcept on some implementations. A very good explanation is written below.

This paper also makes some moderate suggestions on what the solution(s) should be.

Nicolai Josuttis proposes some of those moderate suggestions in his paper N4002.

N4113: Reflection Type Traits For Classes, Unions and Enumerations (rev 3) -- A. Tomazos, C. Kaeser

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4113

Date: 2014-07-02

Reflection Type Traits For Classes, Unions and Enumerations (rev 3)

by Andrew Tomazos and Christian Kaeser

Excerpt:

We propose the addition of two new kinds of type trait, and four new type traits to the Metaprogramming and Type Traits Standard Library [meta] for the purposes of lowlevel reflection of classes, unions and enumerations. These primitives are thin wrappers for compiler instrinsics, require zero core language changes, and are designed to be consistent with the existing [meta] library. Pure library authors can then compose the primitives to provide higher-level reflection libraries and facilities.

This proposal revises N4027 in accordance with SG7 feedback from Rapperswil (N4027 revises
N3815 with SG7 feedback from Issequah).

CppCon 2014 Program Available -- Boris Kolpackov

cppcon-2014-program-excerpt.pngThis is the day we've been waiting for: The CppCon 2014 Program is now available, with over 100 one-hour sessions by over 70 speakers.

Early Bird extended to July 9: Because there were many more good talk submissions than could fit into even a full-week six-track conference, the Program Committee needed an extra week to finalize the program selection. Early Bird registration was scheduled to end a week after the program was available to make sure that everyone could see the program in time for Early Bird, so the Early Bird registration has therefore also been extended to match, and will close on July 9. Register today for "the" C++ event of 2014.

Here's the announcement on cppcon.org:

CppCon 2014 Program Available

by Boris Kolpackov

The CppCon 2014 Program is now available with talk titles, abstracts, and speakers. The program contains over 100 one-hour sessions by over 70 speakers including plenary sessions by Scott Meyers and Herb Sutter, as well as the keynotes by C++ creator Bjarne Stroustrup on Keeping Simple Things Simple and Mark Maimone on using C++ on Mars: Incorporating C++ into Mars Rover Flight Software.

The detailed schedule including the exact day and time of each talk will be posted in the coming weeks. We have also extended the Early Bird deadline to July 9 so you have a week to study the program and still get the Early Bird rate.

Finally, we would like to thank the program committee, the speakers on the program, and the many more who proposed talks which we unfortunately just couldn’t squeeze in this year. Thank you for your hard work and enthusiastic support for this year’s program!

N4101-03: Evolution Issues Lists -- Ville Voutilainen

New WG21 papers are available. Copies are linked below, and will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document numbers: N4101-03

Date: 2014-07-01

C++ Standard Evolution Active Issues List (Revision R08)

C++ Standard Evolution Completed Issues List (Revision R08)

C++ Standard Evolution Closed Issues List (Revision R08)

by Ville Voutilainen

Excerpt:

The purpose of this document is to record the status of issues which have come before the Evolution Working Group (EWG) of the INCITS PL22.16 and ISO WG21 C++ Standards Committee. Issues represent potential defects in the ISO/IEC IS 14882:2003(E) document, and proposed extensions to it.

N4087: Multidimensional bounds, index and array_view, revision 3 -- Ɓukasz Mendakiewicz, Herb Sutter

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4087

Date: 2014-07-01

Multidimensional bounds, index and array_view, revision 3

by Łukasz Mendakiewicz and Herb Sutter

Excerpt:

Overview

Revision 3 incorporates the feedback received in Rapperswil from LEWG and some other minor fixes: ...

Acknowledgements

Thanks to Stephan T. Lavavej and the members of LEWG for the suggested improvements. Thanks to the interlocutors at ISO C++ Standard -- Future Proposals forum for the valuable feedback. Thanks to all correspondents expressing feedback in private emails.

POCO Development Release 1.5.3 Available -- Guenter Obiltschnig

A minor update of POCO is available with some new functionality. Release 1.5.3 is planned to be the last in the series of 1.5.x development releases. Next is 1.6.0. and 2.0, with introduction of C++11/14 features.

POCO Development Release 1.5.3 Available

by Guenter Obiltschnig

We're told by the POCO labs that the list of major 1.5.3 additions is as follows:

New Libraries:
  • SevenZip
New Classes:
  • Poco::Clock
  • Poco::Net::NTPClient
New major features:
  • Windows PowerShell build script
New Platforms supported:
  • SmartOS
  • Windows Embedded Compact 2013

JetBrains ReSharper for C++ -- Daria Dovzhikova

For those interested in checking out some new C++ refactoring tools support, if you're working in Visual Studio, news from JetBrains:

ReSharper for C++ EAP Goes On

by Daria Dovzhikova

From the article:

As you might have already heard the Early Access Program for ReSharper with C++ support is in progress.

We prepared a new build and wanted to share a quick update on what new features and options it brings to the table: ...

Quick Q: When are copy and move operations automatically generated? -- StackOverflow

Recently on SO:

What are the rules for automatic generation of move operations?

In C++98, the C++ compiler could automatically generate copy constructor and copy assignment operator via member-wise copy, e.g.

struct X {
    std::string s;
    std::vector<int> v;
    int n;
};

The compiler automatically generates copy constructor and copy assignment operator for X, using member-wise copy.

But how do things change in C++11 with move semantics?

Are the move constructor and move assignment operator automatically generated, like copy constructors and copy assignment operators?

Are there cases in which move operations are not automatically generated?