Date: Thu, 28 Jan 2021 12:05:32 +0100
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
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
Received on 2021-01-28 05:05:36