QOffsetStringArray: fix compilation error with ICC18

error: expression must have a constant value
  static constexpr const auto messages = qOffsetStringArray(

Change-Id: I80a6bf5b83f99a8325511ac8a14e0c9819e3d2b7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Mikhail Svetkin 2018-09-12 16:55:33 +02:00
parent f5bf8ca9c3
commit 6723155bc7
1 changed files with 6 additions and 9 deletions

View File

@ -84,10 +84,7 @@ struct StaticString
{
const char data[N];
static constexpr int size() noexcept
{
return N;
}
constexpr StaticString(const StaticString<N> &other) noexcept = default;
};
@ -111,11 +108,11 @@ QT_WARNING_PUSH
QT_WARNING_DISABLE_MSVC(4100) // The formal parameter is not referenced in the body of the function.
// The unreferenced parameter is ignored.
// It happens when 'rs' is StaticString<0>
template<int N1, typename T2>
static constexpr StaticString<N1 + T2::size()> concatenate(
const char (&ls)[N1], const T2 &rs) noexcept
template<int N1, int N2>
static constexpr StaticString<N1 + N2> concatenate(
const char (&ls)[N1], const StaticString<N2> &rs) noexcept
{
return {ls[I1]..., rs.data[I2]...};
return StaticString<N1 + N2>{ls[I1]..., rs.data[I2]...};
}
QT_WARNING_POP
};
@ -144,7 +141,7 @@ public:
template<int ... Ox>
constexpr QOffsetStringArray(const QtPrivate::StaticString<SizeString> &str,
QtPrivate::IndexesList<SizeString, Ox...>) noexcept
: m_string{str},
: m_string(str),
m_offsets{Ox...}
{ }