Document number

ISO/IEC/JTC1/SC22/WG21/P1876R0

Date

2019-10-03

Reply-to

Rene Rivera, grafikrobot@gmail.com

Audience

WG21

1. Abstract

This proposes to make module names as flexible as possible for maximal user flexibility to choose their ideal module organization.

2. Changes

2.1. R0 (Initial)

Initial content.

3. Introduction

In D1873 [1] Michael Spencer proposes to remove the “.” from modules names. The rationale being that since the `.`s do have any current semantic they should be removed. With the goal that in some future standard the `.`s can be added with the desired semantics.

The status quo counters that leaving the `.`s provides users the ability to use `.`s as a means to structure modules, through naming, to fit their organizational needs.

If we are allowing users the limited flexibility to use `.`s we should strive to give users the maximal flexibility to use module names to express their desired structural, and other, meanings.

4. Proposal

Allow for as many syntactic characters in modules names as possible. This means allowing the following as part of module names: ~, !, @, $, %, ^, &, *, -, =, +, |, ,, ., ?, /, (, ), [, ], <, >.

This can lead to some useful categorizations for modules. For example…​

Expressing both organization and optional grouped sub-modules

boost/math, boost/math(common_factor), boost/math(octonion), boost/math(quaternion), boost/math(special_functions), boost/math(statistical_distributions)

5. Wording

5.1. [module.unit]

module-declaration:

exportopt module module-name module-partitionopt attribute-specifier-seqopt ;

module-name:

module-name-qualifieropt identifier

module-partition:

: module-name-qualifieropt identifier

module-name-qualifier:

identifier . module-name-delimiter
module-name-qualifier identifier . module-name-delimiter

module-name-delimiter: one of

~ ! @ $ % ^ & * - = + | , . ? /
( ) [ ]


1. D1873 — remove.dots.in.module.names