Skip to content

编译错误的核心原因是:exec.execute() 内部实现要求传入的函数对象可拷贝(例如 MSVC 的 std::function 底层实现会尝试拷贝),但你的 lambda 通过移动捕获了 move‑only 的 handler(以及可能 move‑only 的 func),导致 lambda 的拷贝构造函数被隐式删除。 #480

Description

@shijinghai

[ 57%]: cache compiling.release build.gens\hikyuu\windows\unity_build\unity_group_strategy.cpp
error: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(851,51): error: call to implicitly-deleted copy constructor of '(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17)'
851 | explicit _Func_impl_no_alloc(_Other&& _Val) : _Callee(_STD forward<_Other>(_Val)) {}
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(839,28): note: in instantiation of function template specialization 'std::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), void>::_Func_impl_no_alloc<const (lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17) &, 0>' requested here
839 | ::new (_Guard._Result) _Ty(_STD forward<_Types>(_Args)...);
| ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(858,25): note: in instantiation of function template specialization 'std::_Global_new<std::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), void>, const (lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17) &>' requested here
858 | return _STD _Global_new<_Func_impl_no_alloc>(_Callee);
| ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(851,14): note: in instantiation of member function 'std::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), void>::_Copy' requested here
851 | explicit _Func_impl_no_alloc(_Other&& _Val) : _Callee(_STD forward<_Other>(_Val)) {}
| ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(839,28): note: in instantiation of function template specialization 'std::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), void>::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), 0>' requested here
839 | ::new (_Guard._Result) _Ty(_STD forward<_Types>(_Args)...);
| ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\functional(964,23): note: in instantiation of function template specialization 'std::_Global_new<std::_Func_impl_no_alloc<(lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17), void>, (lambda at hikyuu_cpp/hikyuu/utilities/thread/algorithm.h:763:17)>' requested here
964 | _Set(_STD _Global_new<_Impl>(_STD forward<_Fx>(_Val)));

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions