文档章节

编译期约束(1)

首席吹牛官
 首席吹牛官
发布于 2015/05/22 12:58
字数 159
阅读 4
收藏 0

                  为了在运行期减少应类型安全而导致的程序崩溃,我们回使用断言和一些模板元编程来进行编译期的类型检测。

                  判断一个类型是否是POD(plain old data 的缩写,一个普通的古老的数据结构(POD)是一种数据结构。它仅作为被动的收藏的字段值,不使用封包或者otherobject-oriented特征。)              

template <typename T>
struct must_be_pod
{
    must_be_pod() {
        void (*p)() = constraints;
    }
    static void constraints() {
        union {
            T T_is_not_pod;
        };
    }
};
class node
{
public:
    node() {}
    int operator[](int index) const {
        return 0;
    }
};

int main()
{
  //  must_have_base<father,children> a;
  //  must_be_subscriptable<char[]> a;
    must_be_pod<node> a;
    //must_be_subscriptable_as_decayable_pointer<int*> a;
    cout << "Hello World!" << endl;
    return 0;
}









© 著作权归作者所有

首席吹牛官
粉丝 9
博文 368
码字总数 191938
作品 0
闵行
程序员
私信 提问
pndao 0.2.1 版本发布,MyBatis 辅助工具

改动记录: 支持自定义默认表明前缀,通过指定编译期的 processor options : -AtablePrefix=PN_ 的方式来设置, 示例如下: pndao是票牛Java团队实践一年演化出来的工具。在实际生产中减少了8...

黄亿华
2017/03/30
1K
2
组件化知识梳理(2) - Arouter 源码分析之 Complier SDK

组件化知识梳理目录 组件化知识梳理(1) - Arouter 的基本使用 组件化知识梳理(2) - Arouter 源码分析之 Complier SDK 组件化知识梳理(3) - Arouter 源码分析之运行时 SDK 一、概述 在的源码 ...

泽毛
2018/04/13
0
0
Annotation 可以放心使用吗?

一、什么是Annotation Android Annotation Library(后文简称Annotation)是Android Support Library中提供的一个函数包,它包含了诸多有用的元注解,使用注解的形式,用来帮助Android开发者...

承香墨影
2017/10/22
0
0
从需求分类到多视图架构设计方法

要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。本文从理解需求种类的复杂性谈起,通过具体...

青夜之衫
2017/12/05
0
0
软件架构的5视图法

5视图法可以帮助软件架构师以不同的视角对软件的各个方面的属性:功能需求,约束,运行期质量属性,开发期质量属性。 1、 逻辑架构:逻辑架构关注功能,不仅包括用户可见的功能,还包括为实现...

小步2013
2014/08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
今天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
今天
27
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
今天
63
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
今天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
今天
59
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部