diff --git a/debug.hpp b/debug.hpp index 2e90f6cf..6a715362 100644 --- a/debug.hpp +++ b/debug.hpp @@ -283,6 +283,31 @@ void disable_fpe (void); /////////////////////////////////////////////////////////////////////////////// namespace debug { void init (void); + + + template + bool valid (const T&); + + + template class T, typename ...Args> + struct validator { + static bool is_valid (const T&); + }; + + + template class T, typename ...Args> + bool valid (const T &v) + { return validator::is_valid (v); } + + + template + void sanity (const T &t) + { CHECK (valid (t)); } + + + template class T, typename ...Args> + void sanity (const T &t) + { CHECK (valid (t)); } }