Skip to content

Commit 2ffd408

Browse files
Fixed g++-13 warning about used undefined symbols
1 parent d7c8d7b commit 2ffd408

File tree

2 files changed

+22
-29
lines changed

2 files changed

+22
-29
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ include(GNUInstallDirs)
7070
add_library(beman.any_view INTERFACE)
7171
add_library(beman::any_view ALIAS beman.any_view)
7272
set_target_properties(beman.any_view PROPERTIES CXX_EXTENSIONS OFF)
73+
target_compile_features(beman.any_view INTERFACE cxx_std_20)
7374
# TODO: implement non-template friend function and remove this suppression
7475
target_compile_options(
7576
beman.any_view

tests/beman/any_view/type_traits.test.cpp

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ TEST(TypeTraitsTest, value_type) {
1818
static_assert(std::same_as<range_value_t<any_view<const value>>, value>);
1919
}
2020

21+
struct value_traits {
22+
using reference_type = value;
23+
};
24+
25+
struct lvalue_traits {
26+
using reference_type = lvalue;
27+
};
28+
2129
TEST(TypeTraitsTest, reference_type) {
2230
using std::ranges::range_reference_t;
2331

@@ -30,14 +38,6 @@ TEST(TypeTraitsTest, reference_type) {
3038
static_assert(std::same_as<range_reference_t<any_view<value, input, value>>, value>);
3139
static_assert(std::same_as<range_reference_t<any_view<value, input, lvalue>>, lvalue>);
3240
#elif BEMAN_ANY_VIEW_USE_TRAITS()
33-
struct value_traits {
34-
using reference_type = value;
35-
};
36-
37-
struct lvalue_traits {
38-
using reference_type = lvalue;
39-
};
40-
4141
static_assert(std::same_as<range_reference_t<any_view<value, value_traits>>, value>);
4242
static_assert(std::same_as<range_reference_t<any_view<value, lvalue_traits>>, lvalue>);
4343
#elif BEMAN_ANY_VIEW_USE_NAMED()
@@ -48,6 +48,10 @@ TEST(TypeTraitsTest, reference_type) {
4848
#endif
4949
}
5050

51+
struct rvalue_traits {
52+
using rvalue_reference_type = rvalue;
53+
};
54+
5155
TEST(TypeTraitsTest, rvalue_reference_type) {
5256
using std::ranges::range_rvalue_reference_t;
5357

@@ -61,18 +65,6 @@ TEST(TypeTraitsTest, rvalue_reference_type) {
6165
static_assert(std::same_as<range_rvalue_reference_t<any_view<value, input, lvalue>>, lvalue>);
6266
static_assert(std::same_as<range_rvalue_reference_t<any_view<value, input, lvalue, rvalue>>, rvalue>);
6367
#elif BEMAN_ANY_VIEW_USE_TRAITS()
64-
struct value_traits {
65-
using reference_type = value;
66-
};
67-
68-
struct lvalue_traits {
69-
using reference_type = lvalue;
70-
};
71-
72-
struct rvalue_traits {
73-
using rvalue_reference_type = rvalue;
74-
};
75-
7668
static_assert(std::same_as<range_rvalue_reference_t<any_view<value, value_traits>>, value>);
7769
static_assert(std::same_as<range_rvalue_reference_t<any_view<value, lvalue_traits>>, lvalue>);
7870
static_assert(std::same_as<range_rvalue_reference_t<any_view<value, rvalue_traits>>, rvalue>);
@@ -88,6 +80,10 @@ TEST(TypeTraitsTest, rvalue_reference_type) {
8880
#endif
8981
}
9082

83+
struct difference_traits {
84+
using difference_type = short;
85+
};
86+
9187
TEST(TypeTraitsTest, difference_type) {
9288
using std::ranges::range_difference_t;
9389

@@ -98,10 +94,6 @@ TEST(TypeTraitsTest, difference_type) {
9894

9995
static_assert(std::same_as<range_difference_t<any_view<value, input, lvalue, rvalue, short>>, short>);
10096
#elif BEMAN_ANY_VIEW_USE_TRAITS()
101-
struct difference_traits {
102-
using difference_type = short;
103-
};
104-
10597
static_assert(std::same_as<range_difference_t<any_view<value, difference_traits>>, short>);
10698
#elif BEMAN_ANY_VIEW_USE_NAMED()
10799
using beman::any_view::type;
@@ -117,6 +109,10 @@ struct sized_traits {
117109
static constexpr bool sized = true;
118110
};
119111

112+
struct sized_difference_traits : sized_traits {
113+
using difference_type = short;
114+
};
115+
120116
TEST(TypeTraitsTest, size_type) {
121117
using std::ranges::range_size_t;
122118

@@ -126,12 +122,8 @@ TEST(TypeTraitsTest, size_type) {
126122
static_assert(std::same_as<range_size_t<any_view<value, input | sized>>, std::size_t>);
127123
static_assert(std::same_as<range_size_t<any_view<value, input | sized, lvalue, rvalue, short>>, unsigned short>);
128124
#elif BEMAN_ANY_VIEW_USE_TRAITS()
129-
struct difference_traits : sized_traits {
130-
using difference_type = short;
131-
};
132-
133125
static_assert(std::same_as<range_size_t<any_view<value, sized_traits>>, std::size_t>);
134-
static_assert(std::same_as<range_size_t<any_view<value, difference_traits>>, unsigned short>);
126+
static_assert(std::same_as<range_size_t<any_view<value, sized_difference_traits>>, unsigned short>);
135127
#elif BEMAN_ANY_VIEW_USE_NAMED()
136128
using beman::any_view::type;
137129

0 commit comments

Comments
 (0)