splash-damage / future-extensions

Unreal Engine plugin for async task programming
BSD 3-Clause "New" or "Revised" License
170 stars 26 forks source link

Error when packaging for Linux #2

Closed gustavomassa closed 4 years ago

gustavomassa commented 4 years ago
In file included from E:/Projects/Unreal/SurvivalGame/Source/SDFutureExtensions/Public\FutureExtensions.h:10:
ParallelExecutor.ExecuteActions:   E:\Projects\Unreal\SurvivalGame\Source\SDFutureExtensions\Public\ExpectedFuture.h(354,3): error: explicitly defaulted default constructor is implicitly deleted [-Werror,-Wdefaulted-function-deleted]
ParallelExecutor.ExecuteActions:                   TExpectedFuture() = default;
ParallelExecutor.ExecuteActions:                   ^
ParallelExecutor.ExecuteActions:   E:\Projects\Unreal\SurvivalGame\Source\SDFutureExtensions\Public\ExpectedFuture.h(341,32): note: default constructor of 'TExpectedFuture<void>' is implicitly deleted because base class 'SD::TExpectedFutureBase' has no default constructor
ParallelExecutor.ExecuteActions:           class TExpectedFuture<void> : public TExpectedFutureBase

Complaining about this constructor on line 354:

template <>
    class TExpectedFuture<void> : public TExpectedFutureBase
    {
    public:
        using ResultType = void;
        using ExpectedResultType = TExpected<void>;

        TExpectedFuture(TFuture<ExpectedResultType>&& Future, FGraphEventRef InPromiseCompletionEventRef,
                        const FutureExecutionDetails::FExecutionDetails& InExecutionDetails)
            : TExpectedFutureBase(InPromiseCompletionEventRef)
            , InternalFuture(MoveTemp(Future))
            , ExecutionDetails(InExecutionDetails)
        {}

        TExpectedFuture() = default; // Line 354
        TExpectedFuture(TExpectedFuture<void>&&) = default;

Adding a default constructor to TExpectedFutureBase fixed the error:

    class TExpectedFutureBase
    {
    public:
        TExpectedFutureBase(FGraphEventRef InPromiseCompletionEventRef)
            : PromiseCompletionEventRef(InPromiseCompletionEventRef)
        {
        }

        TExpectedFutureBase() = default;

    protected:
        FGraphEventRef PromiseCompletionEventRef;
    };
RR2DO2 commented 4 years ago

Has been fixed in 08dacca4d4a8b89aa15f7f870ea886d5b4c2ddc0