![](/img/trans.png)
[英]std::is_default_constructible<T> error, if constructor is private
[英]Can we assume std::is_default_constructible<T> and std::is_constructible<T> to be equal?
这里的问题很短:
std::is_default_constructible<T>
和std::is_constructible<T>
会给出相同的结果吗? 以及新概念std::default_initializable
和std::constructible_from
呢?
在创建模板化工厂或 emplace 函数时了解它们的区别可能很重要。
所以我终于开始阅读规范了。 这是我发现的:
20.15.4.3 is_default_constructible<T>
:
正如@Raymon Chen 在评论中指出的那样:恰好当is_constructible<T>
true
true
18.4.11 constructible_from<T>
:
是根据is_constructible<T>
定义的,但也提出了额外的要求destructible<T>
。
18.4.12 default_initializable<T>
:
根据constructible_from<T>
定义,但也要求T{}
格式正确。 定义类型 T 的变量也必须是可能的; 即语句T var{};
应该是良构的。
资料来源:N4861 工作草案,编程语言标准 C++
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.