aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client/rspamc.cxx2
-rw-r--r--src/libserver/html/html_tag_defs.hxx2
-rw-r--r--src/libutil/cxx/util.hxx5
3 files changed, 5 insertions, 4 deletions
diff --git a/src/client/rspamc.cxx b/src/client/rspamc.cxx
index 2a2332bca..b7341be4f 100644
--- a/src/client/rspamc.cxx
+++ b/src/client/rspamc.cxx
@@ -214,7 +214,7 @@ struct rspamc_command {
void (*command_output_func)(FILE *, ucl_object_t *obj);
};
-static const constexpr auto rspamc_commands = rspamd::array_of<rspamc_command>(
+static const constexpr auto rspamc_commands = rspamd::array_of(
rspamc_command{
.cmd = RSPAMC_COMMAND_SYMBOLS,
.name = "symbols",
diff --git a/src/libserver/html/html_tag_defs.hxx b/src/libserver/html/html_tag_defs.hxx
index 7e6cc9bf6..812ec2021 100644
--- a/src/libserver/html/html_tag_defs.hxx
+++ b/src/libserver/html/html_tag_defs.hxx
@@ -33,7 +33,7 @@ struct html_tag_def {
#define TAG_DEF(id, name, flags) html_tag_def{(name), (id), (flags)}
-static const auto html_tag_defs_array = rspamd::array_of<html_tag_def>(
+static const auto html_tag_defs_array = rspamd::array_of(
/* W3C defined elements */
TAG_DEF(Tag_A, "a", FL_HREF),
TAG_DEF(Tag_ABBR, "abbr", (CM_INLINE)),
diff --git a/src/libutil/cxx/util.hxx b/src/libutil/cxx/util.hxx
index e45f16008..5b2020bb6 100644
--- a/src/libutil/cxx/util.hxx
+++ b/src/libutil/cxx/util.hxx
@@ -72,9 +72,10 @@ struct smart_ptr_hash {
/*
* Creates std::array from a standard C style array with automatic size calculation
*/
-template <typename V, typename... T>
-constexpr auto array_of(T&&... t) -> std::array<V, sizeof...(T)>
+template <typename... Ts>
+constexpr auto array_of(Ts&&... t) -> std::array<typename std::decay_t<typename std::common_type_t<Ts...>>, sizeof...(Ts)>
{
+ using T = typename std::decay_t<typename std::common_type_t<Ts...>>;
return {{ std::forward<T>(t)... }};
}