summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/addrmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/addrmap.h')
-rw-r--r--src/emu/addrmap.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h
index 1795f9808a5..229db15caa1 100644
--- a/src/emu/addrmap.h
+++ b/src/emu/addrmap.h
@@ -87,11 +87,13 @@ class address_map_entry
}
template <typename T, typename U>
- static std::enable_if_t<std::is_convertible<std::add_pointer_t<U>, std::add_pointer_t<T> >::value, T *> make_pointer(U &obj)
- { return &downcast<T &>(obj); }
- template <typename T, typename U>
- static std::enable_if_t<!std::is_convertible<std::add_pointer_t<U>, std::add_pointer_t<T> >::value, T *> make_pointer(U &obj)
- { return &dynamic_cast<T &>(obj); }
+ static T *make_pointer(U &obj)
+ {
+ if constexpr (std::is_convertible_v<std::add_pointer_t<U>, std::add_pointer_t<T> >)
+ return &downcast<T &>(obj);
+ else
+ return &dynamic_cast<T &>(obj);
+ }
template <typename T> static std::enable_if_t<emu::detail::is_device_implementation<T>::value, const char *> get_tag(T &obj) { return obj.tag(); }
template <typename T> static std::enable_if_t<emu::detail::is_device_interface<T>::value, const char *> get_tag(T &obj) { return obj.device().tag(); }