2025-01-06 17:12:58 -05:00
|
|
|
//
|
|
|
|
// EuropaTools
|
|
|
|
//
|
|
|
|
// (C) 2021-2025 modeco80 <lily.modeco80@protonmail.ch>
|
|
|
|
//
|
2025-01-07 18:02:27 -05:00
|
|
|
// SPDX-License-Identifier: MIT
|
2025-01-06 17:12:58 -05:00
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef EUROPA_UTIL_OVERLOADED_HPP
|
|
|
|
#define EUROPA_UTIL_OVERLOADED_HPP
|
|
|
|
|
|
|
|
namespace europa {
|
|
|
|
template <class... Ts>
|
|
|
|
struct overloaded : Ts... {
|
|
|
|
using Ts::operator()...;
|
|
|
|
};
|
|
|
|
|
|
|
|
// Suppposedly this isn't needed but the CTAD is required in this case
|
|
|
|
|
|
|
|
template <class... Ts>
|
|
|
|
overloaded(Ts...) -> overloaded<Ts...>;
|
|
|
|
} // namespace europa
|
|
|
|
|
|
|
|
#endif
|