這是部落格開通前幾天做的,c++的模板沒辦法存方便的浮點數,算了。
基本型別的設計參考了vczh輪子叔模仿boost的mpl的設計。
話說template和typename寫多了真是無限煩人啊,不得已定義了幾個巨集,然後運算的定義也是用巨集批量生成的。
1 template2使用起來是這樣的struct
podtype3;
89 template
10using int = podtype;
1112 template
13using bool = podtype;
1415 template
16using char = podtype;
1718
#define tn typename
19#define tt template
20#define ss struct
2122
#define define_bin_meta_operation_head(name) \
23 tt\
24ss name
2526
#define define_bin_meta_operation_body(name, ttype, vtype, rtype, op) \
27 tt\
28 ss name, ttype>\
2932
33#define define_una_meta_operation_head(name) \
34 tt\
35ss name
3637
#define define_una_meta_operation_body(name, ttype, vtype, rtype, op) \
38 tt\
39 ss name>\
4043
44define_bin_meta_operation_head(add);
45 define_bin_meta_operation_body(add, int, int, int, +);
46 define_bin_meta_operation_body(add, char, char, char, +);
47define_bin_meta_operation_head(sub);
48 define_bin_meta_operation_body(sub, int, int, int, -);
49 define_bin_meta_operation_body(sub, char, char, char, -);
50define_bin_meta_operation_head(mul);
51 define_bin_meta_operation_body(mul, int, int, int, *);
52 define_bin_meta_operation_body(mul, char, char, char, *);
53define_bin_meta_operation_head(div);
54 define_bin_meta_operation_body(div, int, int, int, /);
55 define_bin_meta_operation_body(div, char, char, char, /);
56define_bin_meta_operation_head(mod);
57 define_bin_meta_operation_body(mod, int, int, int, %);
58 define_bin_meta_operation_body(mod, char, char, char, %);
59define_bin_meta_operation_head(and);
60 define_bin_meta_operation_body(and, bool, bool, bool, &&);
61define_bin_meta_operation_head(or);
62 define_bin_meta_operation_body(or, bool, bool, bool, ||);
63define_bin_meta_operation_head(xor);
64 define_bin_meta_operation_body(xor, bool, bool, bool, ^);
65define_bin_meta_operation_head(eq);
66 define_bin_meta_operation_body(eq, bool, bool, bool, ==);
67 define_bin_meta_operation_body(eq, int, int, bool, ==);
68 define_bin_meta_operation_body(eq, char, char, bool, ==);
69define_bin_meta_operation_head(neq);
70 define_bin_meta_operation_body(neq, bool, bool, bool, !=);
71 define_bin_meta_operation_body(neq, int, int, bool, !=);
72 define_bin_meta_operation_body(neq, char, char, bool, !=);
73define_bin_meta_operation_head(gt);
74 define_bin_meta_operation_body(gt, int, int, bool, >);
75 define_bin_meta_operation_body(gt, char, char, bool, >);
76define_bin_meta_operation_head(lt);
77 define_bin_meta_operation_body(lt, int, int, bool,
78 define_bin_meta_operation_body(lt, char, char, bool,
79define_bin_meta_operation_head(ge);
80 define_bin_meta_operation_body(ge, int, int, bool, >=);
81 define_bin_meta_operation_body(ge, char, char, bool, >=);
82define_bin_meta_operation_head(le);
83 define_bin_meta_operation_body(le, int, int, bool, <=);
84 define_bin_meta_operation_body(le, char, char, bool, <=);
85define_una_meta_operation_head(neg);
86 define_una_meta_operation_body(neg, int, int, int, -);
87 define_una_meta_operation_body(neg, char, char, char, -);
88define_una_meta_operation_head(not);
89 define_una_meta_operation_body(not, bool, bool, bool, !);
1 int<1>a;可以從vs2015的intellisense很清楚得看到運算結果2 int<2>b;
3 add::result aplusb;
4 sub::result aminusb;
56 boolb1;
7 boolb2;
8 and::result b1andb2;
就這樣
1 基本資料型別
python 3支援int float bool complex 複數 a,b,c,d 20,5.5,true,3 4jprint type a type b type c type d class int class float class bool class complex a 4 5 加法 ...
C語言基本資料型別 1
通過前面的舉例分析,我們知道房子的型別,決定了房子的屬性。例如,一房一廳的房子,有乙個房間的空間 兩房一廳的房子,有兩個房間的空間。同理,在c語言中,提供了 資料型別 它可以定義變數。不同資料型別定義的變數,有不同的儲存空間和使用方式。c語言支援的基本資料型別有 1 char型別,char型別稱為 ...
Python 程式設計入門(1) 基本資料型別
以下所有例子都基於最新版本的 python,為了便於消化,每一篇都盡量短小精悍,希望你能盡力去掌握 python 程式設計的 概念 可以的話去動手試一下這些例子 就算目前還沒完全搞懂 加深理解。程式 資料結構 演算法。資料結構就是儲存資訊的方法 計算什麼 演算法就是解決問題的方法 怎麼計算 先講資料...