@@ -44,7 +44,7 @@ template <> struct result_holder<void> {
4444
4545template <class FieldAccessor ,
4646 class Result = decltype (
47- static_cast <FieldAccessor *>(nullptr )->visit (int32_cref()))>
47+ std::declval <FieldAccessor *>()->visit (int32_cref()))>
4848class field_accessor_adaptor : public field_instruction_visitor,
4949 private result_holder<Result> {
5050 FieldAccessor &accssor_;
@@ -157,7 +157,7 @@ class field_accessor_adaptor : public field_instruction_visitor,
157157
158158template <class FieldMutator ,
159159 class Result = decltype (
160- static_cast <FieldMutator *>(nullptr )->visit (int32_mref()))>
160+ std::declval <FieldMutator *>()->visit (int32_mref()))>
161161class field_mutator_adaptor : public field_instruction_visitor,
162162 private result_holder<Result> {
163163 allocator *alloc_;
@@ -291,7 +291,7 @@ inline void field_mref::accept_mutator(FieldMutator &mutator) const {
291291}
292292
293293template <typename T>
294- inline decltype (static_cast <T *>(nullptr )->visit(int32_cref()))
294+ inline decltype (std::declval <T *>()->visit(int32_cref()))
295295apply_accessor(T &accessor, field_cref v) {
296296 detail::field_accessor_adaptor<T> adaptor (accessor);
297297 v.instruction ()->accept (adaptor, const_cast <mfast::value_storage *>(
@@ -300,7 +300,7 @@ apply_accessor(T &accessor, field_cref v) {
300300}
301301
302302template <typename T>
303- inline decltype (static_cast <T *>(nullptr )->visit(int32_mref()))
303+ inline decltype (std::declval <T *>()->visit(int32_mref()))
304304apply_mutator(T &mutator, field_mref v) {
305305 detail::field_mutator_adaptor<T> adaptor (mutator, v.allocator ());
306306 v.instruction ()->accept (adaptor, field_mref_core_access::storage_of (v));
0 commit comments