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

标签 c++ boost c++03

首先,请注意我使用的是 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/

相关文章:

c++ - 为什么在命令提示符下输入 3 时我的代码没有退出?

c++ - 从 std::string 读取时间作为 UTC 时间

c++ - 不确定我在 boost 日志中的线程 ID 是否正确?

boost - 在 Red Hat Linux 上安装 mapnik 失败

c++ - 在 C++ 中将 char 分配给 int 引用和 const int 引用

c++ - C++标准语法的成员声明

c++ - C++ 代码可以在 C++03 和 C++11 中都有效但做不同的事情吗?

c++ - 如何截断 XMM 寄存器中的浮点值

c++ - 什么是非推论上下文?

c++ - c++ 类的 objective-c 链接器错误