我可以检查一个类是不是默认可构造的吗?

Can I check that a class is *not* default constructible?

本文关键字:默认 是不是 检查 一个 我可以      更新时间:2023-10-16

首先,请注意我使用的是c++ 03(不支持c++ 11)。我使用boost概念来检查某个类是否默认可构造:

BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));
然而,对于其他一些类,我想断言类型没有有默认构造函数。有办法做到这一点吗?

更新:对于所有那些在没有阅读的情况下将问题标记为重复或已经回答的超级专家:我在第一段中声明,我已经使用boost概念来检查类是否默认可构造(这应该是一个重复的问题)。我还明确指出,我不能使用c++ 11,所以type_traits对我来说是不可用的。所以,有人能指出我的问题"已经回答"的具体部分吗?因为我还没找到

令人失望的是,不,这是不可能的boost概念检查。

不那么令人失望的一点是:你不是在试图反向使用这个工具吗?

通常,您编写的代码需要一个具有一定数量特性的类型,例如构造函数、操作该类型的函数等等。我无法想象你编写的代码需要一个缺乏特定功能的类型。

你似乎不想做面向概念的编程,但强制编码风格。这不是合适的工具