diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h
index c831ae3cc..6c914db2e 100644
--- a/include/pybind11/detail/common.h
+++ b/include/pybind11/detail/common.h
@@ -659,9 +659,9 @@ struct is_template_base_of_impl {
/// `is_template_base_of` is true if `struct T : Base {}` where U can be anything
template class Base, typename T>
#if !defined(_MSC_VER)
-using is_template_base_of = decltype(is_template_base_of_impl::check((remove_cv_t*)nullptr));
+using is_template_base_of = decltype(is_template_base_of_impl::check((intrinsic_t*)nullptr));
#else // MSVC2015 has trouble with decltype in template aliases
-struct is_template_base_of : decltype(is_template_base_of_impl::check((remove_cv_t*)nullptr)) { };
+struct is_template_base_of : decltype(is_template_base_of_impl::check((intrinsic_t*)nullptr)) { };
#endif
/// Check if T is an instantiation of the template `Class`. For example: