alsk/src/alsk/impl/boneimplbase.h

41 lines
943 B
C++

#ifndef ALSK_ALSK_IMPL_BONEIMPLBASE_H
#define ALSK_ALSK_IMPL_BONEIMPLBASE_H
#include <functional>
#include "execute.h"
#include "tags.h"
#include "../utility.h"
namespace alsk {
template<typename, typename, typename, typename> struct BoneImplBase;
template<
template<typename...> class Bone,
typename R, typename... Args, typename... Tasks,
typename Tag_, typename Executor_, typename State_
>
struct BoneImplBase<Bone<R(Args...), Tasks...>, Tag_, Executor_, State_> {
using Signature = R(Args...);
using Skeleton = Bone<Signature, Tasks...>;
using Tag = Tag_;
using Executor = Executor_;
using ExecutorInfo = typename std::decay_t<Executor_>::Info;
using State = State_;
using StateRef = std::reference_wrapper<State>;
using Return = RealType<R, typename Skeleton::Packs>;
ExecutorInfo executorInfo;
constexpr BoneImplBase() noexcept {}
std::size_t id = 0;
};
}
#endif