C ++, как предотвратить вызов метода более одного во время компиляции? - PullRequest
1 голос
/ 05 апреля 2020

У меня есть метод, и я хочу, чтобы пользователь, наконец, вызвал его во время компиляции. В настоящее время у меня есть правильная реализация, но это полезно для выполнения во время выполнения.

Есть ли чистый способ проверки этой проблемы (только один раз вызов) во время компиляции?

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!");
    }
}

Заранее спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

Есть ли чистый способ проверки этой проблемы (только один раз вызов) во время компиляции?

Нет.

Определение, сколько раз (или вообще) set_logging_type() вызов эквивалентен проблеме остановки и, следовательно, неразрешим (в общем).

...