C++ Logo

sg15

Advanced search

Re: [isocpp-sg21] Contracts and tooling

From: Daniela Engert <dani_at_[hidden]>
Date: Fri, 17 Nov 2023 14:10:56 +0100
Am 17.11.2023 um 13:58 schrieb Timur Doumler:
>
>
>> On 17 Nov 2023, at 14:45, Daniela Engert via SG15
>> <sg15_at_[hidden]> wrote:
>>
>> This revision is - according to my understanding - obsoleted by the
>> discussion we had in Varna. They were implementable before, but not
>> to the extent that e.g. Bloomberg requires.
>>
> Thanks Daniela, but I am afraid your answer raises more questions...
>
> First of all - what changed in Varna? Are header units now *more*
> implementable or *less* implementable than described in Daniel Ruoso's
> paper?

We came to the conclusion that - given some preconditions - header units
are implementable. I'm not sure an updated revision of Daniel's paper
was published in the meantime.

>
> Also, what does it mean, "implementable but not to the extent that
> e.g. Bloomberg requires"? It seems to me that something is either
> implementable as specified in the Standard, or it is not.

The standard says this about header units:

- standard library headers *must* be importable. Therefore they are
necessarily valid header units.

- all other headers are at the mercy of an implementation. A conforming
implementation is not required to accept any other header file as a
valid header unit. In practice, there are very few preconditions that a
header needs to fulfill to be importable. Idempotency is helpful but not
required, some syntactic entities will render a header not importable by
the standard. Everything in between is QoI ("questionable and incomplete").

I've discussed this a long time ago with an implementer and got the
answer: as long as a compiler accepts a header to compile it as a header
unit, that header is importable 😬.

Received on 2023-11-17 13:10:59