On Tue, Aug 16, 2022 at 10:26 AM Lénárd Szolnoki via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
> On 16 August 2022 12:53:00 BST, Frederick Virchanza Gotham via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
>>
>> Every C++ compiler suite I'm aware of supports the preprocessor macro __COUNTER__.
>
> It is an ODR-violation footgun when used in header files.

I think `__COUNTER__` can be useful; but it's just like `#pragma once` — every vendor already supports it, a fair bit of code depends on it, so what's the point of all the bickering to add it to the Standard? It's easier to just maintain the status quo, which is that it's non-standard but it works.

For comparison, C++ once tried to standardize the equally widespread vendor practice of
    #define CALL(...) call(1, 2, 3 ,##__VA_ARGS__)
to mean "eliminate the trailing comma if __VA_ARGS__ is empty," and after they got through with it we ended up with a whole new thing called __VA_OPT__, and the original code remains a non-standard extension.

–Arthur