小编sti*_*472的帖子

使用或不使用C++ 0x功能

可能重复:
你今天如何使用C++ 0x?

我正在与一个相当新系统的团队合作.我们正在谈论迁移到MSVC 2010,我们已经迁移到GCC 4.5.这些是我们使用的唯一编译器,我们没有计划很快将代码移植到不同的编译器.

我建议在我们这样做之后,我们开始利用已经提供的一些C++ 0x功能,比如auto.我的同事暗示反对这一点,建议等待"直到C++ 0x实际上成为标准." 我不同意,但我可以用他的措辞来看待它的吸引力.尽管如此,我还是忍不住认为这种反驳更多的是出于对学习C++ 0x的恐惧和恐惧,而不是对标准化的真正关注.

鉴于系统的新状态,我希望我们能够利用现有的新技术.例如,auto就会让我们的日常生活更轻松(只需编写基于迭代器的循环,直到基于范围的循环出现,例如).

我觉得这个错了吗?我并不是在提议我们从根本上改变我们萌芽的代码库,而只是在方便的时候开始使用C++ 0x功能.我们知道我们正在使用哪些编译器并且没有立即移植的计划(如果我们曾经移植过代码库,那么当然编译器也可以使用C++ 0x功能以及目标平台).除此之外,我似乎在1997年避免使用iostreams,因为尽管所有编译器都已经以便携方式提供它们,但ISO C++标准尚未发布.

如果你们都同意,你能否提供我可以用来巩固我的立场的论据?如果没有,我可以获得更多关于"直到C++ 0x是标准"的想法吗?顺便说一句,有人知道什么时候会这样吗?

c++ standards coding-style c++11

11
推荐指数
3
解决办法
1376
查看次数

是否有一种结合流操纵器的好方法?

如果我想在流上输出4位数的固定宽度十六进制数,我需要做这样的事情:

cout << "0x" << hex << setw(4) << setfill('0') << 0xABC;
Run Code Online (Sandbox Code Playgroud)

这似乎有点长啰嗦.使用宏有助于:

#define HEX(n) "0x" << hex << setw(n) << setfill('0')

cout << HEX(4) << 0xABC;
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来组合操纵器?

c++ iomanip

7
推荐指数
1
解决办法
1382
查看次数

使用std :: function作为API(跨模块边界)

很确定我知道这个问题的答案(思考不),但是可以在API(跨模块边界)中安全地接受/返回std :: function by value吗?

我在想'不',因为我认为没有任何保证,一个供应商的std :: function实现与另一个供应商兼容.是这样的吗?

如果我怀疑答案是否定的,你们怎么处理这类事情呢?我可能不得不求助于实现我自己或者只是避免像std :: function这样的东西(例如:使用函数指针或函数).:-(我发现自己在很多情况下都是这样做的(重新发明了许多标准C++库,当然甚至令人遗憾的是,我们自己的STL兼容矢量类型支持范围ctor和fill ctor,自定义分配器等当然不是很有趣,我怀疑它和标准实现一样好,只是因为有人可能会动态链接到一个库,比如MSVC 2010从mingw编写的二进制文件实现std :: function,例如

当然,替代方案是在我们的API中根本不使用这些类型的C++特性并使用C接口,但由于我们使用API​​作为中心API,因此这将花费相当沉重的代价.内部和第三方发展.

c++ c++11 std-function

5
推荐指数
1
解决办法
1360
查看次数

标签 统计

c++ ×3

c++11 ×2

coding-style ×1

iomanip ×1

standards ×1

std-function ×1