mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
Work around visual studio's lack of C++11 support.
This commit is contained in:
parent
9f6ad63b06
commit
11145541ea
@ -38,7 +38,9 @@ namespace dlib
|
||||
return f(a(indices-1)...);
|
||||
}
|
||||
|
||||
|
||||
// Visual studio, as of November 2017, doesn't support C++11 and can't compile this code.
|
||||
// So we write the terrible garbage in the #else for visual studio. When Visual Studio supports C++11 I'll update this #ifdef to use the C++11 code.
|
||||
#ifndef _MSC_VER
|
||||
template <size_t max_unpack>
|
||||
struct call_with_vect
|
||||
{
|
||||
@ -64,6 +66,20 @@ namespace dlib
|
||||
return f(disable_decay_to_scalar(a));
|
||||
}
|
||||
};
|
||||
#else
|
||||
template <size_t max_unpack>
|
||||
struct call_with_vect
|
||||
{
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), disable_decay_to_scalar(a)) {return f(disable_decay_to_scalar(a)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0)) { DLIB_CASSERT(a.size() == 1); return f(a(0)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0),a(1)) { DLIB_CASSERT(a.size() == 2); return f(a(0),a(1)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0), a(1), a(2)) { DLIB_CASSERT(a.size() == 3); return f(a(0), a(1),a(2)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0), a(1), a(2), a(3)) { DLIB_CASSERT(a.size() == 4); return f(a(0), a(1), a(2), a(3)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0), a(1), a(2), a(3), a(4)) { DLIB_CASSERT(a.size() == 5); return f(a(0), a(1), a(2), a(3), a(4)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0), a(1), a(2), a(3), a(4), a(5)) { DLIB_CASSERT(a.size() == 6); return f(a(0), a(1), a(2), a(3), a(4), a(5)); }
|
||||
template <typename T> static auto go(T&& f, const matrix<double, 0, 1>& a) -> decltype(std::forward<T>(f), a(0), a(1), a(2), a(3), a(4), a(5), a(6)) { DLIB_CASSERT(a.size() == 7); return f(a(0), a(1), a(2), a(3), a(4), a(5), a(6)); }
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user