首先,请注意我使用的是 C++03(C++11 不是一个选项)。我正在使用 boost 概念来检查某个类是否可默认构造:
BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));
但是,对于其他一些类,我想断言该类型不具有默认构造函数。有办法做到这一点吗?
更新:致所有那些将问题标记为重复或已回答但未阅读的 super 专家:我在第一段中声明我已经使用 boost 概念来检查类是否为默认类-可构造的(这是应该重复的问题)。我还明确声明我不能使用 C++11,因此 type_traits
对我不可用。那么,有人可以指出我的问题“已经回答”的具体部分吗?因为我还没有找到它。
最佳答案
令人失望的一点是,不,这在 boost 概念检查中是不可能的。
不太令人失望的一点是:您不是在尝试反向使用此工具吗?
通常,您编写的代码需要具有一定数量特征的类型,例如构造函数、操作该类型的函数等。 我无法想象您会编写需要缺少特定功能的类型的代码。
您似乎不想进行面向概念的编程,而是想强制执行编码风格。 这不是适合它的工具。
关于c++ - 我可以检查一个类*不是*默认可构造的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966615/