#pragma once namespace jvalidate::detail { template struct DerefProxy { T & operator*() { return value; } T const & operator*() const { return value; } T * operator->() { return &value; } T const * operator->() const { return &value; } T value; }; }