/* This file is part of the dynarmic project. * Copyright (c) 2018 MerryMage * SPDX-License-Identifier: 0BSD */ #pragma once #include #include #include #include #include #include #ifdef _MSC_VER #include #endif namespace Dynarmic::Common { template inline auto GenerateLookupTableFromList(Function f, mp::list) { #ifdef _MSC_VER using PairT = std::invoke_result_t>>; #else using PairT = std::common_type_t...>; #endif using MapT = mp::apply; static_assert(mp::is_instance_of_template_v); const std::initializer_list pair_array{f(Values{})...}; return MapT(pair_array.begin(), pair_array.end()); } } // namespace Dynarmic::Common