首先,请注意我使用的是C++ 03(而C++ 11不是一个选项).我正在使用boost概念来检查某个类是否可以默认构造:
BOOST_CONCEPT_ASSERT((boost::DefaultConstructible<my_class>));
Run Code Online (Sandbox Code Playgroud)
然而,对于一些其他类我想断言类型并没有默认构造函数.有办法做到这一点吗?
更新:对所有那些标记问题重复或已经回答的超级专家没有阅读它:我在第一段中说明我已经使用boost概念检查类是默认构造的(这是假设的问题)是重复的).我还明确声明我不能使用C++ 11,因此我无法使用type_traits.所以,可能有人请点我到特定部分我的问题是"已经回答了"?因为我还没有找到它.
我需要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)
如果position(或range)有效,则函数永远不会抛出异常(无抛出保证).否则,它会导致未定义的行为.
但我不知道的是end()那里是否有效.