从Visual Studio 2012中删除了群集调试选项.那么有没有办法在VS2012中调试MPI应用程序?
我有一个std::set<std::unique_ptr<T>>
,我想把它移到一个std::vector<std::unique_ptr<T>>
#include <set>
#include <vector>
#include <memory>
class C {};
int main()
{
std::set<std::unique_ptr<const C>> s;
std::vector<std::unique_ptr<const C>> v;
std::move(s.begin(), s.end(), std::back_inserter(v));
}
Run Code Online (Sandbox Code Playgroud)
这会在VS2017上出现以下错误:
错误C2280:'std :: unique_ptr> :: unique_ptr(const std :: unique_ptr <_Ty,std :: default_delete <_Ty >>&)':尝试引用已删除的函数
我们不能将迭代器移动到非const变量std::set
吗?什么可以解决这个问题?
我可以访问null shared_ptr对象的成员函数:
#include <memory>
#include <iostream>
class A
{
public:
int getNum() {return 1234;}
};
int main()
{
std::shared_ptr<A> pA(nullptr);
std::cout << pA->getNum() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
当我期待一个例外时返回1234.同样的结果发生了
std::shared_ptr<A> pA();
Run Code Online (Sandbox Code Playgroud)
要么
std::shared_ptr<A> pA();
pA.reset();
Run Code Online (Sandbox Code Playgroud)
这真的是预期的行为吗?如果是corect shared_ptr defination在成员函数调用的情况下抛出异常是什么?
使用VS2010.