N3901-2: Minutes (February 2014) WG21 and PL22.16 Meetings -- Kyle Kloepper

New WG21 papers are available. A copy of each 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: N3901-2

Date: 2014-03-03

Minutes (February 2014) WG21 Meeting No. 57

Minutes (February 2014) PL22.16 Meeting No. 62

by Kyle Kloepper

Excerpt:

WG21 motions:

WG21 motion 1: Move to appoint an editing committee composed of Daniel Krügler, Alisdair Meredith, Mike Miller, Bjarne Stroustrup, and Jeffrey Yasskin to approve the correctness of the C++ working paper as modified by the motions approved at this meeting, and to direct the Convener to transmit the approved updated C++ working paper to ITTF for DIS ballot.

Moved by: Hedquist

Seconded by: van Winkel

PL 22.16 unanimous consent 

WG21 unanimous consent

N3955: Group Member Specifiers -- Andrew Tomazos

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: N3955

Date: 2014-02-25

Group Member Specifiers

by Andrew Tomazos

Excerpt:

We propose allowing a space-separated sequence of specifiers to be placed after an access specifier in a class definition. The specifiers so placed are applied to each member declaration in the group following the access-specifier. ...

In class definitions, many times there are contiguous sequences of member declarations that have common specifiers. Under the proposal these common specifiers can be specified once at the start of a group of member declarations, rather than repeated for each member declaration. This can in some cases lead to cleaner, safer, easier-to-write, easier-to-read and easier-to-maintain code.

So instead of:

class foo : public bar
{
public:
    explicit foo(int);
    explicit foo(float);
    explicit foo(double);

protected:
    virtual T f() const override;
    virtual U g() const override;
    virtual V h() const override;
    virtual W i() const override;

private:
    static constexpr int X = 123;
    static constexpr float Y = 42.0f;
    static constexpr double Z = 123.0;
};

You could with group member specifiers equivalently write:

class foo : public bar
{
public explicit:
    foo(int);
    foo(float);
    foo(double);

protected virtual const override:
    T f();
    U g();
    V h();
    W i();

private static constexpr:
    int X = 123;
    float Y = 42.0f;
    double Z = 123.0;
};

N3928: Extending static_assert, v2 -- Walter Brown

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: N3928

Date: 2014-02-14

Extending static_assert, v2

by Walter Brown

Excerpt:

Following EWG guidance, this paper proposes wording to permit a default string literal for static_assert.

N3926: LWG Issue 2168 is NAD -- Walter Brown

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: N3926

Date: 2014-02-14

LWG Issue 2168 is NAD

by Walter Brown

Excerpt:

LWG issue 2168 reports a perceived inconsistency between two parts of the library’s specification for uniform_real_distribution. This paper argues that there is no inconsistency and that the issue should therefore be closed as NAD.

N3913: Greatest Common Divisor and Least Common Multiple, v2 -- Walter Brown

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: N3913

Date: 2014-02-25

Greatest Common Divisor and Least Common Multiple, v2

by Walter Brown

Excerpt:

This paper proposes two frequently-used classical numeric algorithms, gcd and lcm, for header <numeric>. The former calculates the greatest common divisor of two integer values, while the latter calculates their least common multiple. Both functions are already typically provided in behind-the-scenes support of the standard library’s <ratio> and <chrono> headers.

...

4 Acknowledgments

Many thanks to the readers of early drafts of this paper for their thoughtful comments. Special
thanks to Cassio Neri for his extra-careful proofreading and helpful suggestions.

N3911: TransformationTrait Alias void_t -- Walter Brown

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: N3911

Date: 2014-02-23

TransformationTrait Alias void_t

by Walter Brown

Excerpt:

This paper proposes a new TransformationTrait alias, void_t, for the C++ Standard Library. The trait has previously been described as an implementation detail toward enhanced versions of two other C++11 standard library components. Its value thus proven, void_t’s standardization has been requested by several noted C++ library experts, among others.

N3909: A SFINAE-Friendly std::iterator_traits, v2 -- Walter Brown

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: N3909

Date: 2014-02-10

A SFINAE-Friendly std::iterator_traits, v2

by Walter Brown

Excerpt:

This paper proposes to reformulate the specification of iterator_traits so as to avoid a hard error when its template argument does not have the member types and other characteristics expected of a non-pointer iterator, and thus to make the trait conveniently usable in a SFINAE context.

...

6 Acknowledgments

Many thanks to the readers of early drafts of this paper for their thoughtful comments. Special thanks to Howard Hinnant for his suggestion to validate the nested iterator_category.

N3957-59, Evolution Issues Lists -- 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 numbers: N3957-59

Date: 2014-02-28

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

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

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

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.

N3912: Auto and braced-init-lists, continued -- 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: N3912

Date: 2014-02-24

Auto and braced-init-lists, continued

by Ville Voutilainen

Excerpt:

It was reported (with emphasis) by Mikael Kilpeläinen that init-captures deduce types the same way as auto does. This means that direct-initialization using braces in an init-capture will create an initializer_list. The EWG found this harmful, and is proposing a compromise change that differs from N3681 in the sense that direct-initialization using braces would not yield initializer_lists, whereas copy-initialization using braces would. Example: ...

N3947: URI - Proposed Wording (Revision 4) -- Glyn Matthews, Dean Michael Berris

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: N3947

Date: 2014-02-28

URI - Proposed Wording (Revision 4)

by Glyn Matthews, Dean Michael Berris

Excerpt:

Revisions to N3827

  1. Reverted normalization invariant and added the normalize member function and uri_normalization_level again.
  2. Added functions for interoperability with std::filesystem::path.
  3. Replaced multiple exception classes with a single exception class, uri_error. The uri_error enum has become uri_error_code.
  4. Updated make_relative and resolve sections.
  5. Removed references to IETF RFC 2732, which, it was pointed out, is superseded by IETF RFC 3986.

Acknowledgements

C++ Network Library users and mailing list

Kyle Kloepper and Niklas Gustafsson for providing valuable feedback and encouragement, and for presenting different versions of this proposal at committee meetings.

Beman Dawes and his Filesystem proposal from which I was influenced strongly in the class design.

Thiago Macieira of Qt for important feedback on the draft proposal.

David Thaler for suggesting corrections to errors in referencing IETF standards.

Wikipedia, for being there.