c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
我非常喜欢c 11中的std :: throw_with_nested,因为它模拟了 java的printStackTrace()但是现在我只是好奇如何捕获嵌套异常,例如: void f() { try { throw SomeException(); } catch( ... ) { std::throw_with_nested( std::run
看一下boost :: polygon的源代码,我看到了以下主题的许多应用: #include <iostream> namespace B { struct A { void foo() const { std::cout << "foo" << std::endl; } }; void bar(const A &a) { a.foo(); } void baz() { std::co
我刚刚开始学习C 11中的新功能.我正在阅读C Primer(Stanley Lippman)中的lambdas,并正在尝试它们. 我尝试了以下代码: auto func() -> int (*) (){ //int c=0; return []()-> int {return 0;}; } int main(){ auto p = func(); } 这段代码编译得很好
我对这些说法者感到非常沮丧,因为我了解他们自己做了什么,但我发现当他们彼此使用时很难理解.例如,野外的一些代码包含 – namespace{ static constexpr char const *Hello[] = { "HelloString", "WorldString"}; ... } 这甚至做了什么? >当你已经在匿名命名空间内时,为什么要使用static.并且内部静态是有意义的(除非
我正在尝试在我的C应用程序上使用线程. 我的代码是: #include <iostream> #include <thread> class C { public: void * code( void * param ) { std::cout << "Code thread executing " << std::endl; return NU
#include <iostream> #include <memory> template<typename T> class Test: public std::enable_shared_from_this< Test<T> > { public: std::shared_ptr< Test<T> > getMe() { return shared_fr
我想要一些C语言,让我用指定的舍入行为进行有效的整数除法,如下所示: div_down(-4,3) ==> -2 div_up(4,3) ==> 2 div_to_zero(-4,3) ==> -1 div_to_nearest(5,3) ==> 2 我希望它能够在编译时检测目标机器的行为并生成适当的最佳实现.类似于模数的东西也会很好,在编译时抽象出负
看看代码: #include <iostream> #include <utility> class test { private: test() { } public: test foo() { return *this; } static const char *name() { return "test"; } }; int main() { std::
似乎使用带有SFINAE enable_if的decltype并不简单.我尝试用三种不同的方式使用enable_if编写go.所有这些都因编译器错误而失败(使用GCC字面意思:“错误:’事物’不是’foo’的成员”和实例化上下文). #include <type_traits> struct foo { enum { has_thing = false }; }; struct bar {
请考虑GO和C 11中的这两个片段.在C std :: vector中是一个双重数组,它具有摊销的O(1)插入操作.如何在GO中实现相同的性能?问题是这个GO代码在我的硬件上慢了大约3倍.跑多次. 编译: > go build vec.go(去版本go1.2.1 linux / amd64) > g -O2 -std = gnu 11 -o vec vec.cc(g(Ubuntu 4.8.2-19
我查看了一些C容器(vector,deque,list,map,set),发现它们都没有实现 erase(reverse_iterator position) 有一种方法可以从reverse_iterator获取迭代器,如answer中所述. 但是为什么上面的容器没有用reverse_iterator参数实现擦除成员函数? 迭代器和reverse_iterator之间是否有任何显着差异,这使得这样
特别是即将推出的 Windows 8(带有Metro)将要求任何IO都是异步编程的.在C#/ .Net中似乎有特殊的等待和类似的构造, JavaScript API将有自己的工作机制. 什么是C 11集成?现代(或即将推出)Windows的简洁示例(例如,从文件中读取图像以进行显示?)?如果它使用C 11功能,我会期望涉及异步或未来? Tips and tricks for developing
我还没有完全围绕C 11多线程的东西,但是我试图让多个线程等到主线程上的某个事件然后一次继续(处理发生了什么),并等待它们再次’重新处理…循环直到它们关闭.以下不完全是 – 它是我的问题的简单再现: std::mutex mutex; std::condition_variable cv; std::thread thread1([&](){ std::unique_lock<std::mute
我是否正确阅读从最小和最大(以及最小值)的标准,有新的initializer_list变体,但没有Variadic模板变体? 这样就可以了: int a = min( { 1,2,a,b,5 } ); 但这不是: int b = min( 1,2,a,b,5 ); // err! 我想,很多人都希望Variadic模板可以很容易地实现这一点,因此他们可能会感到失望. 我会说使用V.T.最小和最大将
在一个变体类中,我正在处理原始存储是一个char数组: alignas(/* the strictest alignment of all types of the variant */) char storage[/* ... */]; 赋值运算符类似于: template<class X> void operator=(const X &x) { // ...code for cleari
It’s widely known您可以使用shared_ptr存储指向不完整类型的指针,只要在构造shared_ptr期间可以删除指针(具有明确定义的行为).例如,PIMPL技术: struct interface { interface(); // out-of-line definition required ~interface() = de
自从我们的开发和构建环境从VS2008升级到VS2012以来,我对在我们的遗留代码库中使用volatile关键字的含义感到困惑(它非常广泛,因为从“旧”时代管理线程有很多复制模式). Microsoft在VS2012文档中有以下评论: If you are familiar with the C# volatile keyword, or familiar with the behavior of
专家解释了编程时C 11 std :: arrays的优点,但我希望从编译器中获得一些东西.能够在编译使用[]的代码时使用.at()时打开默认范围检查. 检查范围违规特别是对于多维数组可能是有益的,因为在这种情况下,范围违规不太可能导致segfault(因为你经常拥有内部数组的内存所以[5000] [ – 123]仍然可能指向内存你拥有的). 所以我想知道是否有一个开关可以编译成检查范围的机器代码
我正在考虑用已经使用C 11特性的代码中的显式运算符bool替换所有安全bool习语的实例(所以老编译器不认识显式转换运算符的事实并不重要),所以我想知道它是否会引起一些微妙的问题. 因此,从旧的和沉闷的安全bool成语切换到新的闪亮的显式操作符bool可能导致所有可能的不兼容性(即使是最微小的那些)? 编辑:我知道切换是一个好主意,因为后者是一种语言功能,编译器很好理解,所以它的工作并不比实际上
我试图使用tbb多线程现有的递归算法.单线程版本使用尾调用递归,从结构上看,它看起来像这样: void my_func() { my_recusive_func (0); } bool doSomeWork (int i, int& a, int& b, int& c) { // do some work } void my_recusive_func (int i) {