Почему бы просто не иметь класс с пустыми определениями?
class named_mutex
{
public:
named_mutex(create_only_t, const char *) {}
named_mutex(open_or_create_t, const char *) {}
named_mutex(open_only_t, const char *) {}
~named_mutex() {}
void unlock() {}
void lock() {}
bool try_lock() {}
bool timed_lock(const boost::posix_time::ptime &) {}
static bool remove(const char *) {}
};
Используйте экземпляр этого как ваш named_mutex
, и он как будто никогда не существовал.