I'm using visual studio 2019 with it's clang-cl:
[1/4] C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\Llvm\bin\clang-cl.exe /nologo -TP -DBUILDING_LIB_CS_SIGNAL -DCsSignal_EXPORTS -I. -I..\..\..\ -I..\..\..\src -m32 -fdiagnostics-absolute-paths /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG -std:c++17 /showIncludes /FoCMakeFiles\CsSignal.dir\src\cs_signal.cpp.obj /FdCMakeFiles\CsSignal.dir\ -c ..\..\..\src\cs_signal.cpp FAILED: CMakeFiles/CsSignal.dir/src/cs_signal.cpp.obj C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\Llvm\bin\clang-cl.exe /nologo -TP -DBUILDING_LIB_CS_SIGNAL -DCsSignal_EXPORTS -I. -I..\..\..\ -I..\..\..\src -m32 -fdiagnostics-absolute-paths /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG -std:c++17 /showIncludes /FoCMakeFiles\CsSignal.dir\src\cs_signal.cpp.obj /FdCMakeFiles\CsSignal.dir\ -c ..\..\..\src\cs_signal.cpp In file included from ..\..\..\src\cs_signal.cpp:19: In file included from ..\..\..\src/cs_signal.h:33: In file included from ..\..\..\src/cs_slot.h:29: C:\Users\fradd\Downloads\cs_signal-master\src\rcu_guarded.hpp(143,7): error : no matching constructor for initialization of 'libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' : m_obj(std::forward<Us>(data)...) ^ ~~~~~~~~~~~~~~~~~~~~~~ C:\Users\fradd\Downloads\cs_signal-master\src\cs_signal.h(83,22): note: in instantiation of function template specialization 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >::rcu_guarded<libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > > &>' requested here class LIB_SIG_EXPORT SignalBase ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(75,16): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'const std::allocator<CsSignal::SignalBase::ConnectStruct>' for 1st argument explicit rcu_list(const Alloc &alloc); ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(77,7): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'const libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' for 1st argument rcu_list(const rcu_list &) = delete; ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(78,7): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' for 1st argument rcu_list(rcu_list &&) = delete; ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(74,7): note: candidate constructor not viable: requires 0 arguments, but 1 was provided rcu_list(); ^ 1 error generated. [2/4] C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\Llvm\bin\clang-cl.exe /nologo -TP -DBUILDING_LIB_CS_SIGNAL -DCsSignal_EXPORTS -I. -I..\..\..\ -I..\..\..\src -m32 -fdiagnostics-absolute-paths /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG -std:c++17 /showIncludes /FoCMakeFiles\CsSignal.dir\src\cs_slot.cpp.obj /FdCMakeFiles\CsSignal.dir\ -c ..\..\..\src\cs_slot.cpp FAILED: CMakeFiles/CsSignal.dir/src/cs_slot.cpp.obj C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\Llvm\bin\clang-cl.exe /nologo -TP -DBUILDING_LIB_CS_SIGNAL -DCsSignal_EXPORTS -I. -I..\..\..\ -I..\..\..\src -m32 -fdiagnostics-absolute-paths /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG -std:c++17 /showIncludes /FoCMakeFiles\CsSignal.dir\src\cs_slot.cpp.obj /FdCMakeFiles\CsSignal.dir\ -c ..\..\..\src\cs_slot.cpp In file included from ..\..\..\src\cs_slot.cpp:19: In file included from ..\..\..\src/cs_signal.h:33: In file included from ..\..\..\src/cs_slot.h:29: C:\Users\fradd\Downloads\cs_signal-master\src\rcu_guarded.hpp(143,7): error : no matching constructor for initialization of 'libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' : m_obj(std::forward<Us>(data)...) ^ ~~~~~~~~~~~~~~~~~~~~~~ C:\Users\fradd\Downloads\cs_signal-master\src\cs_signal.h(83,22): note: in instantiation of function template specialization 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >::rcu_guarded<libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > > &>' requested here class LIB_SIG_EXPORT SignalBase ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(75,16): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'const std::allocator<CsSignal::SignalBase::ConnectStruct>' for 1st argument explicit rcu_list(const Alloc &alloc); ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(77,7): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'const libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' for 1st argument rcu_list(const rcu_list &) = delete; ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(78,7): note: candidate constructor not viable: no known conversion from 'libguarded::rcu_guarded<libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> > >' to 'libguarded::rcu_list<CsSignal::SignalBase::ConnectStruct, std::mutex, std::allocator<CsSignal::SignalBase::ConnectStruct> >' for 1st argument rcu_list(rcu_list &&) = delete; ^ C:\Users\fradd\Downloads\cs_signal-master\src\rcu_list.hpp(74,7): note: candidate constructor not viable: requires 0 arguments, but 1 was provided rcu_list(); ^ 1 error generated. ninja: build stopped: subcommand failed.