So I was wondering how concepts lite could be implemented in the language. After some digging in boost/concept's headers I came across this struct:
template <class Model>
struct user_requirements
{
~user_requirements() { ((Model*)0)->~Model(); }
}
I thought that calling a member function through a null pointer is undefined behavior. Even if the destructor doesn't use any member variables, should this be relied on?