mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-25 05:20:01 +01:00
Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17)
4cd95a2921refactor: modernize remaining outdated trait patterns (Lőrinc)ab2b67fce2scripted-diff: modernize outdated trait patterns - values (Lőrinc)8327889f35scripted-diff: modernize outdated trait patterns - types (Lőrinc) Pull request description: The use of [`std::underlying_type_t<T>`](https://en.cppreference.com/w/cpp/types/underlying_type) or [`std::is_enum_v<T>`](https://en.cppreference.com/w/cpp/types/is_enum) (and similar ones, introduced in C++14) replace the `typename std::underlying_type<T>::type` and `std::is_enum<T>::value` constructs (available in C++11). The `_t` and `_v` helper alias templates offer a more concise way to extract the type and value directly. I've modified the instances I found in the codebase one-by-one (noticed them while investigating https://github.com/bitcoin/bitcoin/pull/31868), and afterwards extracted scripted diff commits to do the trivial ones automatically. The last commit contains the values that were easier done manually. I've excluded changes from `src/bench/nanobench.h`, `src/leveldb`, `src/minisketch`, `src/span.h` and `src/sync.h` - let me know if you think they should be included instead. A few of the code changes can also be reproduced by clang-tidy (but not all of them): ```bash cmake -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DBUILD_FOR_FUZZING=ON && cmake --build build -j$(nproc) run-clang-tidy -quiet -p build -j $(nproc) -checks='-*,modernize-type-traits' -fix $(git grep -lE '::(value|type)' ./src ':(exclude)src/bench/nanobench.h' ':(exclude)src/leveldb' ':(exclude)src/minisketch' ':(exclude)src/span.h' ':(exclude)src/sync.h') ``` ACKs for top commit: laanwj: Concept and code review ACK4cd95a2921Tree-SHA512: a4bcf0f267c0f4e02983b4d548ed6f58d464ec379ac5cd1f998b9ec0cf698b53a9f2557a05a342b661f1d94adefc9a0ce2dc8f764d49453aaea95451e2c4c581
This commit is contained in:
@@ -45,7 +45,7 @@ enum class AddressPurpose;
|
||||
enum isminetype : unsigned int;
|
||||
struct CRecipient;
|
||||
struct WalletContext;
|
||||
using isminefilter = std::underlying_type<isminetype>::type;
|
||||
using isminefilter = std::underlying_type_t<isminetype>;
|
||||
} // namespace wallet
|
||||
|
||||
namespace interfaces {
|
||||
|
||||
Reference in New Issue
Block a user