From 960aa38cf32bb7e167df6a6767d879d0a51564fa Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 5 Oct 2024 16:38:10 +0800 Subject: [PATCH] utils/i_filter: include used header when compiling with clang-19 and the standard library from GCC-14.2, we have: ``` /usr/bin/cmake -E __run_co_compile --tidy="clang-tidy;--checks=-*,bugprone-use-after-move;--extra-arg-before=--driver-mode=g++" --source=/__w/scylladb/scylladb/utils/bloom_filter.cc -- /usr/bin/clang++ -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DFMT_SHARED -DSCYLLA_BUILD_MODE=release -DSEASTAR_API_LEVEL=7 -DSEASTAR_LOGGER_COMPILE_TIME_FMT -DSEASTAR_LOGGER_TYPE_STDOUT -DSEASTAR_SCHEDULING_GROUPS_COUNT=16 -DSEASTAR_SSTRING -DXXH_PRIVATE_API -I/__w/scylladb/scylladb -I/__w/scylladb/scylladb/seastar/include -I/__w/scylladb/scylladb/build/seastar/gen/include -I/__w/scylladb/scylladb/build/seastar/gen/src -ffunction-sections -fdata-sections -O3 -g -gz -std=gnu++23 -fvisibility=hidden -Wall -Werror -Wextra -Wno-error=deprecated-declarations -Wimplicit-fallthrough -Wno-c++11-narrowing -Wno-deprecated-copy -Wno-mismatched-tags -Wno-missing-field-initializers -Wno-overloaded-virtual -Wno-unsupported-friend -Wno-enum-constexpr-conversion -Wno-unused-parameter -ffile-prefix-map=/__w/scylladb/scylladb/build=. -march=wes Error: /__w/scylladb/scylladb/utils/bloom_filter.cc:81:1: error: unknown type name 'filter_ptr' [clang-diagnostic-error] 81 | filter_ptr create_filter(int hash, large_bitset&& bitset, filter_format format) { | ^ Error: /__w/scylladb/scylladb/utils/bloom_filter.cc:82:12: error: no viable conversion from returned value of type '__detail::__unique_ptr_t' (aka 'unique_ptr') to function return type 'int' [clang-diagnostic-error] 82 | return std::make_unique(hash, std::move(bitset), format); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error: /__w/scylladb/scylladb/utils/bloom_filter.cc:85:1: error: unknown type name 'filter_ptr' [clang-diagnostic-error] 85 | filter_ptr create_filter(int hash, int64_t num_elements, int buckets_per, filter_format format) { | ^ Error: /__w/scylladb/scylladb/utils/bloom_filter.cc:86:12: error: no viable conversion from returned value of type '__detail::__unique_ptr_t' (aka 'unique_ptr') to function return type 'int' [clang-diagnostic-error] 86 | return std::make_unique(hash, large_bitset(get_bitset_size(num_elements, buckets_per)), format); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error: /__w/scylladb/scylladb/utils/bloom_filter.hh:93:1: error: unknown type name 'filter_ptr' [clang-diagnostic-error] 93 | filter_ptr create_filter(int hash, large_bitset&& bitset, filter_format format); | ^ Error: /__w/scylladb/scylladb/utils/bloom_filter.hh:94:1: error: unknown type name 'filter_ptr' [clang-diagnostic-error] 94 | filter_ptr create_filter(int hash, int64_t num_elements, int buckets_per, filter_format format); | ^ Error: /__w/scylladb/scylladb/utils/i_filter.hh:17:25: error: no template named 'unique_ptr' in namespace 'std' [clang-diagnostic-error] 17 | using filter_ptr = std::unique_ptr; | ~~~~~^ Error: /__w/scylladb/scylladb/utils/i_filter.hh:54:12: error: unknown type name 'filter_ptr' [clang-diagnostic-error] 54 | static filter_ptr get_filter(int64_t num_elements, double max_false_pos_prob, filter_format format); | ^ 4 warnings and 8 errors generated. ``` apparently, the definition of `std::unique_ptr` is missing where it is used. so let's include ``, so that `i_filter.hh` is more self-contained. Signed-off-by: Kefu Chai Closes scylladb/scylladb#20971 --- utils/i_filter.hh | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/i_filter.hh b/utils/i_filter.hh index 3bb6051c3d..31032cd29b 100644 --- a/utils/i_filter.hh +++ b/utils/i_filter.hh @@ -9,6 +9,7 @@ */ #pragma once +#include #include "bytes.hh" namespace utils {