diff --git a/qse/include/qse/si/Thread.hpp b/qse/include/qse/si/Thread.hpp index 78484cbe..3635b6bc 100644 --- a/qse/include/qse/si/Thread.hpp +++ b/qse/include/qse/si/Thread.hpp @@ -31,7 +31,7 @@ #include #include -//#include +#include QSE_BEGIN_NAMESPACE(QSE) @@ -81,7 +81,25 @@ public: this->x_func = std::bind(f); return qse_thr_start (this, (qse_thr_rtn_t)Thread::call_lambda, flags); } - std::function x_func; + +#endif + +#if (__cplusplus >= 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1900) //C++11 or later + using lfunc_t = std::function; + + static int call_lambda (QSE::Thread* thr) + { + return thr->x_func (thr); + } + + int start (lfunc_t f, int flags) + { + this->x_func = std::move(f); + return qse_thr_start (this, (qse_thr_rtn_t)Thread::call_lambda, flags); + } + + //std::function x_func; + lfunc_t x_func; #endif virtual int start (int flags = 0) QSE_CPP_NOEXCEPT; diff --git a/qse/lib/si/Socket.cpp b/qse/lib/si/Socket.cpp index 17be56b2..9d8c7dd6 100644 --- a/qse/lib/si/Socket.cpp +++ b/qse/lib/si/Socket.cpp @@ -40,7 +40,7 @@ QSE_BEGIN_NAMESPACE(QSE) ///////////////////////////////// #include "../cmn/syserr.h" -IMPLEMENT_SYSERR_TO_ERRNUM (Socket::ErrorCode, Socket::ErrorCode::) +IMPLEMENT_SYSERR_TO_ERRNUM (Socket::ErrorCode, Socket::) Socket::Socket () QSE_CPP_NOEXCEPT: handle(QSE_INVALID_SCKHND), errcode(E_ENOERR) {