C++ 如何防止在编译时调用多个方法?

C++ how to prevent invoking a method more than one in Compile-time?

我有一个方法,我想强制用户在编译时最后一次调用它。 目前我有一个正确的实现,但它对运行时执行很有用。

有没有一种干净的方法可以在编译时检查这个问题(只需调用一次)?

static void set_logging_type(LOG_TYPE type)
{
    static bool select_type_done{false};

    if (!select_type_done)
    {
        log_type = type;
        select_type_done = true;
        return;
    }
    else
    {
        throw std::runtime_error("logging type is selected before!");
    }
}

提前致谢。

Is there a clean way to checking this problem (just one time calling) in compile-time?

没有

确定set_logging_type()被调用了多少次(或是否被调用)等同于halting problem,因此不可判定(通常)。