- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前我们正在开发一个库,该库允许在可能的情况下使用 C++11/14 功能和类型,但否则必须回退到 C++03 实现。鼓励此库的用户和开发人员使用命名空间 std
中的类型和模板。
当使用新版本的 C++ 标准引入的命名空间 std
中的类型时会出现问题,这些类型未随所使用的编译器一起提供。一个建议的选项是为某些不依赖于新语言特性的类型提供“向后移植”到命名空间 std
作为我们库代码的一部分,例如Fixed width integer types :
//file: std_backport.h
namespace std_backport {
typedef char int8_t; //for platforms where 'char' is 8 bit
typedef short int16_t; //for platforms where 'short' is 16 bit
//[and so on]
}
//enter 'sacred' territory and introduce the types to namespace std
namespace std {
using namespace ::std_backport;
}
另一个例子是VS2010在技术报告中提供的元组
类型:
//file std_tuple_backport.h
#include <tr1/tuple> //std::tr1::tuple
namespace std {
using ::std::tr1::tuple;
}
当然,我们必须根据所使用的编译器提供检查以启用/禁用包含这些文件。
我对此事进行了一些研究并意识到一个事实,即extending the namespace std就像这是未定义的行为我想放弃这个想法。但比我遇到的this answer在 #4 中指出:
Putting anything in std namespace is an "undefined behaviour". That means the specification does not say what will happen. But if you know that on particular platform the standard library does not define something, just go ahead and define it. [...]
所以我的问题是:
std
中的所有内容,并使用它代替命名空间 std
?最佳答案
Can please someone clarify to me what exactly is meant by 'undefined behavior' in this case?
与其他情况相同。该标准不保证任何行为。
程序可能无法编译、编译成功但崩溃、未崩溃但有预期输出,或意外输出取决于任何变量,例如编译器、CPU 架构或月相。就标准而言。
Is providing C++11/14 compatibility like this considered 'bad practice' even if we just provide types from a newer standard?
如果我关心程序的标准合规性 - 我经常这样做,那么我认为这是一种不好的做法。
What would be an alternative or even better way to achieve this kind of code compatibility without having to define everything from namespace std in an own namespace and use this instead of namespace std?
您不需要从 std 定义一切。只需在另一个命名空间中定义缺少的功能(或使用第三方实现),并使用 std 命名空间中的现有功能。
关于c++ - 使用更新的 C++ 标准向后移植的类型和模板扩展命名空间 std,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41185182/
我最近在读 CSAPP。在 10.9 节中,它说标准 I/O 不应该与 socket 一起使用,原因如下: (1) The restrictions of standard I/O Restricti
似乎是一个足够标准的问题,可以保证解决方案中的标准设计: 假设我想在文件中写入 x+2(或更少)个字符串。 x 字符串构成一个部分的内容,这两个字符串构成该部分的页眉和页脚。要注意的是,如果内容中没有
代码版本管理 在项目中,代码的版本管理非常重要。每个需求版本的代码开发在版本控制里都应该经过以下几个步骤。 在master分支中拉取该需求版本的两个分支,一个feature分支,
我有以下sql查询,我需要获取相应的hibernate条件查询 SELECT COUNT(DISTINCT employee_id) FROM erp_hr_payment WHERE payment
所以我正在编写一些代码,并且最近遇到了实现一些 mixin 的需要。我的问题是,设计混音的正确方法是什么?我将使用下面的示例代码来说明我的确切查询。 class Projectile(Movable,
我的环境变量包含如下双引号: $echo $CONNECT_SASL_JAAS_CONFIG org.apache.kafka.common.security.plain.PlainLoginModu
示例: /** * This function will determine whether or not one string starts with another string. * @pa
有没有办法在 Grails 中做一个不区分大小写的 in 子句? 我有这个: "in"("name", filters.tags) 我希望它忽略大小写。我想我可以做一个 sqlRestriction
我搜索了很长时间,以查找将哪些boost库添加到std库中,但是我只找到了一个新库的完整列表(如此处:http://open-std.org/jtc1/sc22/wg21/docs/library_t
我已经通过使用这个肮脏的黑客解决了我的问题: ' Filter managerial functions ActiveSheet.Range("$A$1:$BW$2211").Auto
因此,我很难理解我需要遵循的标准,以便我的 Java 程序能够嵌入 HTML。我是否只需将我的主类扩展到 Applet 类,或者我还需要做更多的事情吗?另外,在我见过的每个 Applet 示例中,它都
我对在 Hibernate 中使用限制有疑问。 我必须创建条件,设置一些限制,然后选择日期字段最大值的记录: Criteria query = session.createCriteria(Stora
我有标准: ICriteria criteria = Session.CreateCriteria() .SetFetchMode("Entity1", FetchMo
我很难编写条件来选择所有子集合或孙集合为空的实体。我可以将这些作为单独的条件来执行,但我无法将其组合成一个条件。 类结构: public class Component { p
@Entity class A { @ManyToMany private List list; ... } @Entity class B { ... } 我想使用条件(不是 sql 查询)从 A
我的数据库中有以下表结构: Table A: Table B: Table C: _______________
请帮助我: 我有下一张 table : 单位 ID 姓名 用户 ID 姓名 利率 单位 ID 用户 ID 我不明白如何从 SQL 创建正确的条件结构: 代码: SELECT * FROM Unit W
我正在构建一个包含项目的网站,每个项目都有一个页面,例如: website.com/book/123 website.com/film/456 website.com/game/789 每个项目都可以
我需要使用两个属性的组合来过滤结果列表。一个简单的 SQL 语句如下所示: SELECT TOP 10 * FROM Person WHERE FirstName + ' ' + LastName L
我有一个“ super 实体”SuperEntity 和三个扩展父类(super class)的实体 ChildEntity1、...、ChildEntity3。 搜索数据库中的所有实体很容易,即我们
我是一名优秀的程序员,十分优秀!