gpt4 book ai didi

c++ - 为什么 is_default_constructible::value 在同一类范围内失败

转载 作者:可可西里 更新时间:2023-11-01 18:26:12 26 4
gpt4 key购买 nike

以下工作正常:

struct X { };  // OK
static_assert(std::is_default_constructible<X>::value, "Error");

以下断言编译失败:

struct X { static_assert(std::is_default_constructible<X>::value, "Error"); };  // Fails

为什么类里面的static_assert会失败?


Qn:std::is_default_constructible 是否应该对于具有 private 构造函数的类失败,如以下所述:
std::is_default_constructible<T> error, if constructor is private

最佳答案

documentation pagestd::is_default_constructible<T> :

T shall be a complete type, (possibly cv-qualified) void, or an array of unknown bound. Otherwise, the behavior is undefined.

因为你在你的类(class),类型还没有完全定义,我想这就是差异的原因。


至于附带问题,这个特征似乎是基于 std::is_constructible 这似乎意味着如果变量定义

T obj();

well formed成员常量 value等于 true .在所有其他情况下,valuefalse .

所以我对此的理解以及我基于坦率的名称的语义直觉会说,如果默认构造函数是私有(private)的,它应该会失败。

关于c++ - 为什么 is_default_constructible<Class>::value 在同一类范围内失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41342671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com