C++ Logo

std-proposals

Advanced search

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

From: Justin Bassett <jbassett271_at_[hidden]>
Date: Thu, 28 Jan 2021 11:31:13 -0800
You can hide the #ifdef #pragma soup underneath macros (
https://godbolt.org/z/bj7dG8 ):

bool test_size() {
    std::size_t s{0};
    IGNORE_DEPRECATED(
        return 0 == size(s) && s != 0;
    )
}

Regards,
Justin Bassett

On Thu, Jan 28, 2021 at 3: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:
>
> 1. Create #ifdef #pragma soup for all 3 compilers that we use
> 2. 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
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>

Received on 2021-01-28 13:31:32