pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<i id='1T1U3'><tr id='1T1U3'><dt id='1T1U3'><q id='1T1U3'><span id='1T1U3'><b id='1T1U3'><form id='1T1U3'><ins id='1T1U3'></ins><ul id='1T1U3'></ul><sub id='1T1U3'></sub></form><legend id='1T1U3'></legend><bdo id='1T1U3'><pre id='1T1U3'><center id='1T1U3'></center></pre></bdo></b><th id='1T1U3'></th></span></q></dt></tr></i><div class="jx7l7th" id='1T1U3'><tfoot id='1T1U3'></tfoot><dl id='1T1U3'><fieldset id='1T1U3'></fieldset></dl></div>
  • <tfoot id='1T1U3'></tfoot>

      <small id='1T1U3'></small><noframes id='1T1U3'>

        <legend id='1T1U3'><style id='1T1U3'><dir id='1T1U3'><q id='1T1U3'></q></dir></style></legend>
          <bdo id='1T1U3'></bdo><ul id='1T1U3'></ul>

        模板元編程 - 使用 Enum Hack 和 Static Const 的區別

        Template Metaprogramming - Difference Between Using Enum Hack and Static Const(模板元編程 - 使用 Enum Hack 和 Static Const 的區別)
        <legend id='oxE10'><style id='oxE10'><dir id='oxE10'><q id='oxE10'></q></dir></style></legend>
        • <bdo id='oxE10'></bdo><ul id='oxE10'></ul>

            <tfoot id='oxE10'></tfoot>
            • <small id='oxE10'></small><noframes id='oxE10'>

              <i id='oxE10'><tr id='oxE10'><dt id='oxE10'><q id='oxE10'><span id='oxE10'><b id='oxE10'><form id='oxE10'><ins id='oxE10'></ins><ul id='oxE10'></ul><sub id='oxE10'></sub></form><legend id='oxE10'></legend><bdo id='oxE10'><pre id='oxE10'><center id='oxE10'></center></pre></bdo></b><th id='oxE10'></th></span></q></dt></tr></i><div class="xhxdhnd" id='oxE10'><tfoot id='oxE10'></tfoot><dl id='oxE10'><fieldset id='oxE10'></fieldset></dl></div>
                  <tbody id='oxE10'></tbody>

                  本文介紹了模板元編程 - 使用 Enum Hack 和 Static Const 的區別的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我想知道在使用模板元編程技術時使用靜態常量和枚舉黑客有什么區別.

                  I'm wondering what the difference is between using a static const and an enum hack when using template metaprogramming techniques.

                  EX:(斐波那契通過 TMP)

                  EX: (Fibonacci via TMP)

                  template< int n > struct TMPFib {
                    static const int val =
                      TMPFib< n-1 >::val + TMPFib< n-2 >::val;
                  };
                  
                  template<> struct TMPFib< 1 > {
                    static const int val = 1;
                  };
                  
                  template<> struct TMPFib< 0 > {
                    static const int val = 0;
                  };
                  

                  對比

                  template< int n > struct TMPFib {
                    enum {
                      val = TMPFib< n-1 >::val + TMPFib< n-2 >::val
                    };
                  };
                  
                  template<> struct TMPFib< 1 > {
                    enum { val = 1 };
                  };
                  
                  template<> struct TMPFib< 0 > {
                    enum { val = 0 };
                  };
                  

                  為什么要使用一個?我已經讀到在類內部支持靜態常量之前使用了 enum hack,但為什么現在使用它?

                  Why use one over the other? I've read that the enum hack was used before static const was supported inside classes, but why use it now?

                  推薦答案

                  枚舉不是 lval,靜態成員值是,如果通過引用傳遞模板將被實例化:

                  Enums aren't lvals, static member values are and if passed by reference the template will be instanciated:

                  void f(const int&);
                  f(TMPFib<1>::value);
                  

                  如果你想做純編譯時間計算等,這是一個不希望的副作用.

                  If you want to do pure compile time calculations etc. this is an undesired side-effect.

                  主要的歷史差異是枚舉也適用于不支持成員值的類內初始化的編譯器,現在大多數編譯器都應該修復這個問題.
                  枚舉和靜態常量的編譯速度也可能存在差異.

                  The main historic difference is that enums also work for compilers where in-class-initialization of member values is not supported, this should be fixed in most compilers now.
                  There may also be differences in compilation speed between enum and static consts.

                  boost 編碼指南和舊線程 在有關該主題的 boost 檔案中.

                  There are some details in the boost coding guidelines and an older thread in the boost archives regarding the subject.

                  這篇關于模板元編程 - 使用 Enum Hack 和 Static Const 的區別的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Why do two functions have the same address?(為什么兩個函數的地址相同?)
                  Why the initializer of std::function has to be CopyConstructible?(為什么 std::function 的初始化程序必須是可復制構造的?)
                  mixing templates with polymorphism(混合模板與多態性)
                  When should I use the keyword quot;typenamequot; when using templates(我什么時候應該使用關鍵字“typename?使用模板時)
                  Dependent name resolution amp; namespace std / Standard Library(依賴名稱解析命名空間 std/標準庫)
                  gcc can compile a variadic template while clang cannot(gcc 可以編譯可變參數模板,而 clang 不能)

                1. <tfoot id='ZVY9D'></tfoot>

                      <small id='ZVY9D'></small><noframes id='ZVY9D'>

                        <legend id='ZVY9D'><style id='ZVY9D'><dir id='ZVY9D'><q id='ZVY9D'></q></dir></style></legend>
                          <tbody id='ZVY9D'></tbody>
                      1. <i id='ZVY9D'><tr id='ZVY9D'><dt id='ZVY9D'><q id='ZVY9D'><span id='ZVY9D'><b id='ZVY9D'><form id='ZVY9D'><ins id='ZVY9D'></ins><ul id='ZVY9D'></ul><sub id='ZVY9D'></sub></form><legend id='ZVY9D'></legend><bdo id='ZVY9D'><pre id='ZVY9D'><center id='ZVY9D'></center></pre></bdo></b><th id='ZVY9D'></th></span></q></dt></tr></i><div class="vnjjpxt" id='ZVY9D'><tfoot id='ZVY9D'></tfoot><dl id='ZVY9D'><fieldset id='ZVY9D'></fieldset></dl></div>
                          <bdo id='ZVY9D'></bdo><ul id='ZVY9D'></ul>

                            主站蜘蛛池模板: 山东艾德实业有限公司| 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 派财经_聚焦数字经济内容服务平台 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 北京发电车出租-发电机租赁公司-柴油发电机厂家 - 北京明旺盛安机电设备有限公司 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 低合金板|安阳低合金板|河南低合金板|高强度板|桥梁板_安阳润兴 北京租车牌|京牌指标租赁|小客车指标出租 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 制样机-密封锤式破碎机-粉碎机-智能马弗炉-南昌科鑫制样 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 宜兴紫砂壶知识分享 - 宜兴壶人 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 空压机网_《压缩机》杂志| 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 |