草庐IT

0x00000001

全部标签

使用 g++ 支持 C++0x IDE

哪个IDE对g++中的新C++0x功能有更好的支持?我知道您可以按原样使用编辑器并使用-std=c++0x编译代码,但我希望新功能不会被IDE标记为错误(自动、基于范围的循环、可变参数模板等)。 最佳答案 这里是theEclipseCDTbugtrackingsupportforthec++0xfeaturesaddeding++4.6.到目前为止,CDT支持g++4.5中的功能(包括使用auto、decltype和尾随返回类型、可变参数模板、lambdas、rvaluerefs的类型推断)以及基于范围的for和前向枚举声明。解析器

C++0x 优化编译器质量

我做了一些繁重的数字运算,对我来说浮点性能非常重要。我非常喜欢英特尔编译器的性能,并且对它产生的汇编质量非常满意。我想在某个时候尝试C++0x主要用于糖部分,如auto、初始化列表等,还有lambdas。在这一点上,我通过boost在常规C++中使用这些功能。编译器C++0x生成的汇编代码有多好?特别是Intel和gcc编译器。他们是否生成SSE代码?性能可以与C++媲美吗?有基准吗?我的Google搜索没有透露太多信息。谢谢。ps:有时我会自己测试它,但想知道相对于C++会发生什么。 最佳答案 您可以期待对您的代码进行同样的优化,

c++ - 假设的、以前的 C++0x 概念问题

(序言:我是C++0x游戏的后期追随者,最近关于从C++0x标准中删除概念的争议促使我更多地了解它们。虽然我知道我所有的问题都是完全假设的——只要概念在未来一段时间内都不是有效的C++代码,如果有的话——我仍然有兴趣了解更多关于概念的知识,特别是考虑到它会如何帮助我更充分地理解最近的决定背后的优点和随之而来的争议)在阅读了一些关于C++0x(直到最近)提出的概念的介绍性Material之后,我无法将我的想法集中在一些语法问题上。事不宜迟,以下是我的问题:1)支持特定派生概念的类型(隐式地,通过auto关键字,或显式地通过concept_maps)是否也需要独立地支持基本概念?换句话说,

c++ - C++0x中的统一初始化,什么时候用()代替{}?

是否有经验法则来决定何时使用旧语法()而不是新语法{}?初始化一个结构体:structmyclass{myclass(intpx,intpy):x(px),y(py){}private:intx,y;};...myclassobject{0,0};现在以vector为例,它有许多构造函数。每当我执行以下操作时:vectornumbers{10};我得到一个1元素的vector,而不是一个带有10元素的vector,因为构造函数之一是:explicitvector(size_typen,constT&value=T(),constAllocator&=Allocator());我的怀疑是

C++0x lambda vs block

我今天在探索C++0x,遇到了新的lambda特性。我的问题是这些与blocks有何不同(在使用方面)为什么一个人可能更喜欢另一个?谢谢。 最佳答案 thereisaashortsyntaxwithC++0xlambdastotakeeveryvariableinscopebyreference.([&])Thetypeofalambdaisalsounspecified,allowingpotentiallymoreoptimalcode.Now,whenyoulookatAppleblocks,itwillrequire__bl

c++ - g++ 和 c++0x 规范支持

虽然有人说g++中对c++0x新特性的支持处于实验模式,但许多gcc开发者声称你可以在你的代码中使用大部分新特性并让程序运行。但是当我尝试编译这个简单的程序时,它会导致段错误。为什么?#include#includevoidmy_thread_func(){std::coutg++-std=c++0x-Wall-orunmain.cc 最佳答案 我将可执行文件与pthread库链接起来,它工作了!我没有看到任何丢失的共享库依赖项(ldd),但似乎Linux上的stdC++库实现在内部使用了pthread。g++thread.cpp-

c++ - C++0x 中 allocator_traits<T> 的目的是什么?

为什么没有标准C++03接口(interface)用于查询C++0x中使用的分配器的成员类型?成员类型不足的用例有哪些? 最佳答案 为了从设计模式的角度解释allocator_traits,它是Adapter包装满足更少实现要求的自定义分配器(不需要构造,销毁,所有那些typedef...)并将其转换为FlyWeight使用静态成员和类型为您完成分配器实现要求的其余部分的对象。根据open-stddocScopedAllocatorModel的第3页,使用allocator_traits,您只需为自定义分配器提供至少10行代码。(感

c++ - 使用和不使用 std=c++0x 混合库的任何问题

我正在编写一个库,该库必须依赖于当前未编译并支持新标准的库。我想编译一个必须依赖于std=c++0x的库。这样做有什么问题吗? 最佳答案 如果混合使用不同编译器选项编译的库,则必须确保接口(interface)中数据类型的ABI相同。有些数据类型(如std::string)在C++03和C++0x之间有不同的接口(interface)和要求,所以使用它们的接口(interface)一定要小心。如果您的接口(interface)仅使用内置类型和您自己的类,而这些本身不使用任何标准库类,那么一切都应该没问题。否则,您将需要检查您正在使用

c++ - 一旦 C++0x 成为主流,boost 的重叠部分会发生什么?

一旦C++0x成为主流,boost的重叠部分会发生什么?boost是否仍会包含以前的所有内容,或者他们是否会调整库以使用新的std::内容对其进行更新?boost是否会同时拥有正常的c++版本和他们将维护的c++0x版本? 最佳答案 出于几个原因,人们会希望Boost继续支持现有的类。首先,有一段代码使用了Boost中的重叠特性,需要在一段时间内得到支持。其次,重叠的实现让我可以选择我更喜欢使用哪一个。std::Frob和Boost::Frob之间可能存在一些对我的项目很重要的区别,并且有选择是好的。不过,从长远来看,我希望应用程序

c++ - 在 C++0x lambda 中是否可以看到函数局部类型定义?

我遇到了一个奇怪的问题。以下简化代码重现了MSVC2010中的问题:templatestructdummy{staticTfoo(void){returnT();}};intmain(void){typedefdummydummy_type;autox=[]{boolb=dummy_type::foo();};//autox=[]{boolb=dummy::foo();};//works}我在函数中本地创建的typedef在lambda中似乎不可见。如果我将typedef替换为实际类型,它会按预期工作。这里有一些其他的测试用例://crashesthecompiler,creditto