11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
17PROMEKI_NAMESPACE_BEGIN
63 ~OnceFlag() =
default;
65 OnceFlag(
const OnceFlag &) =
delete;
66 OnceFlag &operator=(
const OnceFlag &) =
delete;
67 OnceFlag(OnceFlag &&) =
delete;
68 OnceFlag &operator=(OnceFlag &&) =
delete;
71 template <
typename Callable,
typename... Args>
friend void callOnce(OnceFlag &, Callable &&, Args &&...);
95template <
typename Callable,
typename... Args>
void callOnce(OnceFlag &flag, Callable &&callable, Args &&...args) {
96 std::call_once(flag._flag, std::forward<Callable>(callable), std::forward<Args>(args)...);