C ++ 20引入了显式(布尔),它在编译时有条件地选择是否使构造函数显式。
下面是我在这里找到的示例。
struct foo {
// Specify non-integral types (strings, floats, etc.) require explicit construction.
template <typename T>
explicit(!std::is_integral_v<T>) foo(T) {}
};
foo a = 123; // OK
foo b = "123"; // ERROR: explicit constructor is not a candidate (explicit specifier evaluates to true)
foo c {"123"}; // OK
有人可以告诉我explicit (bool)
除使用以外的其他用例std::is_integral
吗?
这不是一个正确的答案,但您也可以查看介绍它的论文的动机:wg21.link/p0892
—
N.
例如:它(与概念一起)将切断所需数量的基类的实现有条件地提供有条件明确的拷贝构造的3至0。
—
LF
tuple
该功能那样的条件显式构造函数变得容易得多。