9

首先,请注意我使用的是 C++03(并且 C++11 不是一个选项)。我正在使用 boost 概念来检查某个类是否可以默认构造:

BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));

但是,对于其他一些类,我想断言该类型没有默认构造函数。有没有办法做到这一点?

更新:致所有那些将问题标记为重复或已经回答但未阅读的超级专家:我在第一段中声明我已经使用 boost 概念来检查类是否可默认构造(这是本应提出的问题作为副本)。我还明确声明我不能使用 C++11,因此我无法使用type_traits。那么,有人可以指出我的问题“已经回答”的具体部分?因为我还没有找到。

4

1 回答 1

2

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

不那么令人失望的是:你不是想倒着使用这个工具吗?

通常,您编写的代码需要具有一定数量特征的类型,例如构造函数、对该类型进行操作的函数等。我无法想象您会编写需要缺少特定功能的类型的代码的情况。

您似乎不想进行面向概念的编程,而是要强制执行编码风格。这不是适合它的工具。

于 2013-06-06T16:41:42.200 回答