c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
我看过 cppreference.com,它们似乎表明在std :: function(std :: function&&)上没有noexcept规范.这对我来说似乎很奇怪.在这种情况下,标准是否真的没有给出保证? 我想函数对象能够存储任意的,用户定义的,可调用的对象.移动函数对象时,也会移动包含的用户定义对象,并且无法保证可以在没有异常的情况下完成此操作.
我想在列表中存储使用async生成的几个线程的期货以便稍后检索它们的结果. future<int> f = async(doLater, parameter); list<future<int>> l; l.push_back(f); 但是编译器会输出以下错误消息 /usr/include/c++/4.7/bits/stl_list.h:115:71: error: use of deleted
我在类层次结构中有一堆对象,并希望使用对这些对象的引用作为地图中的键来创建std :: map.它看起来像std :: reference_wrapper正是这需要的,但我似乎无法使它工作.到目前为止我尝试了什么: class Object { // base class of my hierarchy // most details unimportant public virt
有没有办法将模式包装成一般的模板函数? template <typename C> auto Begin(C&& c) -> ??? { using std::begin; return begin(std::forward<C>(c)); } 这里的问题是如何在这里编写函数的返回类型? 我想要这个的原因是我想写一个模板变量 template <typename C> constexpr
#include <iostream> using namespace std; struct A { explicit operator bool() const { return true; } operator int() { return 0; } }; int main() { if (A()
是否有一个宏告诉我我的编译器是否支持可变参数模板? #ifdef VARIADIC_TEMPLATES_AVAILABLE template<typename... Args> void coolstuff(Args&&... args); #else ??? #endif 如果它们不受支持,我想我会用一堆重载来模拟它们.还有更好的想法?也许有预处理器库可以简化工作? 如果可变参数模板不可
我有一个模板函数,func: template<typename T> void func(T p) { f(p); } 还有一组函数f: f(SomeType&); f(int); ... 如果我使用引用作为函数参数p实例化模板函数func,而不显式指定模板参数T,那么推导出的类型将不是p的引用类型,而是类型p是对它的引用,例如: SomeType s; SomeType& ref_to_s
我需要创建一个包含100个字符的字符串. 为什么如下 std::string myString = {100, 'A'}; 给出不同的结果 std::string myString(100, 'A'); ? std::string myString = {100, 'A'}; 是使用初始化列表初始化.它创建一个包含2个字符的字符串:一个包含代码100和’A’ std::string myStrin
请考虑以下代码: #include <iostream> #include <functional> template<typename... Args> void testfunc(const std::function<void (float, Args..., char)>& func) { } int main(int argc, char* argv[]) { auto f
一旦Boost库(我已经读过十个Boost库被认为是标准库的一部分)成为标准库的一部分 – 它是否会保留它的boost命名空间或代码最终会在std命名空间中? 如果是后一种情况 – 您将如何解决代码中潜在的命名空间冲突. 干杯. Boost库中符合标准的项目当然会包含在命名空间std中.但是,我不认为它们的Boost对应物会以任何方式改变:如果我们以bind为例,编译C 0x的人将使用std ::
参见英文答案 > Why isn’t there a std::shared_ptr<T[]> specialisation?                                    1个 我想知道这个事实的基本原理是什么,std :: shared_ptr没有为数组定义[]运算符.特别是为什么std :: unique_ptr具有此运算符但不具有std :: shared_ptr?
假设我有这三种不同的功能,我可能想指出: float test1(int a, int b) { return 7.0f; } struct TestClass { float test2(int a, int b) { return 5.0f; } }; struct TestClass2 { float test3(int a, int b
这个问题源于无法对auto关键字使用统一初始化语法,因为它将其视为std :: initializer_list< T> (在评论 here中的解释). 请使用以下代码示例: class X { }; int x( X() ); // function prototype (1) auto x( X() ); // copy/move construction of an X, function
下面的例子是一个众所周知的成语的最小的,可能不是很好的例子. 它编译并且它是如此丑陋,以便能够保持最小,因为问题不是成语本身. struct Foo { virtual void fn() = 0; }; template<class T> struct Bar: public Foo { void fn() override { T{}.fn(); }
请考虑以下代码( LWS): #include <iostream> #include <chrono> inline void test( const std::chrono::high_resolution_clock::time_point& first, const std::chrono::high_resolution_clock::time_point& second
我需要能够通过指针访问(只读,不涉及调整大小或类似的东西)std :: vector的元素.例如., std::vector<int> foo(10); int *ptr_begin = &foo[0]; 到目前为止一切顺利,这保证在当前标准(23.3.6.1)中有效: The elements of a vector are stored contiguously, meaning that i
template<typename... TArgs> struct List { }; template<template<typename...> class> struct ListHelper; template<typename T, typename... TArgs> struct ListHelper<List<T, TArgs...>> { };
class B { public: virtual void f(){ printf("B\n"); } }; class D : public B { public: void f() { printf("D\n"); } }; int main(void) { B* d = new D();
我正在尝试使用std :: make_shared将’this’传递给构造函数 例: // headers class A { public: std::shared_ptr<B> createB(); } class B { private: std::shared_ptr<A> a; public: B(std::shared_ptr<A>); } // sou
#include <iostream> #include <string> #include <map> struct A { int n { 42 }; std::string s { "ciao" }; }; int main() { A a; std::map<std::string, A> m; std::cout << "a.s: " << a