20    template<
class... Args> 
static void note(
Loc loc, format::format_string<Args...> fmt, Args&&... args) {                  std::cerr << loc << 
": note: "    << format::format(fmt, std::forward<Args>(args)...) << std::endl; }
 
   21    template<
class... Args>        
void warn(
Loc loc, format::format_string<Args...> fmt, Args&&... args) { ++num_warnings_; std::cerr << loc << 
": warning: " << format::format(fmt, std::forward<Args>(args)...) << std::endl; }
 
   22    template<
class... Args>        
void err (
Loc loc, format::format_string<Args...> fmt, Args&&... args) { ++num_errors_;   std::cerr << loc << 
": error: "   << format::format(fmt, std::forward<Args>(args)...) << std::endl; }
 
   30    unsigned num_errors_   = 0;
 
   31    unsigned num_warnings_ = 0;