C++ Logo

std-proposals

Advanced search

Re: Allow [[deprecated]] on call site to disable deprecated warning

From: Dominic Fandrey <isocpp.id_at_[hidden]>
Date: Thu, 28 Jan 2021 18:40:30 +0100
On 28/01/2021 14:27, codusnocturnus via Std-Proposals wrote:
> The major compilers provide a way to suppress specific warnings.

[ ] you have read the mail you replied to


> https://godbolt.org/z/YaEv5M
>
>
>
> Sent with ProtonMail Secure Email.
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Thursday, January 28, 2021 4:05 AM, Dominic Fandrey via Std-Proposals <std-proposals_at_[hidden]> wrote:
>
>> I recently ran into this issue:
>>
>> 1. Marked a set of legacy methods [[deprecated]]
>> 2. Unit tests no longer compile (we run -Wall -Werror of course)
>>
>> Of course I don't want to get rid of the unit tests before I get rid of the
>> functions. So I was faced with two choices:
>>
>> 3. Create #ifdef #pragma soup for all 3 compilers that we use
>> 4. Remove [[deprecated]]
>>
>> The #ifdef #pragma soup needs to be updated every time a compiler is added,
>> and it bloats the code and makes unit tests more difficult to read. So I
>> went for option 2. As long as I cannot ignore [[deprecated]] in a portable
>> manner I cannot use it.
>>
>> So my suggestion is:
>>
>>
>> [[deprecated("use: std::optional<std::size_t> size()")]]int size(std::size_t & size);
>>
>>
>>
>> bool test_size() {
>> std::size_t s{0};
>> return 0 == [[deprecated]]size(s) && s != 0;
>> }
>>
>>
>> Regards

Received on 2021-01-28 11:40:35