Actually the error messages are much nicer than you've thought. Here's an example:
$ circle taco4.cxx -I /home/sean/projects/opensource/taco/include -M /home/sean/projects/opensource/taco/Debug/lib/libtaco.so -filetype=ll
Creating compute_1 function
macro expansion: taco4.cxx:428:3
error in expansion of macro auto call_taco(const char*, const options_t&)
code injection: taco4.cxx:420:6
error thrown in @expression("c")
error: @expression:1:1
undeclared identifier 'c'
A well-defined meta language would probably have way better error messages than an accidentally-discovered language based on insane template hacks.