Tried libc++ for fun and it looks like it asks for string_view includes here (among a few other seemingly false positives):
diff --git a/ci/test/00_setup_env_native_iwyu.sh b/ci/test/00_setup_env_native_iwyu.sh
index 3a26be5..27e154d 100755
--- a/ci/test/00_setup_env_native_iwyu.sh
+++ b/ci/test/00_setup_env_native_iwyu.sh
@@ -24 +24 @@ export BITCOIN_CONFIG="\
- -DCMAKE_CXX_COMPILER=clang++-${IWYU_LLVM_V} \
+ -DCMAKE_CXX_COMPILER='clang++-${IWYU_LLVM_V};-stdlib=libc++' \
diff --git a/src/bench/addrman.cpp b/src/bench/addrman.cpp
index 5ce7893..d3ed4c3 100644
--- a/src/bench/addrman.cpp
+++ b/src/bench/addrman.cpp
@@ -5,0 +6 @@
+
@@ -19,0 +21 @@
+#include <string_view>
diff --git a/src/bench/base58.cpp b/src/bench/base58.cpp
index ed36dc3..4ccb6bd 100644
--- a/src/bench/base58.cpp
+++ b/src/bench/base58.cpp
@@ -5,0 +6 @@
+
@@ -9,0 +11 @@
+#include <string_view>
diff --git a/src/bench/bech32.cpp b/src/bench/bech32.cpp
index 1147bd6..1c64cae 100644
--- a/src/bench/bech32.cpp
+++ b/src/bench/bech32.cpp
@@ -5,0 +6 @@
+
@@ -9,0 +11 @@
+#include <string_view>
diff --git a/src/bench/bip324_ecdh.cpp b/src/bench/bip324_ecdh.cpp
index c8d3a35..206a767 100644
--- a/src/bench/bip324_ecdh.cpp
+++ b/src/bench/bip324_ecdh.cpp
@@ -14,0 +15 @@
+#include <string_view>
diff --git a/src/bench/block_assemble.cpp b/src/bench/block_assemble.cpp
index 45052ec..6d80df5 100644
--- a/src/bench/block_assemble.cpp
+++ b/src/bench/block_assemble.cpp
@@ -20,0 +21 @@
+#include <string_view>
diff --git a/src/bench/blockencodings.cpp b/src/bench/blockencodings.cpp
index 274474d..74b324e 100644
--- a/src/bench/blockencodings.cpp
+++ b/src/bench/blockencodings.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -6,0 +6,2 @@
+
+#include <bench/bench.h>
@@ -25,0 +27 @@
+#include <string_view>
diff --git a/src/bench/ccoins_caching.cpp b/src/bench/ccoins_caching.cpp
index ec44e66..a989f58 100644
--- a/src/bench/ccoins_caching.cpp
+++ b/src/bench/ccoins_caching.cpp
@@ -17,0 +18 @@
+#include <string_view>
diff --git a/src/bench/chacha20.cpp b/src/bench/chacha20.cpp
index cc2b57e..12a8157 100644
--- a/src/bench/chacha20.cpp
+++ b/src/bench/chacha20.cpp
@@ -14,0 +15 @@
+#include <string_view>
diff --git a/src/bench/checkblock.cpp b/src/bench/checkblock.cpp
index a35f5e9..4afb084 100644
--- a/src/bench/checkblock.cpp
+++ b/src/bench/checkblock.cpp
@@ -17,0 +18 @@
+#include <string_view>
diff --git a/src/bench/checkblockindex.cpp b/src/bench/checkblockindex.cpp
index 78e70a8..1aa7203 100644
--- a/src/bench/checkblockindex.cpp
+++ b/src/bench/checkblockindex.cpp
@@ -9,0 +10 @@
+#include <string_view>
diff --git a/src/bench/checkqueue.cpp b/src/bench/checkqueue.cpp
index 20f3094..16f95bf 100644
--- a/src/bench/checkqueue.cpp
+++ b/src/bench/checkqueue.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -6,0 +6,2 @@
+
+#include <bench/bench.h>
@@ -15,0 +17 @@
+#include <string_view>
diff --git a/src/bench/cluster_linearize.cpp b/src/bench/cluster_linearize.cpp
index 6d4c838..da1c912 100644
--- a/src/bench/cluster_linearize.cpp
+++ b/src/bench/cluster_linearize.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -6,0 +6,2 @@
+
+#include <bench/bench.h>
@@ -17,0 +19 @@
+#include <string_view>
diff --git a/src/bench/coin_selection.cpp b/src/bench/coin_selection.cpp
index 4f203fe..cd4fb48 100644
--- a/src/bench/coin_selection.cpp
+++ b/src/bench/coin_selection.cpp
@@ -28,0 +29 @@
+#include <string_view>
diff --git a/src/bench/connectblock.cpp b/src/bench/connectblock.cpp
index 5d530a5..aec4762 100644
--- a/src/bench/connectblock.cpp
+++ b/src/bench/connectblock.cpp
@@ -25,0 +26 @@
+#include <string_view>
diff --git a/src/bench/crypto_hash.cpp b/src/bench/crypto_hash.cpp
index 4d0660d..c6d3216 100644
--- a/src/bench/crypto_hash.cpp
+++ b/src/bench/crypto_hash.cpp
@@ -19,0 +20 @@
+#include <string_view>
diff --git a/src/bench/disconnected_transactions.cpp b/src/bench/disconnected_transactions.cpp
index 1ab2ec6..a169392 100644
--- a/src/bench/disconnected_transactions.cpp
+++ b/src/bench/disconnected_transactions.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -6,0 +6,2 @@
+
+#include <bench/bench.h>
@@ -16,0 +18 @@
+#include <string_view>
diff --git a/src/bench/duplicate_inputs.cpp b/src/bench/duplicate_inputs.cpp
index a528066..06d6f3b 100644
--- a/src/bench/duplicate_inputs.cpp
+++ b/src/bench/duplicate_inputs.cpp
@@ -24,0 +25 @@
+#include <string_view>
diff --git a/src/bench/ellswift.cpp b/src/bench/ellswift.cpp
index 2951ca9..6b5b8d5 100644
--- a/src/bench/ellswift.cpp
+++ b/src/bench/ellswift.cpp
@@ -14,0 +15 @@
+#include <string_view>
diff --git a/src/bench/examples.cpp b/src/bench/examples.cpp
index 07c0eab..fac6b76 100644
--- a/src/bench/examples.cpp
+++ b/src/bench/examples.cpp
@@ -6 +5,0 @@
-
@@ -8,0 +8 @@
+#include <string_view>
diff --git a/src/bench/gcs_filter.cpp b/src/bench/gcs_filter.cpp
index ea48592..b136cd2 100644
--- a/src/bench/gcs_filter.cpp
+++ b/src/bench/gcs_filter.cpp
@@ -9,0 +10 @@
+#include <string_view>
diff --git a/src/bench/hashpadding.cpp b/src/bench/hashpadding.cpp
index 4825c5f..5e3006e 100644
--- a/src/bench/hashpadding.cpp
+++ b/src/bench/hashpadding.cpp
@@ -9,0 +10,2 @@
+#include <string_view>
+
diff --git a/src/bench/index_blockfilter.cpp b/src/bench/index_blockfilter.cpp
index a945754..350a66a 100644
--- a/src/bench/index_blockfilter.cpp
+++ b/src/bench/index_blockfilter.cpp
@@ -12 +11,0 @@
-#include <primitives/block.h>
@@ -25,0 +25 @@
+#include <string_view>
diff --git a/src/bench/load_external.cpp b/src/bench/load_external.cpp
index 77c229f..c5856e3 100644
--- a/src/bench/load_external.cpp
+++ b/src/bench/load_external.cpp
@@ -21,0 +22 @@
+#include <string_view>
diff --git a/src/bench/lockedpool.cpp b/src/bench/lockedpool.cpp
index 0a924a7..9d0de2b 100644
--- a/src/bench/lockedpool.cpp
+++ b/src/bench/lockedpool.cpp
@@ -12,0 +13 @@
+#include <string_view>
diff --git a/src/bench/logging.cpp b/src/bench/logging.cpp
index 498469d..273ae25 100644
--- a/src/bench/logging.cpp
+++ b/src/bench/logging.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -6,0 +6,2 @@
+
+#include <bench/bench.h>
@@ -9,0 +11 @@
+#include <string_view>
diff --git a/src/bench/mempool_ephemeral_spends.cpp b/src/bench/mempool_ephemeral_spends.cpp
index f88643c..1c3529e 100644
--- a/src/bench/mempool_ephemeral_spends.cpp
+++ b/src/bench/mempool_ephemeral_spends.cpp
@@ -21,0 +22 @@
+#include <string_view>
diff --git a/src/bench/mempool_eviction.cpp b/src/bench/mempool_eviction.cpp
index 37bb721..97d7ddd 100644
--- a/src/bench/mempool_eviction.cpp
+++ b/src/bench/mempool_eviction.cpp
@@ -18,0 +19 @@
+#include <string_view>
diff --git a/src/bench/mempool_stress.cpp b/src/bench/mempool_stress.cpp
index ab1146e..cf8ccfc 100644
--- a/src/bench/mempool_stress.cpp
+++ b/src/bench/mempool_stress.cpp
@@ -19,0 +20 @@
+#include <string_view>
diff --git a/src/bench/merkle_root.cpp b/src/bench/merkle_root.cpp
index d80ddb2..e8b1014 100644
--- a/src/bench/merkle_root.cpp
+++ b/src/bench/merkle_root.cpp
@@ -11,0 +12 @@
+#include <string_view>
diff --git a/src/bench/nanobench.h b/src/bench/nanobench.h
index 7851290..92ab052 100644
--- a/src/bench/nanobench.h
+++ b/src/bench/nanobench.h
@@ -50,0 +51,2 @@
+#include <__locale>
+#include <forward_list>
@@ -91,0 +94 @@
+
@@ -375 +377,0 @@ struct PerfCountSet;
-
@@ -1110,0 +1113 @@ private:
+
@@ -1382 +1384,0 @@ void doNotOptimizeAway(T const& val) {
-# include <functional>
diff --git a/src/bench/obfuscation.cpp b/src/bench/obfuscation.cpp
index 1587b73..198b815 100644
--- a/src/bench/obfuscation.cpp
+++ b/src/bench/obfuscation.cpp
@@ -4,0 +5,2 @@
+#include <util/obfuscation.h>
+
@@ -7 +8,0 @@
-#include <util/obfuscation.h>
@@ -10,0 +12 @@
+#include <string_view>
diff --git a/src/bench/parse_hex.cpp b/src/bench/parse_hex.cpp
index 846009a..388eb4f 100644
--- a/src/bench/parse_hex.cpp
+++ b/src/bench/parse_hex.cpp
@@ -12,0 +13 @@
+#include <string_view>
diff --git a/src/bench/peer_eviction.cpp b/src/bench/peer_eviction.cpp
index b9c1c9b..171cf0f 100644
--- a/src/bench/peer_eviction.cpp
+++ b/src/bench/peer_eviction.cpp
@@ -12,0 +13 @@
+#include <string_view>
diff --git a/src/bench/poly1305.cpp b/src/bench/poly1305.cpp
index a3d0f94..3651653 100644
--- a/src/bench/poly1305.cpp
+++ b/src/bench/poly1305.cpp
@@ -13,0 +14 @@
+#include <string_view>
diff --git a/src/bench/pool.cpp b/src/bench/pool.cpp
index cf4ba13..414a5d0 100644
--- a/src/bench/pool.cpp
+++ b/src/bench/pool.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -7,0 +7,2 @@
+#include <bench/bench.h>
+
@@ -10,0 +12 @@
+#include <string_view>
diff --git a/src/bench/prevector.cpp b/src/bench/prevector.cpp
index 2b5544f..ad770a4 100644
--- a/src/bench/prevector.cpp
+++ b/src/bench/prevector.cpp
@@ -12,0 +13 @@
+#include <string_view>
diff --git a/src/bench/random.cpp b/src/bench/random.cpp
index c3ac72e..18dd465 100644
--- a/src/bench/random.cpp
+++ b/src/bench/random.cpp
@@ -5 +4,0 @@
-#include <bench/bench.h>
@@ -7,0 +7,2 @@
+#include <bench/bench.h>
+
@@ -11,0 +13 @@
+#include <string_view>
diff --git a/src/bench/readwriteblock.cpp b/src/bench/readwriteblock.cpp
index 984936d..da8dd4f 100644
--- a/src/bench/readwriteblock.cpp
+++ b/src/bench/readwriteblock.cpp
@@ -21,0 +22 @@
+#include <string_view>
diff --git a/src/bench/rollingbloom.cpp b/src/bench/rollingbloom.cpp
index 0f9bc9e..d8b340e 100644
--- a/src/bench/rollingbloom.cpp
+++ b/src/bench/rollingbloom.cpp
@@ -10,0 +11 @@
+#include <string_view>
diff --git a/src/bench/rpc_blockchain.cpp b/src/bench/rpc_blockchain.cpp
index b09eae6..239ff1b 100644
--- a/src/bench/rpc_blockchain.cpp
+++ b/src/bench/rpc_blockchain.cpp
@@ -23,0 +24 @@
+#include <string_view>
diff --git a/src/bench/rpc_mempool.cpp b/src/bench/rpc_mempool.cpp
index f319c96..c43f558 100644
--- a/src/bench/rpc_mempool.cpp
+++ b/src/bench/rpc_mempool.cpp
@@ -18,0 +19 @@
+#include <string_view>
diff --git a/src/bench/sign_transaction.cpp b/src/bench/sign_transaction.cpp
index 3895559..fe97655 100644
--- a/src/bench/sign_transaction.cpp
+++ b/src/bench/sign_transaction.cpp
@@ -21,0 +22 @@
+#include <string_view>
diff --git a/src/bench/streams_findbyte.cpp b/src/bench/streams_findbyte.cpp
index 456f5ae..201f4a9 100644
--- a/src/bench/streams_findbyte.cpp
+++ b/src/bench/streams_findbyte.cpp
@@ -14,0 +15 @@
+#include <string_view>
diff --git a/src/bench/strencodings.cpp b/src/bench/strencodings.cpp
index 4b52b74..135185a 100644
--- a/src/bench/strencodings.cpp
+++ b/src/bench/strencodings.cpp
@@ -12,0 +13 @@
+#include <string_view>
diff --git a/src/bench/txgraph.cpp b/src/bench/txgraph.cpp
index 57081dd..93bd1d0 100644
--- a/src/bench/txgraph.cpp
+++ b/src/bench/txgraph.cpp
@@ -4,0 +5,2 @@
+#include <txgraph.h>
+
@@ -7 +8,0 @@
-#include <txgraph.h>
@@ -16,0 +18 @@
+#include <string_view>
diff --git a/src/bench/txorphanage.cpp b/src/bench/txorphanage.cpp
index 8765a7b..d7d7282 100644
--- a/src/bench/txorphanage.cpp
+++ b/src/bench/txorphanage.cpp
@@ -4,0 +5,2 @@
+#include <node/txorphanage.h>
+
@@ -12 +13,0 @@
-#include <node/txorphanage.h>
@@ -22,0 +24 @@
+#include <string_view>
diff --git a/src/bench/util_time.cpp b/src/bench/util_time.cpp
index 0079549..4f6f0cf 100644
--- a/src/bench/util_time.cpp
+++ b/src/bench/util_time.cpp
@@ -8,0 +9,2 @@
+#include <string_view>
+
diff --git a/src/bench/verify_script.cpp b/src/bench/verify_script.cpp
index b6d73b8..04d1222 100644
--- a/src/bench/verify_script.cpp
+++ b/src/bench/verify_script.cpp
@@ -26,0 +27 @@
+#include <string_view>
diff --git a/src/bench/wallet_balance.cpp b/src/bench/wallet_balance.cpp
index 958044e..f64c63f 100644
--- a/src/bench/wallet_balance.cpp
+++ b/src/bench/wallet_balance.cpp
@@ -7 +6,0 @@
-#include <interfaces/handler.h>
@@ -26,0 +26 @@
+#include <string_view>
diff --git a/src/bench/wallet_create.cpp b/src/bench/wallet_create.cpp
index 13e8ee1..b624c73 100644
--- a/src/bench/wallet_create.cpp
+++ b/src/bench/wallet_create.cpp
@@ -19,0 +20 @@
+#include <string_view>
diff --git a/src/bench/wallet_create_tx.cpp b/src/bench/wallet_create_tx.cpp
index 394f21c..dada0e3 100644
--- a/src/bench/wallet_create_tx.cpp
+++ b/src/bench/wallet_create_tx.cpp
@@ -33 +32,0 @@
-#include <wallet/types.h>
@@ -41,0 +41 @@
+#include <string_view>
diff --git a/src/bench/wallet_encrypt.cpp b/src/bench/wallet_encrypt.cpp
index 81e64a2..25af00f 100644
--- a/src/bench/wallet_encrypt.cpp
+++ b/src/bench/wallet_encrypt.cpp
@@ -24 +23,0 @@
-#include <functional>
@@ -26,0 +26 @@
+#include <string_view>
diff --git a/src/bench/wallet_ismine.cpp b/src/bench/wallet_ismine.cpp
index 572a271..2265b2b 100644
--- a/src/bench/wallet_ismine.cpp
+++ b/src/bench/wallet_ismine.cpp
@@ -22 +21,0 @@
-#include <functional>
@@ -24,0 +24 @@
+#include <string_view>
diff --git a/src/bench/wallet_loading.cpp b/src/bench/wallet_loading.cpp
index 6b1208e..6614ca7 100644
--- a/src/bench/wallet_loading.cpp
+++ b/src/bench/wallet_loading.cpp
@@ -24,0 +25 @@
+#include <string_view>
diff --git a/src/bench/wallet_migration.cpp b/src/bench/wallet_migration.cpp
index 22caec7..590d361 100644
--- a/src/bench/wallet_migration.cpp
+++ b/src/bench/wallet_migration.cpp
@@ -7,0 +8 @@
+#include <interfaces/chain.h>
@@ -30,0 +32 @@
+#include <string_view>
diff --git a/src/core_io.cpp b/src/core_io.cpp
index 3650d70..b266577 100644
--- a/src/core_io.cpp
+++ b/src/core_io.cpp
@@ -44,0 +45 @@
+#include <string_view>
diff --git a/src/crypto/muhash.cpp b/src/crypto/muhash.cpp
index c04f58e..e383b57 100644
--- a/src/crypto/muhash.cpp
+++ b/src/crypto/muhash.cpp
@@ -16,0 +17 @@
+#include <string_view>
diff --git a/src/index/base.cpp b/src/index/base.cpp
index 906ed26..ae13dd5 100644
--- a/src/index/base.cpp
+++ b/src/index/base.cpp
@@ -38,0 +39,2 @@
+#include <ostream>
+#include <ratio>
@@ -40,0 +43 @@
+#include <string_view>
diff --git a/src/index/blockfilterindex.cpp b/src/index/blockfilterindex.cpp
index 5c4a181..33f9be5 100644
--- a/src/index/blockfilterindex.cpp
+++ b/src/index/blockfilterindex.cpp
@@ -32,0 +33 @@
+#include <string_view>
diff --git a/src/index/coinstatsindex.cpp b/src/index/coinstatsindex.cpp
index 204f434..d38d1fb 100644
--- a/src/index/coinstatsindex.cpp
+++ b/src/index/coinstatsindex.cpp
@@ -33,0 +34 @@
+#include <string_view>
diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp
index cc77a37..9a0dcc7 100644
--- a/src/kernel/chainparams.cpp
+++ b/src/kernel/chainparams.cpp
@@ -32,0 +33 @@
+#include <string_view>
diff --git a/src/kernel/coinstats.cpp b/src/kernel/coinstats.cpp
index 4f2f3fe..45e51b7 100644
--- a/src/kernel/coinstats.cpp
+++ b/src/kernel/coinstats.cpp
@@ -25,0 +26 @@
+#include <string_view>
diff --git a/src/node/blockstorage.cpp b/src/node/blockstorage.cpp
index b060108..7e9ebe2 100644
--- a/src/node/blockstorage.cpp
+++ b/src/node/blockstorage.cpp
@@ -53,0 +54 @@
+#include <string_view>
diff --git a/src/node/blockstorage.h b/src/node/blockstorage.h
index 347dbc3..b82b14e 100644
--- a/src/node/blockstorage.h
+++ b/src/node/blockstorage.h
@@ -42,0 +43 @@
+#include <tuple>
@@ -50,0 +52 @@ class ChainstateManager;
+
diff --git a/src/node/interfaces.cpp b/src/node/interfaces.cpp
index 3e34c3a..66607f5 100644
--- a/src/node/interfaces.cpp
+++ b/src/node/interfaces.cpp
@@ -81,0 +82 @@
+#include <string_view>
diff --git a/src/node/miner.cpp b/src/node/miner.cpp
index ccd9cc7..4c1f4e6 100644
--- a/src/node/miner.cpp
+++ b/src/node/miner.cpp
@@ -49,0 +50 @@
+#include <ratio>
@@ -52,0 +54 @@
+#include <string_view>
diff --git a/src/prevector.h b/src/prevector.h
index e8a71bc..07e699e 100644
--- a/src/prevector.h
+++ b/src/prevector.h
@@ -9,0 +10 @@
+#include <cstddef>
diff --git a/src/script/sign.cpp b/src/script/sign.cpp
index f38ac2b..ca0a502 100644
--- a/src/script/sign.cpp
+++ b/src/script/sign.cpp
@@ -35,0 +36 @@
+#include <string_view>
diff --git a/src/script/signingprovider.cpp b/src/script/signingprovider.cpp
index 2b5d6e2..ba91795 100644
--- a/src/script/signingprovider.cpp
+++ b/src/script/signingprovider.cpp
@@ -15,0 +16,2 @@
+#include <string_view>
+#include <variant>
diff --git a/src/script/signingprovider.h b/src/script/signingprovider.h
index c104e21..ee5b1e8 100644
--- a/src/script/signingprovider.h
+++ b/src/script/signingprovider.h
@@ -28 +27,0 @@
-#include <variant>
diff --git a/src/util/feefrac.h b/src/util/feefrac.h
index f9c9a0a..8073deb 100644
--- a/src/util/feefrac.h
+++ b/src/util/feefrac.h
@@ -14,0 +15 @@
+#include <string_view>
diff --git a/src/util/fs_helpers.h b/src/util/fs_helpers.h
index f4d406f..88f2ac3 100644
--- a/src/util/fs_helpers.h
+++ b/src/util/fs_helpers.h
@@ -12,0 +13 @@
+#include <ios>
diff --git a/src/util/sock.cpp b/src/util/sock.cpp
index db3f5fc..e336e4a 100644
--- a/src/util/sock.cpp
+++ b/src/util/sock.cpp
@@ -19,0 +20 @@
+#include <ratio>
diff --git a/src/util/sock.h b/src/util/sock.h
index 50c1ab0..1aad598 100644
--- a/src/util/sock.h
+++ b/src/util/sock.h
@@ -10,0 +11 @@
+#include <cstddef>
diff --git a/src/util/threadnames.cpp b/src/util/threadnames.cpp
index a9a3649..637c5d7 100644
--- a/src/util/threadnames.cpp
+++ b/src/util/threadnames.cpp
@@ -5,0 +6 @@
+
@@ -10,0 +12 @@
+#include <string_view>
diff --git a/src/util/time.cpp b/src/util/time.cpp
index 974eb05..d511b5b 100644
--- a/src/util/time.cpp
+++ b/src/util/time.cpp
@@ -16,0 +17 @@
+#include <ratio>