#ifndef NULL_TRAITS_H #define NULL_TRAITS_H template <class V> struct null_traits { static V xnull; //TODO: maybe take out default null and make ppl explicitly define? they may be surprised that they need to when they include a header lib that uses null_traits }; // global bool is_null(V const& v) // definitely override this, and possibly set_null and is_null. that's the point. template <class V> V null_traits<V>::xnull; //TODO: are we getting single init of the static null object? template <class V> void set_null(V &v) { v=null_traits<V>::xnull; } template <class V> void is_null(V const& v) { return v==null_traits<V>::xnull; } #endif