std::min
Function transfer does not compile. I copied the libcpp declaration std::min
to my source file and it works.
What happened to the std version? The same thing happens with clang and gcc. Tested on godbolt: https://godbolt.org/g/zwRqUA
#include <thread>
#include <algorithm>
namespace mystd {
template <class _Tp> inline constexpr const _Tp&
mymin(const _Tp& __a, const _Tp& __b)
{
return std::min(__a, __b);
}
}
int main()
{
std::thread thr1(std::min<int>, 2, 3);
std::thread thr2(mystd::mymin<int>, 2, 3);
return 0;
}
Errors for clang and gcc:
[x86-64 clang 5.0.0 #1] error: no matching constructor for initialization of 'std::thread'
[x86-64 gcc 7.2 #1] error: no matching function for call to 'std::thread::thread(<unresolved overloaded function type>, int, int)'
[x86-64 gcc 7.2 #1] note: couldn't deduce template parameter '_Callable'
source
share