diff --git a/3rdparty/compat_cpp14.h b/3rdparty/compat_cpp14.h new file mode 100644 index 00000000000..6f7ea71885a --- /dev/null +++ b/3rdparty/compat_cpp14.h @@ -0,0 +1,65 @@ +// Ville Voutilainen code from include/bits/range_access.h from libstdc++ + +#if defined(__GNUC__) && ((__GNUC__ == 5 && __GNUC_MINOR__ < 2) || (__GNUC__ == 4 && __GNUC_MINOR__ > 8)) + +template + inline constexpr auto + cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont)))-> decltype(std::begin(__cont)) + { return std::begin(__cont); } + +template + inline constexpr auto + cend(const _Container& __cont) noexcept(noexcept(std::end(__cont)))-> decltype(std::end(__cont)) + { return std::end(__cont); } + +template + inline auto + rbegin(_Container& __cont) -> decltype(__cont.rbegin()) + { return __cont.rbegin(); } + +template + inline auto + rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) + { return __cont.rbegin(); } + +template + inline auto + rend(_Container& __cont) -> decltype(__cont.rend()) + { return __cont.rend(); } + +template + inline auto + rend(const _Container& __cont) -> decltype(__cont.rend()) + { return __cont.rend(); } + +template + inline reverse_iterator<_Tp*> + rbegin(_Tp (&__arr)[_Nm]) + { return reverse_iterator<_Tp*>(__arr + _Nm); } + +template + inline reverse_iterator<_Tp*> + rend(_Tp (&__arr)[_Nm]) + { return reverse_iterator<_Tp*>(__arr); } + +template + inline reverse_iterator + rbegin(initializer_list<_Tp> __il) + { return reverse_iterator(__il.end()); } + +template + inline reverse_iterator + rend(initializer_list<_Tp> __il) + { return reverse_iterator(__il.begin()); } + +template + inline auto + crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) + { return std::rbegin(__cont); } + +template + inline auto + crend(const _Container& __cont) -> decltype(std::rend(__cont)) + { return std::rend(__cont); } + +#endif \ No newline at end of file diff --git a/scripts/src/osd/windows.lua b/scripts/src/osd/windows.lua index 50e19e8e71a..80360ac2ecb 100644 --- a/scripts/src/osd/windows.lua +++ b/scripts/src/osd/windows.lua @@ -217,6 +217,7 @@ project ("ocore_" .. _OPTIONS["osd"]) dofile("windows_cfg.lua") includedirs { + MAME_DIR .. "3rdparty", MAME_DIR .. "src/emu", MAME_DIR .. "src/osd", MAME_DIR .. "src/lib", diff --git a/src/emu/emu.h b/src/emu/emu.h index 0cf7b7c1384..afea75e477f 100644 --- a/src/emu/emu.h +++ b/src/emu/emu.h @@ -25,6 +25,8 @@ #include #include +#include "compat_cpp14.h" + // core emulator headers -- must be first #include "emucore.h" #include "eminline.h"