diff --git a/src/emu/input.h b/src/emu/input.h index 78383e68ae9..dc76a4a0adb 100644 --- a/src/emu/input.h +++ b/src/emu/input.h @@ -24,6 +24,7 @@ #include #include #include +#include //************************************************************************** @@ -433,14 +434,8 @@ class input_seq { public: // construction/destruction - constexpr input_seq() noexcept - { - reset(); - } - template constexpr input_seq(input_code code_0, T... code_n) noexcept - { - set(code_0, code_n...); - } + constexpr input_seq() noexcept : input_seq(std::make_index_sequence::value>()) { } + template constexpr input_seq(input_code code_0, T... code_n) noexcept : input_seq(std::make_index_sequence::value - sizeof...(T) - 1>(), code_0, code_n...) { } constexpr input_seq(const input_seq &rhs) noexcept = default; // operators @@ -478,6 +473,10 @@ public: static const input_seq empty_seq; private: + static constexpr input_code get_end_code(size_t) noexcept { return end_code; } + + template constexpr input_seq(std::integer_sequence, T... code) noexcept : m_code({ code..., get_end_code(N)... }) { } + template void set() noexcept { std::fill(std::next(m_code.begin(), N), m_code.end(), end_code);