2

我已经得到了一些我试图理解的 C++ 代码,但是有一部分我无法理解,即使我已经在 Internet 上搜索了它。我的问题是这意味着什么:

if (!(T() < x))

在结构中:

struct Positive_Check_Except
{
    template<typename T>
    static bool validate(const T& x)
    {
    if (!(T() < x))
        throw check_error(std::to_string(x) + " not positive exception");
        return true;
    }
};
4

1 回答 1

4

一步步:

  1. T()构造一个临时的、值初始化的 T 实例。
  2. T() < x比较x,这是一个T实例,与临时T()使用小于operator<
  3. !(T() < x)否定该比较的结果

它正在检查参数x是否大于 value-initialized T,如果不是这种情况则抛出异常。

它依赖于T内置类型(在这种情况下,值初始化为零初始化)或默认可构造用户定义类型(在这种情况下,值初始化调用默认构造函数)。它还需要一个operator<可以比较两个T实例并返回可转换为bool.

有关值初始化的更多信息,请参见此处

于 2013-08-18T09:16:57.617 回答