c++11相关内容
// ------------------------------------ ------------------------------------------ struct A { A(){} A(A&& amp;){} A& operator =(A&&){return * this;} void operator()(){} private: A(con
..
假设我有一个模板函数: template T produce_5_function(){return T(5); } 如何传递整个模板到另一个模板? 如果 produce_5_function ,将没有问题: 模板 struct produce_5_functor { T operator(
..
我已阅读(此处),注册表关键字在C ++ 11中已弃用。因此,在较新版本的标准中是否存在与此存储类说明符相同的内容,或者是由编译器负责? 解决方案 我们可以在 www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809\">缺陷报告809:弃用注册表关键字,说明(强调我的): register关键字的功能非常少,不提
..
我不明白为什么这段代码编译没有错误: #include template struct Test { static constexpr T f(){return T();} }; int main() { Test测试; test.f(); //为什么不报错? return 0; }
..
我知道答案是99.99%没有,但我认为这是值得一试,你永远不知道。 SomeFunction(int a) { //这里有一些处理,例如: a * = 50; a%= 10; if(example()) a = 0; //从这一点上我想使“a”const;我不想允许 //任何超过这个注释的代码以任何方式修改它。 } 我可以做一些类似于 const int
..
所以我试图写一个Integration函数与c ++ 11 lambdas一起使用。代码看起来像这样: double整合(std :: function
..
有了c ++ 11,我问自己,如果有一个替换boost :: ptr_containers在c ++ 11。我知道我可以使用a std :: vector > ,但我不知道这是否是一个完全替代。 解决方案 它们真正解决了两个相似但不同的问题。 指针容器是一种在容器中存储对象的方法,这种方法恰恰是指向分配的内存而不是值的指针。他们会尽其所能
..
我已经创建了如下的模板 template ,当调用如下。 f({1,2,3}); 但是GCC的行为似乎不符合标准 m.cpp:在函数'int main()': m.cpp:
..
是否可以使用 constexpr 连接两个字符串文字?或改写可以在代码中消除宏: #define nl(str)str“\\\ ” int main() { std :: cout
..
我有一个重载函数,我想传递一个包装在std ::函数。 GCC4.6没有找到“匹配函数”。 虽然我在这里找到一些问题的答案不是我想要的那样明确。有人能告诉我为什么下面的代码不能扣除正确的重载和如何(优雅地)工作。 int test (const std :: string&){ return 0; } int test(const std :: string *){ ret
..
我不知道如何可以完成以下操作 void f(string& s){ std :: string i(move(s)); / * other stuff * / } int main(){ std :: string s; bind(f,s)(); //错误。 bind(f,move(s))(); //错误。 bind(f,ref(s))(); //错误。 }
..
我使用g ++ 4.6.3,(目前默认包为ubuntu 12.04)与标志c ++ 0x,我绊倒这: template inline T getValue(AnObject&) { static_assert(false,“此函数必须实现所需类型”); } 编译错误: $ b b static_assertion failed“此
..
Herb Sutter提出了一个简单的实现 make_unique(): http:/ /herbsutter.com/gotw/_102/ 这是: template std :: unique_ptr make_unique(Args& ... args) { return std :: unique_p
..
有没有人知道在C ++ 11中函数模板是否可以部分专用? 解决方案 't。 C ++ 0x标准草案有一个关于类模板部分特化的部分(14.5.5),但没有提到函数模板部分特化。
..
所有报价均来自 N3797 。 4/3 [conv] 表达式 e 可以是 将 隐式转换为类型 T 如果且仅当声明为 T t = e; 是合格的, 是一些发明的临时变量 t 隐式转换为 void ,因为 void t = e 对所有表达式都是非法的 / code>。如果 e 是类型 void 的表达式,例如 void )。 因此,类型 void 的表达式不
..
以下代码: #include struct S { int x,y; }; int main() { std :: vector v; v.emplace_back(0,0); } 使用GCC编译时出现以下错误: 在从c ++ / 4.7.0 / i686-pc-linux-gnu / bits / c
..
在ISO标准C ++中:最新工作草案 n3291 ,它不公开提供。但 n3290 是可用的。到2月份草稿为 n3242 。我可以知道现在..哪个草稿更正确,成为最终草案?因为 n3242 与 n3290 相比有很多区别? 在这个链接中,他们给了..:当前工作草稿为 n3242 ? (为什么 n3290 ) http://www.open-std.org/jtc1/sc22/wg21/
..
class Foo { public: static const char * constant_string; }; auto Foo :: constant_string =“foo”; int main(void){ }; 编译:gcc(Ubuntu / Linaro 4.6.3-1ubuntu5)4.6.3喜欢这样: / p> gcc -s
..
我最近安装了(最新的版本)“用于C / C ++开发人员的Eclipse IDE”和minGW(4.8.1),以帮助我在很长时间后恢复到C ++。 我已将 -std = c ++ 11 添加到其他标志在 C / C ++编译/设置/工具设置/ GCC C ++编译器/其他 我有一个小程序, C ++ 11功能(例如使用 chrono 库, .emplace_back )。 运行后
..
这是此问题的后续:函数的泛型函子与任何参数列表 我有这个functor类(全代码见上面的链接): template class Foo { std :: function m_f; public: Foo(std :: function f):m_f(f){}
..