c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
假设我有一个主类SomeManager来跟踪另一个类SomeClass的实例.当构造SomeClass时,它调用SomeManager的方法将一个指针传递给它.然后SomeManager获取该指针并将其推入向量. SomeClass的析构函数调用SomeManager的另一个函数,它从向量中删除它的指针. 所以,我的问题是.当SomeClass的实例通过移动运算符或构造函数移动时.这是地址更改,我
是否需要覆盖和noexcept的顺序? class Base { public: virtual void foo() {} }; class Derived : public Base { public: // virtual void foo() override {} // Ok // virtual void foo() noexcept {} // Ok // virt
这是一个带有默认参数的函数声明: void func(int a = 1,int b = 1,...,int x = 1) 如何避免调用func(1,1,…,2) 当我只想设置x参数时,其余的用于以前的默认参数? 例如,就像func(paramx = 2,其他=默认) 你不能把它作为自然语言的一部分. C只允许您默认任何剩余的参数,并且它不支持调用站点的命名参数(参见Pascal和VBA). 另一
对于参数类C,我想总是得到“原始”类型,而不管指针,const或引用修饰符. template<typename __T> class C { public: typedef std::some_magic_remove_all<__T>::type T; } int main() { C<some_type>::type a; } 例如,对于some_type等于: > int
我有两种输入情况,我想使用相同的方法. 第一种情况是给定的参数是一个std :: string,包含三个数字,我需要转换为int: std::string pointLine = "1 1 1"; 第二种情况是给定参数是一个std :: string,其中包含三个“not yet double”,我需要将其转换为双精度数: std::string pointLine = "1.23 23.456
我正在寻找在我的简单c应用程序中使用pcre2,(我正在使用vs2015). (我正在看各种正则表达式库,一般的感觉是pcre / pcre2是最灵活的) 首先我从官方位置(http://sourceforge.net/projects/pcre/files/pcre2/10.20/)下载了pcre2并创建了一个非常简单的例子. #define PCRE2_CODE_UNIT_WIDTH 8 #i
当我没有用户定义的析构函数时,编译完全正常的代码(在GCC 4.7.2上),即使提供了一个空的用户定义的析构函数,也会产生错误: #include <memory> class Test { std::unique_ptr<int> val; }; template <typename Type> class B { public: //destructor: // if I
我一直在试着弄清楚如何让一个类有一个很好的干净的公共接口来执行回调机制的注册.回调可以是C 11 lambdas,std :: function< void(Type1,Type2)>,std :: function< void(Type2)>,std :: function< void()>,或std的结果::绑定(). 这个接口的关键是该类的用户只需要知道一个公共接口,它接受用户可能抛出的几乎
我有一个关于如何正确使用新的C 11 std :: function变量的问题.我已经看过几个搜索互联网的例子,但它们似乎并没有涵盖我正在考虑的用例.以这个最小的例子为例,其中函数fdiff是在numeric.hxx中定义的有限前向差分算法的实现(这不是问题,我只是想给出一个上下文的原因,为什么我想要任意函数和传递它). #include <functional> #include <iostre
考虑以下功能: template<typename... List> inline unsigned int myFunction(const List&... list) { return /* SOMETHING */; } 为了返回所有参数的sizeof之和,最简单的事情是放入/ * SOMETHING * /是什么? 例如,myFunction(int,char,double)
介绍 问题产生于对条件接口的需求.可能是因为我陷入了XY问题,但是(底线)我最终需要一个共享指针(基于运行时选择)管理或不管理(拥有或不拥有)资源. 到目前为止工作 以下是对非拥有共享指针的一些想法 >使用新的展示位置,例如: struct MyStruct {}; MyStruct ms1; std::shared_ptr<MyStruct> sp(new(&ms1) MyStruct);
我有以下代码片段. #include <iostream> #include <functional> using namespace std; struct A { A() { cout << "A "; data = 1; } A(const A& a) { cout << "cA "; data = a.data; } ~A() { cout << " dA"; }
参见英文答案 > boost::thread data structure sizes on the ridiculous side?                                    4个 而不是sizeof(std :: atomic< bool>)== 1? 可以通过简单的std :: atomic< bool>来实现互斥锁,因此我认为互斥锁的大小可以小到那个,或者可能是
我有这个代码,它不编译,这是预期的. 这是错误:rvalue引用不能绑定到左值 class SomeData { public: vector<int> data; SomeData() { cout << "SomeData ctor" << endl; data.push_back(1); data.push_back(
我正在尝试编写一个简单的通用函数来迭代容器元素.每个元素都转换为std :: string(无论如何)并存储在另一个地方.基本版本是微不足道的: template<class Container> void ContainerWork(const Container& c) { for(const auto& elem : c) { /* convert to string
场景: 我正在使用旧C库中的方法,该方法返回一个指向SomeClass的原始指针,其中SomeClass是库头中的导出类,例如SomeClass.h 以下是我使用的LibraryMethod的签名: SomeClass* LibraryMethod(); 我没有权限更改库.我只使用二进制&公共标题,这是一个典型的场景. 我不想在我的代码中使用原始指针.因此,我使用库API在我的部分代码中有一个sh
以下代码无法在Visual C 2008和2010上编译: #include <memory> struct A {}; std::auto_ptr<A> foo() { return std::auto_ptr<A>(new A); } const std::auto_ptr<A> bar() { return std::auto_ptr<A>(new A); } int
我有这个向量: using namespace std; vector< pair<short, string> > vec = {}; 我想知道是否存在一对< a,b>用b == X. 我知道std :: find from< algorithm>但不知道如何在这里应用它. 我应该写自己的功能吗? bool is_in_vec(X) { for (auto& e : vec)
我使用std :: map并获得我可以使用的单个元素: http://www.cplusplus.com/reference/map/map/ > iterator find (const key_type& k); > mapped_type& at (const key_type& k); > mapped_type& operator[] (const key_type& k); 另外:lo
通常用于执行可变参数扩展的一个技巧是使用未组合的数组typedef与逗号运算符组合,如下所示: #include <iostream> template<typename... Ts> void expander(Ts&&... ts) { using expand = int[]; (void)expand{0, (std::forward<Ts>(ts)(), 0)...};