Skip to content

Commit bc5b7d7

Browse files
committed
FIX: static_string sign warnins
1 parent 8c94034 commit bc5b7d7

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

modules/mrpt_typemeta/include/mrpt/typemeta/static_string.h

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace mrpt
2121
{
2222
namespace typemeta
2323
{
24-
template <int N>
24+
template <std::size_t N>
2525
class string_literal
2626
{
2727
const char (&_lit)[N + 1];
@@ -30,13 +30,13 @@ class string_literal
3030
/** Ctor from C string literal, with trailing zero. */
3131
constexpr string_literal(const char (&lit)[N + 1]) : _lit((MRPT_X_ASSERT(lit[N] == '\0'), lit)) {}
3232
constexpr std::size_t size() const { return N; }
33-
constexpr char operator[](int i) const { return MRPT_X_ASSERT(i >= 0 && i < N), _lit[i]; }
33+
constexpr char operator[](std::size_t i) const { return MRPT_X_ASSERT(i < N), _lit[i]; }
3434
constexpr const char* c_str() const { return _lit; }
3535
constexpr operator const char*() const { return _lit; }
3636
operator std::string() const { return _lit; }
3737
};
3838

39-
template <int N_PLUS_1>
39+
template <std::size_t N_PLUS_1>
4040
constexpr auto literal(const char (&lit)[N_PLUS_1]) -> string_literal<N_PLUS_1 - 1>
4141
{
4242
return string_literal<N_PLUS_1 - 1>(lit);
@@ -47,7 +47,7 @@ constexpr auto literal(const char (&lit)[N_PLUS_1]) -> string_literal<N_PLUS_1 -
4747
namespace internal
4848
{
4949
// the type used to receive the pack
50-
template <int... I>
50+
template <std::size_t... I>
5151
struct sequence
5252
{
5353
};
@@ -57,18 +57,18 @@ struct sequence
5757
template <typename T>
5858
struct append;
5959

60-
template <int... I>
60+
template <std::size_t... I>
6161
struct append<sequence<I...>>
6262
{
6363
using type = sequence<I..., sizeof...(I)>;
6464
};
6565

6666
// recursive implementation of make_sequence
6767

68-
template <int I>
68+
template <std::size_t I>
6969
struct make_sequence_;
7070

71-
template <int I>
71+
template <std::size_t I>
7272
using make_sequence = typename make_sequence_<I>::type;
7373

7474
template <>
@@ -77,19 +77,19 @@ struct make_sequence_<0> // recursion end
7777
using type = sequence<>;
7878
};
7979

80-
template <int I>
80+
template <std::size_t I>
8181
struct make_sequence_ : append<make_sequence<I - 1>>
8282
{
8383
static_assert(I >= 0, "negative size");
8484
};
8585
} // namespace internal
8686

87-
template <int N>
87+
template <std::size_t N>
8888
class array_string
8989
{
9090
char _array[N + 1];
9191

92-
template <typename S1, typename S2, int... PACK1, int... PACK2>
92+
template <typename S1, typename S2, std::size_t... PACK1, std::size_t... PACK2>
9393
constexpr array_string(
9494
const S1& s1, const S2& s2, internal::sequence<PACK1...>, internal::sequence<PACK2...>) :
9595
_array{s1[PACK1]..., s2[PACK2]..., '\0'}
@@ -98,48 +98,48 @@ class array_string
9898

9999
public:
100100
/** ctor: literal + literal */
101-
template <int N1, REQUIRES(N1 <= N)>
101+
template <std::size_t N1, REQUIRES(N1 <= N)>
102102
constexpr array_string(const string_literal<N1>& s1, const string_literal<N - N1>& s2) :
103103
array_string{s1, s2, internal::make_sequence<N1>{}, internal::make_sequence<N - N1>{}}
104104
{
105105
}
106106

107107
/** ctor: string + literal */
108-
template <int N1, REQUIRES(N1 <= N)>
108+
template <std::size_t N1, REQUIRES(N1 <= N)>
109109
constexpr array_string(const array_string<N1>& s1, const string_literal<N - N1>& s2) :
110110
array_string{s1, s2, internal::make_sequence<N1>{}, internal::make_sequence<N - N1>{}}
111111
{
112112
}
113113

114114
/** ctor: string + string */
115-
template <int N1, REQUIRES(N1 <= N)>
115+
template <std::size_t N1, REQUIRES(N1 <= N)>
116116
constexpr array_string(const array_string<N1>& s1, const array_string<N - N1>& s2) :
117117
array_string{s1, s2, internal::make_sequence<N1>{}, internal::make_sequence<N - N1>{}}
118118
{
119119
}
120120

121121
constexpr std::size_t size() const { return N; }
122-
constexpr char operator[](int i) const { return MRPT_X_ASSERT(i >= 0 && i < N), _array[i]; }
122+
constexpr char operator[](std::size_t i) const { return MRPT_X_ASSERT(i < N), _array[i]; }
123123
constexpr const char* c_str() const { return _array; }
124124
constexpr operator const char*() const { return c_str(); }
125125
operator std::string() const { return c_str(); }
126126
};
127127

128-
template <int N1, int N2>
128+
template <std::size_t N1, std::size_t N2>
129129
constexpr auto operator+(const string_literal<N1>& s1, const string_literal<N2>& s2)
130130
-> array_string<N1 + N2>
131131
{
132132
return array_string<N1 + N2>(s1, s2);
133133
}
134134

135-
template <int N1, int N2>
135+
template <std::size_t N1, std::size_t N2>
136136
constexpr auto operator+(const array_string<N1>& s1, const string_literal<N2>& s2)
137137
-> array_string<N1 + N2>
138138
{
139139
return array_string<N1 + N2>(s1, s2);
140140
}
141141

142-
template <int N1, int N2>
142+
template <std::size_t N1, std::size_t N2>
143143
constexpr auto operator+(const array_string<N1>& s1, const array_string<N2>& s2)
144144
-> array_string<N1 + N2>
145145
{

0 commit comments

Comments
 (0)