Create SMT formulas with a type-safe C++11 domain-specific language