C++ Logo


Advanced search

Re: [SG15] [isocpp-modules] Determining identity like #pragma once

From: Gabriel Dos Reis <gdr_at_[hidden]>
Date: Wed, 10 Jul 2019 21:51:37 +0000

| -----Original Message-----
| From: Bryce Adelstein Lelbach aka wash <brycelelbach_at_gmail.com>
| Sent: Wednesday, July 10, 2019 2:37 PM
| To: Gabriel Dos Reis <gdr_at_microsoft.com>
| Cc: Tom Honermann <tom_at_[hidden]>; modules_at_lists.isocpp.org;
| sg15_at_[hidden]
| Subject: Re: [isocpp-modules] [SG15] Determining identity like #pragma once
| On Wed, Jul 10, 2019 at 11:02 AM Gabriel Dos Reis <gdr_at_microsoft.com>
| wrote:
| >
| > You are implying that the include translation is mandatory. Is that your
| argument?
| It is my belief that include translation is mandatory.
| "If the header identified by the header-name denotes an importable
| header ([module.import]), the preprocessing directive is instead
| replaced by the preprocessing-tokens: import header-name ;"
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Feel.is
| %2Fc%2B%2Bdraft%2Fcpp.include%237&amp;data=02%7C01%7Cgdr%40mic
| rosoft.com%7C57adb75b608743ebf6e208d7057ed5d4%7C72f988bf86f141af
| 91ab2d7cd011db47%7C1%7C0%7C636983914618863287&amp;sdata=JsvGf
| 0RfvcjOSMF6q%2FfsW60hhKx5TI%2F1K42M8PdRbOU%3D&amp;reserved=0
| To me, that reads as "including an importable header must be
| translated to an import".
| Was that the original design intent?

The original intent, as I understood it, was to *permit* include translation.

A mandatory include translation is practically unworkable for the MSVC audience. I wouldn't be surprised at all if that is the case of other compilers too.

A permission, as opposed to a requirement, would allow adoption of header import as better and principled replacement of PCH. Otherwise, it would create more problems than it solves.

-- Gaby

Received on 2019-07-10 16:53:32