{fmt}: always compile-time check format string in function

I am trying to create a custom error class, whose constructor creates error message by passing arguments to fmt::format(). I would prefer it to always compile-time check the format string against arguments, without me having to explicitly use FMT_STRING() each time I throw. Something like:

class Err : public std::exception 
    std::string m_text;
    template <typename S, typename... Args>
    Err(const S& format, Args&&... args) {
        m_text = fmt::format(FMT_STRING(format), args...);
    virtual const char* what() const noexcept {return m_text.c_str();}

// ------------------------ 

throw Err("Error {:d}", 10);     // works
throw Err("Error {:d}", "abc");  // cause Compile-time error

With the preceding code I get error on FMT_STRING() macro:

error C2326: 'Err::{ctor}::<lambda_1>::()::FMT_COMPILE_STRING::operator fmt::v7::basic_string_view<char>(void) const': function cannot access 'format' 
message : see reference to function template instantiation 'Err::Err<char[11],int>(const S (&),int &&)' being compiled with [ S=char [11] ]

I have very little experience with template programming. How to have make this always compile-time check the format string without explicitly using FMT_STRING() every time?