summaryrefslogtreecommitdiff
path: root/utils/null_traits.h
blob: 7b2d32d096b93dc85a0763119d8761041cc67a58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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