考虑以下功能:

void checkPlayerCounter() {
    if (playerCounter != consts::numberOfPlayers) {
        throw std::runtime_error("Detected " + std::to_string(playerCounter)
          + " player instead of " + std::to_string(consts::numberOfPlayers));
    }
}

该函数可能会抛出,并且出于可读性考虑,我想在头文件中的函数声明中强调这一点。我怎样才能做到这一点?

我正在寻找类似的东西:
void checkPlayerCounter() may throw;

最佳答案

您可以显式使用noexcept(false)。在您建议的位置:

void checkPlayerCounter() noexcept(false);

不幸的是,没有办法避免使用noexcept的双重否定。另一个选择是评论:
void checkPlayerCounter(); // may throw

也就是说,除非另有说明,否则读取声明的任何人都应始终假定该函数可以抛出。

10-05 20:01