jrmadsen / PTL

Parallel Tasking Library (PTL) - Lightweight C++11 mutilthreading tasking system featuring thread-pool, task-groups, and lock-free task queue
MIT License
43 stars 14 forks source link

Windows min max macro imported unexpectedly #32

Open shangjiaxuan opened 2 years ago

shangjiaxuan commented 2 years ago

Describe the bug Building Geant4 version on windows imports min max macros from windows.h when using 2021.6.0 version of tbb on visual studio 16.11.1, which breaks code in PTL that uses std::min and std::max (e.g. in ThreadPool.hh line 468 in function void ThreadPool::execute_on_all_threads(FuncT&& _func)).

To Reproduce Description contains reproduction details.

Expected behavior Normal compilation.

Screenshots non

Putting this block (or NOMINMAX) somewhere in the code should solve the problem. Still locating the include location.

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#endif
jrmadsen commented 2 years ago

Ugh, yeah I’ve run into this problem several times in other projects. I’ll get it fixed and make an appveyor script for CI on windows

shangjiaxuan commented 2 years ago

Located the position to be from the tbb include lines using static_asserts. WIN32_LEAN_AND_MEAN doesn't work, but NOMINMAX works.