小编Jan*_*oma的帖子

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

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

BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));
Run Code Online (Sandbox Code Playgroud)

然而,对于一些其他类我想断言类型并没有默认构造函数.有办法做到这一点吗?

更新:对所有那些标记问题重复或已经回答的超级专家没有阅读它:我在第一段中说明我已经使用boost概念检查类是默认构造的(这是假设的问题)是重复的).我还明确声明我不能使用C++ 11,因此我无法使用type_traits.所以,可能有人请点我到特定部分我的问题是"已经回答了"?因为我还没有找到它.

c++ boost c++03

9
推荐指数
1
解决办法
301
查看次数

擦除`std :: list`的`end()`的行为是什么?

我需要std::list在找到它之后从中删除一个元素std::find.std::list::erase使用end()列表调用的行为是什么?我的情况是这样的:

std::list<T> mylist;
T value;
std::list::iterator it = std::find(mylist.begin(), mylist.end(), value);
std::list::iterator next = mylist.erase(it);
Run Code Online (Sandbox Code Playgroud)

cplusplus.com说:

如果position(或range)有效,则函数永远不会抛出异常(无抛出保证).否则,它会导致未定义的行为.

但我不知道的是end()那里是否有效.

c++ iterator stl

8
推荐指数
2
解决办法
1673
查看次数

标签 统计

c++ ×2

boost ×1

c++03 ×1

iterator ×1

stl ×1