@@ -44,7 +44,7 @@ template <> struct result_holder<void> {
44
44
45
45
template <class FieldAccessor ,
46
46
class Result = decltype (
47
- static_cast <FieldAccessor *>(nullptr )->visit (int32_cref()))>
47
+ std::declval <FieldAccessor *>()->visit (int32_cref()))>
48
48
class field_accessor_adaptor : public field_instruction_visitor,
49
49
private result_holder<Result> {
50
50
FieldAccessor &accssor_;
@@ -157,7 +157,7 @@ class field_accessor_adaptor : public field_instruction_visitor,
157
157
158
158
template <class FieldMutator ,
159
159
class Result = decltype (
160
- static_cast <FieldMutator *>(nullptr )->visit (int32_mref()))>
160
+ std::declval <FieldMutator *>()->visit (int32_mref()))>
161
161
class field_mutator_adaptor : public field_instruction_visitor,
162
162
private result_holder<Result> {
163
163
allocator *alloc_;
@@ -291,7 +291,7 @@ inline void field_mref::accept_mutator(FieldMutator &mutator) const {
291
291
}
292
292
293
293
template <typename T>
294
- inline decltype (static_cast <T *>(nullptr )->visit(int32_cref()))
294
+ inline decltype (std::declval <T *>()->visit(int32_cref()))
295
295
apply_accessor(T &accessor, field_cref v) {
296
296
detail::field_accessor_adaptor<T> adaptor (accessor);
297
297
v.instruction ()->accept (adaptor, const_cast <mfast::value_storage *>(
@@ -300,7 +300,7 @@ apply_accessor(T &accessor, field_cref v) {
300
300
}
301
301
302
302
template <typename T>
303
- inline decltype (static_cast <T *>(nullptr )->visit(int32_mref()))
303
+ inline decltype (std::declval <T *>()->visit(int32_mref()))
304
304
apply_mutator(T &mutator, field_mref v) {
305
305
detail::field_mutator_adaptor<T> adaptor (mutator, v.allocator ());
306
306
v.instruction ()->accept (adaptor, field_mref_core_access::storage_of (v));
0 commit comments