BVB Source Codes

mars Show numeric_cast_traits_common.hpp Source code

Return Download mars: download numeric_cast_traits_common.hpp Source code - Download mars Source code - Type:.hpp
  1. //
  2. //! Copyright (c) 2011-2012
  3. //! Brandon Kohn
  4. //
  5. //  Distributed under the Boost Software License, Version 1.0. (See
  6. //  accompanying file LICENSE_1_0.txt or copy at
  7. //  http://www.boost.org/LICENSE_1_0.txt)
  8. //
  9.        
  10.        
  11.        
  12. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace numeric {
  13.    
  14.     template <>
  15.     struct numeric_cast_traits
  16.         <
  17.             char
  18.           , char
  19.         >
  20.     {
  21.         typedef def_overflow_handler overflow_policy;
  22.         typedef UseInternalRangeChecker range_checking_policy;
  23.         typedef Trunc<char> rounding_policy;
  24.     };
  25.    
  26.     template <>
  27.     struct numeric_cast_traits
  28.         <
  29.             char
  30.           , signed char
  31.         >
  32.     {
  33.         typedef def_overflow_handler overflow_policy;
  34.         typedef UseInternalRangeChecker range_checking_policy;
  35.         typedef Trunc<signed char> rounding_policy;
  36.     };
  37.    
  38.     template <>
  39.     struct numeric_cast_traits
  40.         <
  41.             char
  42.           , unsigned char
  43.         >
  44.     {
  45.         typedef def_overflow_handler overflow_policy;
  46.         typedef UseInternalRangeChecker range_checking_policy;
  47.         typedef Trunc<unsigned char> rounding_policy;
  48.     };
  49.    
  50.     template <>
  51.     struct numeric_cast_traits
  52.         <
  53.             char
  54.           , short
  55.         >
  56.     {
  57.         typedef def_overflow_handler overflow_policy;
  58.         typedef UseInternalRangeChecker range_checking_policy;
  59.         typedef Trunc<short> rounding_policy;
  60.     };
  61.    
  62.     template <>
  63.     struct numeric_cast_traits
  64.         <
  65.             char
  66.           , unsigned short
  67.         >
  68.     {
  69.         typedef def_overflow_handler overflow_policy;
  70.         typedef UseInternalRangeChecker range_checking_policy;
  71.         typedef Trunc<unsigned short> rounding_policy;
  72.     };
  73.    
  74.     template <>
  75.     struct numeric_cast_traits
  76.         <
  77.             char
  78.           , int
  79.         >
  80.     {
  81.         typedef def_overflow_handler overflow_policy;
  82.         typedef UseInternalRangeChecker range_checking_policy;
  83.         typedef Trunc<int> rounding_policy;
  84.     };
  85.    
  86.     template <>
  87.     struct numeric_cast_traits
  88.         <
  89.             char
  90.           , unsigned int
  91.         >
  92.     {
  93.         typedef def_overflow_handler overflow_policy;
  94.         typedef UseInternalRangeChecker range_checking_policy;
  95.         typedef Trunc<unsigned int> rounding_policy;
  96.     };
  97.    
  98.     template <>
  99.     struct numeric_cast_traits
  100.         <
  101.             char
  102.           , long
  103.         >
  104.     {
  105.         typedef def_overflow_handler overflow_policy;
  106.         typedef UseInternalRangeChecker range_checking_policy;
  107.         typedef Trunc<long> rounding_policy;
  108.     };
  109.    
  110.     template <>
  111.     struct numeric_cast_traits
  112.         <
  113.             char
  114.           , unsigned long
  115.         >
  116.     {
  117.         typedef def_overflow_handler overflow_policy;
  118.         typedef UseInternalRangeChecker range_checking_policy;
  119.         typedef Trunc<unsigned long> rounding_policy;
  120.     };
  121.    
  122.     template <>
  123.     struct numeric_cast_traits
  124.         <
  125.             char
  126.           , float
  127.         >
  128.     {
  129.         typedef def_overflow_handler overflow_policy;
  130.         typedef UseInternalRangeChecker range_checking_policy;
  131.         typedef Trunc<float> rounding_policy;
  132.     };
  133.    
  134.     template <>
  135.     struct numeric_cast_traits
  136.         <
  137.             char
  138.           , double
  139.         >
  140.     {
  141.         typedef def_overflow_handler overflow_policy;
  142.         typedef UseInternalRangeChecker range_checking_policy;
  143.         typedef Trunc<double> rounding_policy;
  144.     };
  145.    
  146.     template <>
  147.     struct numeric_cast_traits
  148.         <
  149.             char
  150.           , long double
  151.         >
  152.     {
  153.         typedef def_overflow_handler overflow_policy;
  154.         typedef UseInternalRangeChecker range_checking_policy;
  155.         typedef Trunc<long double> rounding_policy;
  156.     };
  157.    
  158.     template <>
  159.     struct numeric_cast_traits
  160.         <
  161.             signed char
  162.           , char
  163.         >
  164.     {
  165.         typedef def_overflow_handler overflow_policy;
  166.         typedef UseInternalRangeChecker range_checking_policy;
  167.         typedef Trunc<char> rounding_policy;
  168.     };
  169.    
  170.     template <>
  171.     struct numeric_cast_traits
  172.         <
  173.             signed char
  174.           , signed char
  175.         >
  176.     {
  177.         typedef def_overflow_handler overflow_policy;
  178.         typedef UseInternalRangeChecker range_checking_policy;
  179.         typedef Trunc<signed char> rounding_policy;
  180.     };
  181.    
  182.     template <>
  183.     struct numeric_cast_traits
  184.         <
  185.             signed char
  186.           , unsigned char
  187.         >
  188.     {
  189.         typedef def_overflow_handler overflow_policy;
  190.         typedef UseInternalRangeChecker range_checking_policy;
  191.         typedef Trunc<unsigned char> rounding_policy;
  192.     };
  193.    
  194.     template <>
  195.     struct numeric_cast_traits
  196.         <
  197.             signed char
  198.           , short
  199.         >
  200.     {
  201.         typedef def_overflow_handler overflow_policy;
  202.         typedef UseInternalRangeChecker range_checking_policy;
  203.         typedef Trunc<short> rounding_policy;
  204.     };
  205.    
  206.     template <>
  207.     struct numeric_cast_traits
  208.         <
  209.             signed char
  210.           , unsigned short
  211.         >
  212.     {
  213.         typedef def_overflow_handler overflow_policy;
  214.         typedef UseInternalRangeChecker range_checking_policy;
  215.         typedef Trunc<unsigned short> rounding_policy;
  216.     };
  217.    
  218.     template <>
  219.     struct numeric_cast_traits
  220.         <
  221.             signed char
  222.           , int
  223.         >
  224.     {
  225.         typedef def_overflow_handler overflow_policy;
  226.         typedef UseInternalRangeChecker range_checking_policy;
  227.         typedef Trunc<int> rounding_policy;
  228.     };
  229.    
  230.     template <>
  231.     struct numeric_cast_traits
  232.         <
  233.             signed char
  234.           , unsigned int
  235.         >
  236.     {
  237.         typedef def_overflow_handler overflow_policy;
  238.         typedef UseInternalRangeChecker range_checking_policy;
  239.         typedef Trunc<unsigned int> rounding_policy;
  240.     };
  241.    
  242.     template <>
  243.     struct numeric_cast_traits
  244.         <
  245.             signed char
  246.           , long
  247.         >
  248.     {
  249.         typedef def_overflow_handler overflow_policy;
  250.         typedef UseInternalRangeChecker range_checking_policy;
  251.         typedef Trunc<long> rounding_policy;
  252.     };
  253.    
  254.     template <>
  255.     struct numeric_cast_traits
  256.         <
  257.             signed char
  258.           , unsigned long
  259.         >
  260.     {
  261.         typedef def_overflow_handler overflow_policy;
  262.         typedef UseInternalRangeChecker range_checking_policy;
  263.         typedef Trunc<unsigned long> rounding_policy;
  264.     };
  265.    
  266.     template <>
  267.     struct numeric_cast_traits
  268.         <
  269.             signed char
  270.           , float
  271.         >
  272.     {
  273.         typedef def_overflow_handler overflow_policy;
  274.         typedef UseInternalRangeChecker range_checking_policy;
  275.         typedef Trunc<float> rounding_policy;
  276.     };
  277.    
  278.     template <>
  279.     struct numeric_cast_traits
  280.         <
  281.             signed char
  282.           , double
  283.         >
  284.     {
  285.         typedef def_overflow_handler overflow_policy;
  286.         typedef UseInternalRangeChecker range_checking_policy;
  287.         typedef Trunc<double> rounding_policy;
  288.     };
  289.    
  290.     template <>
  291.     struct numeric_cast_traits
  292.         <
  293.             signed char
  294.           , long double
  295.         >
  296.     {
  297.         typedef def_overflow_handler overflow_policy;
  298.         typedef UseInternalRangeChecker range_checking_policy;
  299.         typedef Trunc<long double> rounding_policy;
  300.     };
  301.    
  302.     template <>
  303.     struct numeric_cast_traits
  304.         <
  305.             unsigned char
  306.           , char
  307.         >
  308.     {
  309.         typedef def_overflow_handler overflow_policy;
  310.         typedef UseInternalRangeChecker range_checking_policy;
  311.         typedef Trunc<char> rounding_policy;
  312.     };
  313.    
  314.     template <>
  315.     struct numeric_cast_traits
  316.         <
  317.             unsigned char
  318.           , signed char
  319.         >
  320.     {
  321.         typedef def_overflow_handler overflow_policy;
  322.         typedef UseInternalRangeChecker range_checking_policy;
  323.         typedef Trunc<signed char> rounding_policy;
  324.     };
  325.    
  326.     template <>
  327.     struct numeric_cast_traits
  328.         <
  329.             unsigned char
  330.           , unsigned char
  331.         >
  332.     {
  333.         typedef def_overflow_handler overflow_policy;
  334.         typedef UseInternalRangeChecker range_checking_policy;
  335.         typedef Trunc<unsigned char> rounding_policy;
  336.     };
  337.    
  338.     template <>
  339.     struct numeric_cast_traits
  340.         <
  341.             unsigned char
  342.           , short
  343.         >
  344.     {
  345.         typedef def_overflow_handler overflow_policy;
  346.         typedef UseInternalRangeChecker range_checking_policy;
  347.         typedef Trunc<short> rounding_policy;
  348.     };
  349.    
  350.     template <>
  351.     struct numeric_cast_traits
  352.         <
  353.             unsigned char
  354.           , unsigned short
  355.         >
  356.     {
  357.         typedef def_overflow_handler overflow_policy;
  358.         typedef UseInternalRangeChecker range_checking_policy;
  359.         typedef Trunc<unsigned short> rounding_policy;
  360.     };
  361.    
  362.     template <>
  363.     struct numeric_cast_traits
  364.         <
  365.             unsigned char
  366.           , int
  367.         >
  368.     {
  369.         typedef def_overflow_handler overflow_policy;
  370.         typedef UseInternalRangeChecker range_checking_policy;
  371.         typedef Trunc<int> rounding_policy;
  372.     };
  373.    
  374.     template <>
  375.     struct numeric_cast_traits
  376.         <
  377.             unsigned char
  378.           , unsigned int
  379.         >
  380.     {
  381.         typedef def_overflow_handler overflow_policy;
  382.         typedef UseInternalRangeChecker range_checking_policy;
  383.         typedef Trunc<unsigned int> rounding_policy;
  384.     };
  385.    
  386.     template <>
  387.     struct numeric_cast_traits
  388.         <
  389.             unsigned char
  390.           , long
  391.         >
  392.     {
  393.         typedef def_overflow_handler overflow_policy;
  394.         typedef UseInternalRangeChecker range_checking_policy;
  395.         typedef Trunc<long> rounding_policy;
  396.     };
  397.    
  398.     template <>
  399.     struct numeric_cast_traits
  400.         <
  401.             unsigned char
  402.           , unsigned long
  403.         >
  404.     {
  405.         typedef def_overflow_handler overflow_policy;
  406.         typedef UseInternalRangeChecker range_checking_policy;
  407.         typedef Trunc<unsigned long> rounding_policy;
  408.     };
  409.    
  410.     template <>
  411.     struct numeric_cast_traits
  412.         <
  413.             unsigned char
  414.           , float
  415.         >
  416.     {
  417.         typedef def_overflow_handler overflow_policy;
  418.         typedef UseInternalRangeChecker range_checking_policy;
  419.         typedef Trunc<float> rounding_policy;
  420.     };
  421.    
  422.     template <>
  423.     struct numeric_cast_traits
  424.         <
  425.             unsigned char
  426.           , double
  427.         >
  428.     {
  429.         typedef def_overflow_handler overflow_policy;
  430.         typedef UseInternalRangeChecker range_checking_policy;
  431.         typedef Trunc<double> rounding_policy;
  432.     };
  433.    
  434.     template <>
  435.     struct numeric_cast_traits
  436.         <
  437.             unsigned char
  438.           , long double
  439.         >
  440.     {
  441.         typedef def_overflow_handler overflow_policy;
  442.         typedef UseInternalRangeChecker range_checking_policy;
  443.         typedef Trunc<long double> rounding_policy;
  444.     };
  445.    
  446.     template <>
  447.     struct numeric_cast_traits
  448.         <
  449.             short
  450.           , char
  451.         >
  452.     {
  453.         typedef def_overflow_handler overflow_policy;
  454.         typedef UseInternalRangeChecker range_checking_policy;
  455.         typedef Trunc<char> rounding_policy;
  456.     };
  457.    
  458.     template <>
  459.     struct numeric_cast_traits
  460.         <
  461.             short
  462.           , signed char
  463.         >
  464.     {
  465.         typedef def_overflow_handler overflow_policy;
  466.         typedef UseInternalRangeChecker range_checking_policy;
  467.         typedef Trunc<signed char> rounding_policy;
  468.     };
  469.    
  470.     template <>
  471.     struct numeric_cast_traits
  472.         <
  473.             short
  474.           , unsigned char
  475.         >
  476.     {
  477.         typedef def_overflow_handler overflow_policy;
  478.         typedef UseInternalRangeChecker range_checking_policy;
  479.         typedef Trunc<unsigned char> rounding_policy;
  480.     };
  481.    
  482.     template <>
  483.     struct numeric_cast_traits
  484.         <
  485.             short
  486.           , short
  487.         >
  488.     {
  489.         typedef def_overflow_handler overflow_policy;
  490.         typedef UseInternalRangeChecker range_checking_policy;
  491.         typedef Trunc<short> rounding_policy;
  492.     };
  493.    
  494.     template <>
  495.     struct numeric_cast_traits
  496.         <
  497.             short
  498.           , unsigned short
  499.         >
  500.     {
  501.         typedef def_overflow_handler overflow_policy;
  502.         typedef UseInternalRangeChecker range_checking_policy;
  503.         typedef Trunc<unsigned short> rounding_policy;
  504.     };
  505.    
  506.     template <>
  507.     struct numeric_cast_traits
  508.         <
  509.             short
  510.           , int
  511.         >
  512.     {
  513.         typedef def_overflow_handler overflow_policy;
  514.         typedef UseInternalRangeChecker range_checking_policy;
  515.         typedef Trunc<int> rounding_policy;
  516.     };
  517.    
  518.     template <>
  519.     struct numeric_cast_traits
  520.         <
  521.             short
  522.           , unsigned int
  523.         >
  524.     {
  525.         typedef def_overflow_handler overflow_policy;
  526.         typedef UseInternalRangeChecker range_checking_policy;
  527.         typedef Trunc<unsigned int> rounding_policy;
  528.     };
  529.    
  530.     template <>
  531.     struct numeric_cast_traits
  532.         <
  533.             short
  534.           , long
  535.         >
  536.     {
  537.         typedef def_overflow_handler overflow_policy;
  538.         typedef UseInternalRangeChecker range_checking_policy;
  539.         typedef Trunc<long> rounding_policy;
  540.     };
  541.    
  542.     template <>
  543.     struct numeric_cast_traits
  544.         <
  545.             short
  546.           , unsigned long
  547.         >
  548.     {
  549.         typedef def_overflow_handler overflow_policy;
  550.         typedef UseInternalRangeChecker range_checking_policy;
  551.         typedef Trunc<unsigned long> rounding_policy;
  552.     };
  553.    
  554.     template <>
  555.     struct numeric_cast_traits
  556.         <
  557.             short
  558.           , float
  559.         >
  560.     {
  561.         typedef def_overflow_handler overflow_policy;
  562.         typedef UseInternalRangeChecker range_checking_policy;
  563.         typedef Trunc<float> rounding_policy;
  564.     };
  565.    
  566.     template <>
  567.     struct numeric_cast_traits
  568.         <
  569.             short
  570.           , double
  571.         >
  572.     {
  573.         typedef def_overflow_handler overflow_policy;
  574.         typedef UseInternalRangeChecker range_checking_policy;
  575.         typedef Trunc<double> rounding_policy;
  576.     };
  577.    
  578.     template <>
  579.     struct numeric_cast_traits
  580.         <
  581.             short
  582.           , long double
  583.         >
  584.     {
  585.         typedef def_overflow_handler overflow_policy;
  586.         typedef UseInternalRangeChecker range_checking_policy;
  587.         typedef Trunc<long double> rounding_policy;
  588.     };
  589.    
  590.     template <>
  591.     struct numeric_cast_traits
  592.         <
  593.             unsigned short
  594.           , char
  595.         >
  596.     {
  597.         typedef def_overflow_handler overflow_policy;
  598.         typedef UseInternalRangeChecker range_checking_policy;
  599.         typedef Trunc<char> rounding_policy;
  600.     };
  601.    
  602.     template <>
  603.     struct numeric_cast_traits
  604.         <
  605.             unsigned short
  606.           , signed char
  607.         >
  608.     {
  609.         typedef def_overflow_handler overflow_policy;
  610.         typedef UseInternalRangeChecker range_checking_policy;
  611.         typedef Trunc<signed char> rounding_policy;
  612.     };
  613.    
  614.     template <>
  615.     struct numeric_cast_traits
  616.         <
  617.             unsigned short
  618.           , unsigned char
  619.         >
  620.     {
  621.         typedef def_overflow_handler overflow_policy;
  622.         typedef UseInternalRangeChecker range_checking_policy;
  623.         typedef Trunc<unsigned char> rounding_policy;
  624.     };
  625.    
  626.     template <>
  627.     struct numeric_cast_traits
  628.         <
  629.             unsigned short
  630.           , short
  631.         >
  632.     {
  633.         typedef def_overflow_handler overflow_policy;
  634.         typedef UseInternalRangeChecker range_checking_policy;
  635.         typedef Trunc<short> rounding_policy;
  636.     };
  637.    
  638.     template <>
  639.     struct numeric_cast_traits
  640.         <
  641.             unsigned short
  642.           , unsigned short
  643.         >
  644.     {
  645.         typedef def_overflow_handler overflow_policy;
  646.         typedef UseInternalRangeChecker range_checking_policy;
  647.         typedef Trunc<unsigned short> rounding_policy;
  648.     };
  649.    
  650.     template <>
  651.     struct numeric_cast_traits
  652.         <
  653.             unsigned short
  654.           , int
  655.         >
  656.     {
  657.         typedef def_overflow_handler overflow_policy;
  658.         typedef UseInternalRangeChecker range_checking_policy;
  659.         typedef Trunc<int> rounding_policy;
  660.     };
  661.    
  662.     template <>
  663.     struct numeric_cast_traits
  664.         <
  665.             unsigned short
  666.           , unsigned int
  667.         >
  668.     {
  669.         typedef def_overflow_handler overflow_policy;
  670.         typedef UseInternalRangeChecker range_checking_policy;
  671.         typedef Trunc<unsigned int> rounding_policy;
  672.     };
  673.    
  674.     template <>
  675.     struct numeric_cast_traits
  676.         <
  677.             unsigned short
  678.           , long
  679.         >
  680.     {
  681.         typedef def_overflow_handler overflow_policy;
  682.         typedef UseInternalRangeChecker range_checking_policy;
  683.         typedef Trunc<long> rounding_policy;
  684.     };
  685.    
  686.     template <>
  687.     struct numeric_cast_traits
  688.         <
  689.             unsigned short
  690.           , unsigned long
  691.         >
  692.     {
  693.         typedef def_overflow_handler overflow_policy;
  694.         typedef UseInternalRangeChecker range_checking_policy;
  695.         typedef Trunc<unsigned long> rounding_policy;
  696.     };
  697.    
  698.     template <>
  699.     struct numeric_cast_traits
  700.         <
  701.             unsigned short
  702.           , float
  703.         >
  704.     {
  705.         typedef def_overflow_handler overflow_policy;
  706.         typedef UseInternalRangeChecker range_checking_policy;
  707.         typedef Trunc<float> rounding_policy;
  708.     };
  709.    
  710.     template <>
  711.     struct numeric_cast_traits
  712.         <
  713.             unsigned short
  714.           , double
  715.         >
  716.     {
  717.         typedef def_overflow_handler overflow_policy;
  718.         typedef UseInternalRangeChecker range_checking_policy;
  719.         typedef Trunc<double> rounding_policy;
  720.     };
  721.    
  722.     template <>
  723.     struct numeric_cast_traits
  724.         <
  725.             unsigned short
  726.           , long double
  727.         >
  728.     {
  729.         typedef def_overflow_handler overflow_policy;
  730.         typedef UseInternalRangeChecker range_checking_policy;
  731.         typedef Trunc<long double> rounding_policy;
  732.     };
  733.    
  734.     template <>
  735.     struct numeric_cast_traits
  736.         <
  737.             int
  738.           , char
  739.         >
  740.     {
  741.         typedef def_overflow_handler overflow_policy;
  742.         typedef UseInternalRangeChecker range_checking_policy;
  743.         typedef Trunc<char> rounding_policy;
  744.     };
  745.    
  746.     template <>
  747.     struct numeric_cast_traits
  748.         <
  749.             int
  750.           , signed char
  751.         >
  752.     {
  753.         typedef def_overflow_handler overflow_policy;
  754.         typedef UseInternalRangeChecker range_checking_policy;
  755.         typedef Trunc<signed char> rounding_policy;
  756.     };
  757.    
  758.     template <>
  759.     struct numeric_cast_traits
  760.         <
  761.             int
  762.           , unsigned char
  763.         >
  764.     {
  765.         typedef def_overflow_handler overflow_policy;
  766.         typedef UseInternalRangeChecker range_checking_policy;
  767.         typedef Trunc<unsigned char> rounding_policy;
  768.     };
  769.    
  770.     template <>
  771.     struct numeric_cast_traits
  772.         <
  773.             int
  774.           , short
  775.         >
  776.     {
  777.         typedef def_overflow_handler overflow_policy;
  778.         typedef UseInternalRangeChecker range_checking_policy;
  779.         typedef Trunc<short> rounding_policy;
  780.     };
  781.    
  782.     template <>
  783.     struct numeric_cast_traits
  784.         <
  785.             int
  786.           , unsigned short
  787.         >
  788.     {
  789.         typedef def_overflow_handler overflow_policy;
  790.         typedef UseInternalRangeChecker range_checking_policy;
  791.         typedef Trunc<unsigned short> rounding_policy;
  792.     };
  793.    
  794.     template <>
  795.     struct numeric_cast_traits
  796.         <
  797.             int
  798.           , int
  799.         >
  800.     {
  801.         typedef def_overflow_handler overflow_policy;
  802.         typedef UseInternalRangeChecker range_checking_policy;
  803.         typedef Trunc<int> rounding_policy;
  804.     };
  805.    
  806.     template <>
  807.     struct numeric_cast_traits
  808.         <
  809.             int
  810.           , unsigned int
  811.         >
  812.     {
  813.         typedef def_overflow_handler overflow_policy;
  814.         typedef UseInternalRangeChecker range_checking_policy;
  815.         typedef Trunc<unsigned int> rounding_policy;
  816.     };
  817.    
  818.     template <>
  819.     struct numeric_cast_traits
  820.         <
  821.             int
  822.           , long
  823.         >
  824.     {
  825.         typedef def_overflow_handler overflow_policy;
  826.         typedef UseInternalRangeChecker range_checking_policy;
  827.         typedef Trunc<long> rounding_policy;
  828.     };
  829.    
  830.     template <>
  831.     struct numeric_cast_traits
  832.         <
  833.             int
  834.           , unsigned long
  835.         >
  836.     {
  837.         typedef def_overflow_handler overflow_policy;
  838.         typedef UseInternalRangeChecker range_checking_policy;
  839.         typedef Trunc<unsigned long> rounding_policy;
  840.     };
  841.    
  842.     template <>
  843.     struct numeric_cast_traits
  844.         <
  845.             int
  846.           , float
  847.         >
  848.     {
  849.         typedef def_overflow_handler overflow_policy;
  850.         typedef UseInternalRangeChecker range_checking_policy;
  851.         typedef Trunc<float> rounding_policy;
  852.     };
  853.    
  854.     template <>
  855.     struct numeric_cast_traits
  856.         <
  857.             int
  858.           , double
  859.         >
  860.     {
  861.         typedef def_overflow_handler overflow_policy;
  862.         typedef UseInternalRangeChecker range_checking_policy;
  863.         typedef Trunc<double> rounding_policy;
  864.     };
  865.    
  866.     template <>
  867.     struct numeric_cast_traits
  868.         <
  869.             int
  870.           , long double
  871.         >
  872.     {
  873.         typedef def_overflow_handler overflow_policy;
  874.         typedef UseInternalRangeChecker range_checking_policy;
  875.         typedef Trunc<long double> rounding_policy;
  876.     };
  877.    
  878.     template <>
  879.     struct numeric_cast_traits
  880.         <
  881.             unsigned int
  882.           , char
  883.         >
  884.     {
  885.         typedef def_overflow_handler overflow_policy;
  886.         typedef UseInternalRangeChecker range_checking_policy;
  887.         typedef Trunc<char> rounding_policy;
  888.     };
  889.    
  890.     template <>
  891.     struct numeric_cast_traits
  892.         <
  893.             unsigned int
  894.           , signed char
  895.         >
  896.     {
  897.         typedef def_overflow_handler overflow_policy;
  898.         typedef UseInternalRangeChecker range_checking_policy;
  899.         typedef Trunc<signed char> rounding_policy;
  900.     };
  901.    
  902.     template <>
  903.     struct numeric_cast_traits
  904.         <
  905.             unsigned int
  906.           , unsigned char
  907.         >
  908.     {
  909.         typedef def_overflow_handler overflow_policy;
  910.         typedef UseInternalRangeChecker range_checking_policy;
  911.         typedef Trunc<unsigned char> rounding_policy;
  912.     };
  913.    
  914.     template <>
  915.     struct numeric_cast_traits
  916.         <
  917.             unsigned int
  918.           , short
  919.         >
  920.     {
  921.         typedef def_overflow_handler overflow_policy;
  922.         typedef UseInternalRangeChecker range_checking_policy;
  923.         typedef Trunc<short> rounding_policy;
  924.     };
  925.    
  926.     template <>
  927.     struct numeric_cast_traits
  928.         <
  929.             unsigned int
  930.           , unsigned short
  931.         >
  932.     {
  933.         typedef def_overflow_handler overflow_policy;
  934.         typedef UseInternalRangeChecker range_checking_policy;
  935.         typedef Trunc<unsigned short> rounding_policy;
  936.     };
  937.    
  938.     template <>
  939.     struct numeric_cast_traits
  940.         <
  941.             unsigned int
  942.           , int
  943.         >
  944.     {
  945.         typedef def_overflow_handler overflow_policy;
  946.         typedef UseInternalRangeChecker range_checking_policy;
  947.         typedef Trunc<int> rounding_policy;
  948.     };
  949.    
  950.     template <>
  951.     struct numeric_cast_traits
  952.         <
  953.             unsigned int
  954.           , unsigned int
  955.         >
  956.     {
  957.         typedef def_overflow_handler overflow_policy;
  958.         typedef UseInternalRangeChecker range_checking_policy;
  959.         typedef Trunc<unsigned int> rounding_policy;
  960.     };
  961.    
  962.     template <>
  963.     struct numeric_cast_traits
  964.         <
  965.             unsigned int
  966.           , long
  967.         >
  968.     {
  969.         typedef def_overflow_handler overflow_policy;
  970.         typedef UseInternalRangeChecker range_checking_policy;
  971.         typedef Trunc<long> rounding_policy;
  972.     };
  973.    
  974.     template <>
  975.     struct numeric_cast_traits
  976.         <
  977.             unsigned int
  978.           , unsigned long
  979.         >
  980.     {
  981.         typedef def_overflow_handler overflow_policy;
  982.         typedef UseInternalRangeChecker range_checking_policy;
  983.         typedef Trunc<unsigned long> rounding_policy;
  984.     };
  985.    
  986.     template <>
  987.     struct numeric_cast_traits
  988.         <
  989.             unsigned int
  990.           , float
  991.         >
  992.     {
  993.         typedef def_overflow_handler overflow_policy;
  994.         typedef UseInternalRangeChecker range_checking_policy;
  995.         typedef Trunc<float> rounding_policy;
  996.     };
  997.    
  998.     template <>
  999.     struct numeric_cast_traits
  1000.         <
  1001.             unsigned int
  1002.           , double
  1003.         >
  1004.     {
  1005.         typedef def_overflow_handler overflow_policy;
  1006.         typedef UseInternalRangeChecker range_checking_policy;
  1007.         typedef Trunc<double> rounding_policy;
  1008.     };
  1009.    
  1010.     template <>
  1011.     struct numeric_cast_traits
  1012.         <
  1013.             unsigned int
  1014.           , long double
  1015.         >
  1016.     {
  1017.         typedef def_overflow_handler overflow_policy;
  1018.         typedef UseInternalRangeChecker range_checking_policy;
  1019.         typedef Trunc<long double> rounding_policy;
  1020.     };
  1021.    
  1022.     template <>
  1023.     struct numeric_cast_traits
  1024.         <
  1025.             long
  1026.           , char
  1027.         >
  1028.     {
  1029.         typedef def_overflow_handler overflow_policy;
  1030.         typedef UseInternalRangeChecker range_checking_policy;
  1031.         typedef Trunc<char> rounding_policy;
  1032.     };
  1033.    
  1034.     template <>
  1035.     struct numeric_cast_traits
  1036.         <
  1037.             long
  1038.           , signed char
  1039.         >
  1040.     {
  1041.         typedef def_overflow_handler overflow_policy;
  1042.         typedef UseInternalRangeChecker range_checking_policy;
  1043.         typedef Trunc<signed char> rounding_policy;
  1044.     };
  1045.    
  1046.     template <>
  1047.     struct numeric_cast_traits
  1048.         <
  1049.             long
  1050.           , unsigned char
  1051.         >
  1052.     {
  1053.         typedef def_overflow_handler overflow_policy;
  1054.         typedef UseInternalRangeChecker range_checking_policy;
  1055.         typedef Trunc<unsigned char> rounding_policy;
  1056.     };
  1057.    
  1058.     template <>
  1059.     struct numeric_cast_traits
  1060.         <
  1061.             long
  1062.           , short
  1063.         >
  1064.     {
  1065.         typedef def_overflow_handler overflow_policy;
  1066.         typedef UseInternalRangeChecker range_checking_policy;
  1067.         typedef Trunc<short> rounding_policy;
  1068.     };
  1069.    
  1070.     template <>
  1071.     struct numeric_cast_traits
  1072.         <
  1073.             long
  1074.           , unsigned short
  1075.         >
  1076.     {
  1077.         typedef def_overflow_handler overflow_policy;
  1078.         typedef UseInternalRangeChecker range_checking_policy;
  1079.         typedef Trunc<unsigned short> rounding_policy;
  1080.     };
  1081.    
  1082.     template <>
  1083.     struct numeric_cast_traits
  1084.         <
  1085.             long
  1086.           , int
  1087.         >
  1088.     {
  1089.         typedef def_overflow_handler overflow_policy;
  1090.         typedef UseInternalRangeChecker range_checking_policy;
  1091.         typedef Trunc<int> rounding_policy;
  1092.     };
  1093.    
  1094.     template <>
  1095.     struct numeric_cast_traits
  1096.         <
  1097.             long
  1098.           , unsigned int
  1099.         >
  1100.     {
  1101.         typedef def_overflow_handler overflow_policy;
  1102.         typedef UseInternalRangeChecker range_checking_policy;
  1103.         typedef Trunc<unsigned int> rounding_policy;
  1104.     };
  1105.    
  1106.     template <>
  1107.     struct numeric_cast_traits
  1108.         <
  1109.             long
  1110.           , long
  1111.         >
  1112.     {
  1113.         typedef def_overflow_handler overflow_policy;
  1114.         typedef UseInternalRangeChecker range_checking_policy;
  1115.         typedef Trunc<long> rounding_policy;
  1116.     };
  1117.    
  1118.     template <>
  1119.     struct numeric_cast_traits
  1120.         <
  1121.             long
  1122.           , unsigned long
  1123.         >
  1124.     {
  1125.         typedef def_overflow_handler overflow_policy;
  1126.         typedef UseInternalRangeChecker range_checking_policy;
  1127.         typedef Trunc<unsigned long> rounding_policy;
  1128.     };
  1129.    
  1130.     template <>
  1131.     struct numeric_cast_traits
  1132.         <
  1133.             long
  1134.           , float
  1135.         >
  1136.     {
  1137.         typedef def_overflow_handler overflow_policy;
  1138.         typedef UseInternalRangeChecker range_checking_policy;
  1139.         typedef Trunc<float> rounding_policy;
  1140.     };
  1141.    
  1142.     template <>
  1143.     struct numeric_cast_traits
  1144.         <
  1145.             long
  1146.           , double
  1147.         >
  1148.     {
  1149.         typedef def_overflow_handler overflow_policy;
  1150.         typedef UseInternalRangeChecker range_checking_policy;
  1151.         typedef Trunc<double> rounding_policy;
  1152.     };
  1153.    
  1154.     template <>
  1155.     struct numeric_cast_traits
  1156.         <
  1157.             long
  1158.           , long double
  1159.         >
  1160.     {
  1161.         typedef def_overflow_handler overflow_policy;
  1162.         typedef UseInternalRangeChecker range_checking_policy;
  1163.         typedef Trunc<long double> rounding_policy;
  1164.     };
  1165.    
  1166.     template <>
  1167.     struct numeric_cast_traits
  1168.         <
  1169.             unsigned long
  1170.           , char
  1171.         >
  1172.     {
  1173.         typedef def_overflow_handler overflow_policy;
  1174.         typedef UseInternalRangeChecker range_checking_policy;
  1175.         typedef Trunc<char> rounding_policy;
  1176.     };
  1177.    
  1178.     template <>
  1179.     struct numeric_cast_traits
  1180.         <
  1181.             unsigned long
  1182.           , signed char
  1183.         >
  1184.     {
  1185.         typedef def_overflow_handler overflow_policy;
  1186.         typedef UseInternalRangeChecker range_checking_policy;
  1187.         typedef Trunc<signed char> rounding_policy;
  1188.     };
  1189.    
  1190.     template <>
  1191.     struct numeric_cast_traits
  1192.         <
  1193.             unsigned long
  1194.           , unsigned char
  1195.         >
  1196.     {
  1197.         typedef def_overflow_handler overflow_policy;
  1198.         typedef UseInternalRangeChecker range_checking_policy;
  1199.         typedef Trunc<unsigned char> rounding_policy;
  1200.     };
  1201.    
  1202.     template <>
  1203.     struct numeric_cast_traits
  1204.         <
  1205.             unsigned long
  1206.           , short
  1207.         >
  1208.     {
  1209.         typedef def_overflow_handler overflow_policy;
  1210.         typedef UseInternalRangeChecker range_checking_policy;
  1211.         typedef Trunc<short> rounding_policy;
  1212.     };
  1213.    
  1214.     template <>
  1215.     struct numeric_cast_traits
  1216.         <
  1217.             unsigned long
  1218.           , unsigned short
  1219.         >
  1220.     {
  1221.         typedef def_overflow_handler overflow_policy;
  1222.         typedef UseInternalRangeChecker range_checking_policy;
  1223.         typedef Trunc<unsigned short> rounding_policy;
  1224.     };
  1225.    
  1226.     template <>
  1227.     struct numeric_cast_traits
  1228.         <
  1229.             unsigned long
  1230.           , int
  1231.         >
  1232.     {
  1233.         typedef def_overflow_handler overflow_policy;
  1234.         typedef UseInternalRangeChecker range_checking_policy;
  1235.         typedef Trunc<int> rounding_policy;
  1236.     };
  1237.    
  1238.     template <>
  1239.     struct numeric_cast_traits
  1240.         <
  1241.             unsigned long
  1242.           , unsigned int
  1243.         >
  1244.     {
  1245.         typedef def_overflow_handler overflow_policy;
  1246.         typedef UseInternalRangeChecker range_checking_policy;
  1247.         typedef Trunc<unsigned int> rounding_policy;
  1248.     };
  1249.    
  1250.     template <>
  1251.     struct numeric_cast_traits
  1252.         <
  1253.             unsigned long
  1254.           , long
  1255.         >
  1256.     {
  1257.         typedef def_overflow_handler overflow_policy;
  1258.         typedef UseInternalRangeChecker range_checking_policy;
  1259.         typedef Trunc<long> rounding_policy;
  1260.     };
  1261.    
  1262.     template <>
  1263.     struct numeric_cast_traits
  1264.         <
  1265.             unsigned long
  1266.           , unsigned long
  1267.         >
  1268.     {
  1269.         typedef def_overflow_handler overflow_policy;
  1270.         typedef UseInternalRangeChecker range_checking_policy;
  1271.         typedef Trunc<unsigned long> rounding_policy;
  1272.     };
  1273.    
  1274.     template <>
  1275.     struct numeric_cast_traits
  1276.         <
  1277.             unsigned long
  1278.           , float
  1279.         >
  1280.     {
  1281.         typedef def_overflow_handler overflow_policy;
  1282.         typedef UseInternalRangeChecker range_checking_policy;
  1283.         typedef Trunc<float> rounding_policy;
  1284.     };
  1285.    
  1286.     template <>
  1287.     struct numeric_cast_traits
  1288.         <
  1289.             unsigned long
  1290.           , double
  1291.         >
  1292.     {
  1293.         typedef def_overflow_handler overflow_policy;
  1294.         typedef UseInternalRangeChecker range_checking_policy;
  1295.         typedef Trunc<double> rounding_policy;
  1296.     };
  1297.    
  1298.     template <>
  1299.     struct numeric_cast_traits
  1300.         <
  1301.             unsigned long
  1302.           , long double
  1303.         >
  1304.     {
  1305.         typedef def_overflow_handler overflow_policy;
  1306.         typedef UseInternalRangeChecker range_checking_policy;
  1307.         typedef Trunc<long double> rounding_policy;
  1308.     };
  1309.    
  1310.     template <>
  1311.     struct numeric_cast_traits
  1312.         <
  1313.             float
  1314.           , char
  1315.         >
  1316.     {
  1317.         typedef def_overflow_handler overflow_policy;
  1318.         typedef UseInternalRangeChecker range_checking_policy;
  1319.         typedef Trunc<char> rounding_policy;
  1320.     };
  1321.    
  1322.     template <>
  1323.     struct numeric_cast_traits
  1324.         <
  1325.             float
  1326.           , signed char
  1327.         >
  1328.     {
  1329.         typedef def_overflow_handler overflow_policy;
  1330.         typedef UseInternalRangeChecker range_checking_policy;
  1331.         typedef Trunc<signed char> rounding_policy;
  1332.     };
  1333.    
  1334.     template <>
  1335.     struct numeric_cast_traits
  1336.         <
  1337.             float
  1338.           , unsigned char
  1339.         >
  1340.     {
  1341.         typedef def_overflow_handler overflow_policy;
  1342.         typedef UseInternalRangeChecker range_checking_policy;
  1343.         typedef Trunc<unsigned char> rounding_policy;
  1344.     };
  1345.    
  1346.     template <>
  1347.     struct numeric_cast_traits
  1348.         <
  1349.             float
  1350.           , short
  1351.         >
  1352.     {
  1353.         typedef def_overflow_handler overflow_policy;
  1354.         typedef UseInternalRangeChecker range_checking_policy;
  1355.         typedef Trunc<short> rounding_policy;
  1356.     };
  1357.    
  1358.     template <>
  1359.     struct numeric_cast_traits
  1360.         <
  1361.             float
  1362.           , unsigned short
  1363.         >
  1364.     {
  1365.         typedef def_overflow_handler overflow_policy;
  1366.         typedef UseInternalRangeChecker range_checking_policy;
  1367.         typedef Trunc<unsigned short> rounding_policy;
  1368.     };
  1369.    
  1370.     template <>
  1371.     struct numeric_cast_traits
  1372.         <
  1373.             float
  1374.           , int
  1375.         >
  1376.     {
  1377.         typedef def_overflow_handler overflow_policy;
  1378.         typedef UseInternalRangeChecker range_checking_policy;
  1379.         typedef Trunc<int> rounding_policy;
  1380.     };
  1381.    
  1382.     template <>
  1383.     struct numeric_cast_traits
  1384.         <
  1385.             float
  1386.           , unsigned int
  1387.         >
  1388.     {
  1389.         typedef def_overflow_handler overflow_policy;
  1390.         typedef UseInternalRangeChecker range_checking_policy;
  1391.         typedef Trunc<unsigned int> rounding_policy;
  1392.     };
  1393.    
  1394.     template <>
  1395.     struct numeric_cast_traits
  1396.         <
  1397.             float
  1398.           , long
  1399.         >
  1400.     {
  1401.         typedef def_overflow_handler overflow_policy;
  1402.         typedef UseInternalRangeChecker range_checking_policy;
  1403.         typedef Trunc<long> rounding_policy;
  1404.     };
  1405.    
  1406.     template <>
  1407.     struct numeric_cast_traits
  1408.         <
  1409.             float
  1410.           , unsigned long
  1411.         >
  1412.     {
  1413.         typedef def_overflow_handler overflow_policy;
  1414.         typedef UseInternalRangeChecker range_checking_policy;
  1415.         typedef Trunc<unsigned long> rounding_policy;
  1416.     };
  1417.    
  1418.     template <>
  1419.     struct numeric_cast_traits
  1420.         <
  1421.             float
  1422.           , float
  1423.         >
  1424.     {
  1425.         typedef def_overflow_handler overflow_policy;
  1426.         typedef UseInternalRangeChecker range_checking_policy;
  1427.         typedef Trunc<float> rounding_policy;
  1428.     };
  1429.    
  1430.     template <>
  1431.     struct numeric_cast_traits
  1432.         <
  1433.             float
  1434.           , double
  1435.         >
  1436.     {
  1437.         typedef def_overflow_handler overflow_policy;
  1438.         typedef UseInternalRangeChecker range_checking_policy;
  1439.         typedef Trunc<double> rounding_policy;
  1440.     };
  1441.    
  1442.     template <>
  1443.     struct numeric_cast_traits
  1444.         <
  1445.             float
  1446.           , long double
  1447.         >
  1448.     {
  1449.         typedef def_overflow_handler overflow_policy;
  1450.         typedef UseInternalRangeChecker range_checking_policy;
  1451.         typedef Trunc<long double> rounding_policy;
  1452.     };
  1453.    
  1454.     template <>
  1455.     struct numeric_cast_traits
  1456.         <
  1457.             double
  1458.           , char
  1459.         >
  1460.     {
  1461.         typedef def_overflow_handler overflow_policy;
  1462.         typedef UseInternalRangeChecker range_checking_policy;
  1463.         typedef Trunc<char> rounding_policy;
  1464.     };
  1465.    
  1466.     template <>
  1467.     struct numeric_cast_traits
  1468.         <
  1469.             double
  1470.           , signed char
  1471.         >
  1472.     {
  1473.         typedef def_overflow_handler overflow_policy;
  1474.         typedef UseInternalRangeChecker range_checking_policy;
  1475.         typedef Trunc<signed char> rounding_policy;
  1476.     };
  1477.    
  1478.     template <>
  1479.     struct numeric_cast_traits
  1480.         <
  1481.             double
  1482.           , unsigned char
  1483.         >
  1484.     {
  1485.         typedef def_overflow_handler overflow_policy;
  1486.         typedef UseInternalRangeChecker range_checking_policy;
  1487.         typedef Trunc<unsigned char> rounding_policy;
  1488.     };
  1489.    
  1490.     template <>
  1491.     struct numeric_cast_traits
  1492.         <
  1493.             double
  1494.           , short
  1495.         >
  1496.     {
  1497.         typedef def_overflow_handler overflow_policy;
  1498.         typedef UseInternalRangeChecker range_checking_policy;
  1499.         typedef Trunc<short> rounding_policy;
  1500.     };
  1501.    
  1502.     template <>
  1503.     struct numeric_cast_traits
  1504.         <
  1505.             double
  1506.           , unsigned short
  1507.         >
  1508.     {
  1509.         typedef def_overflow_handler overflow_policy;
  1510.         typedef UseInternalRangeChecker range_checking_policy;
  1511.         typedef Trunc<unsigned short> rounding_policy;
  1512.     };
  1513.    
  1514.     template <>
  1515.     struct numeric_cast_traits
  1516.         <
  1517.             double
  1518.           , int
  1519.         >
  1520.     {
  1521.         typedef def_overflow_handler overflow_policy;
  1522.         typedef UseInternalRangeChecker range_checking_policy;
  1523.         typedef Trunc<int> rounding_policy;
  1524.     };
  1525.    
  1526.     template <>
  1527.     struct numeric_cast_traits
  1528.         <
  1529.             double
  1530.           , unsigned int
  1531.         >
  1532.     {
  1533.         typedef def_overflow_handler overflow_policy;
  1534.         typedef UseInternalRangeChecker range_checking_policy;
  1535.         typedef Trunc<unsigned int> rounding_policy;
  1536.     };
  1537.    
  1538.     template <>
  1539.     struct numeric_cast_traits
  1540.         <
  1541.             double
  1542.           , long
  1543.         >
  1544.     {
  1545.         typedef def_overflow_handler overflow_policy;
  1546.         typedef UseInternalRangeChecker range_checking_policy;
  1547.         typedef Trunc<long> rounding_policy;
  1548.     };
  1549.    
  1550.     template <>
  1551.     struct numeric_cast_traits
  1552.         <
  1553.             double
  1554.           , unsigned long
  1555.         >
  1556.     {
  1557.         typedef def_overflow_handler overflow_policy;
  1558.         typedef UseInternalRangeChecker range_checking_policy;
  1559.         typedef Trunc<unsigned long> rounding_policy;
  1560.     };
  1561.    
  1562.     template <>
  1563.     struct numeric_cast_traits
  1564.         <
  1565.             double
  1566.           , float
  1567.         >
  1568.     {
  1569.         typedef def_overflow_handler overflow_policy;
  1570.         typedef UseInternalRangeChecker range_checking_policy;
  1571.         typedef Trunc<float> rounding_policy;
  1572.     };
  1573.    
  1574.     template <>
  1575.     struct numeric_cast_traits
  1576.         <
  1577.             double
  1578.           , double
  1579.         >
  1580.     {
  1581.         typedef def_overflow_handler overflow_policy;
  1582.         typedef UseInternalRangeChecker range_checking_policy;
  1583.         typedef Trunc<double> rounding_policy;
  1584.     };
  1585.    
  1586.     template <>
  1587.     struct numeric_cast_traits
  1588.         <
  1589.             double
  1590.           , long double
  1591.         >
  1592.     {
  1593.         typedef def_overflow_handler overflow_policy;
  1594.         typedef UseInternalRangeChecker range_checking_policy;
  1595.         typedef Trunc<long double> rounding_policy;
  1596.     };
  1597.    
  1598.     template <>
  1599.     struct numeric_cast_traits
  1600.         <
  1601.             long double
  1602.           , char
  1603.         >
  1604.     {
  1605.         typedef def_overflow_handler overflow_policy;
  1606.         typedef UseInternalRangeChecker range_checking_policy;
  1607.         typedef Trunc<char> rounding_policy;
  1608.     };
  1609.    
  1610.     template <>
  1611.     struct numeric_cast_traits
  1612.         <
  1613.             long double
  1614.           , signed char
  1615.         >
  1616.     {
  1617.         typedef def_overflow_handler overflow_policy;
  1618.         typedef UseInternalRangeChecker range_checking_policy;
  1619.         typedef Trunc<signed char> rounding_policy;
  1620.     };
  1621.    
  1622.     template <>
  1623.     struct numeric_cast_traits
  1624.         <
  1625.             long double
  1626.           , unsigned char
  1627.         >
  1628.     {
  1629.         typedef def_overflow_handler overflow_policy;
  1630.         typedef UseInternalRangeChecker range_checking_policy;
  1631.         typedef Trunc<unsigned char> rounding_policy;
  1632.     };
  1633.    
  1634.     template <>
  1635.     struct numeric_cast_traits
  1636.         <
  1637.             long double
  1638.           , short
  1639.         >
  1640.     {
  1641.         typedef def_overflow_handler overflow_policy;
  1642.         typedef UseInternalRangeChecker range_checking_policy;
  1643.         typedef Trunc<short> rounding_policy;
  1644.     };
  1645.    
  1646.     template <>
  1647.     struct numeric_cast_traits
  1648.         <
  1649.             long double
  1650.           , unsigned short
  1651.         >
  1652.     {
  1653.         typedef def_overflow_handler overflow_policy;
  1654.         typedef UseInternalRangeChecker range_checking_policy;
  1655.         typedef Trunc<unsigned short> rounding_policy;
  1656.     };
  1657.    
  1658.     template <>
  1659.     struct numeric_cast_traits
  1660.         <
  1661.             long double
  1662.           , int
  1663.         >
  1664.     {
  1665.         typedef def_overflow_handler overflow_policy;
  1666.         typedef UseInternalRangeChecker range_checking_policy;
  1667.         typedef Trunc<int> rounding_policy;
  1668.     };
  1669.    
  1670.     template <>
  1671.     struct numeric_cast_traits
  1672.         <
  1673.             long double
  1674.           , unsigned int
  1675.         >
  1676.     {
  1677.         typedef def_overflow_handler overflow_policy;
  1678.         typedef UseInternalRangeChecker range_checking_policy;
  1679.         typedef Trunc<unsigned int> rounding_policy;
  1680.     };
  1681.    
  1682.     template <>
  1683.     struct numeric_cast_traits
  1684.         <
  1685.             long double
  1686.           , long
  1687.         >
  1688.     {
  1689.         typedef def_overflow_handler overflow_policy;
  1690.         typedef UseInternalRangeChecker range_checking_policy;
  1691.         typedef Trunc<long> rounding_policy;
  1692.     };
  1693.    
  1694.     template <>
  1695.     struct numeric_cast_traits
  1696.         <
  1697.             long double
  1698.           , unsigned long
  1699.         >
  1700.     {
  1701.         typedef def_overflow_handler overflow_policy;
  1702.         typedef UseInternalRangeChecker range_checking_policy;
  1703.         typedef Trunc<unsigned long> rounding_policy;
  1704.     };
  1705.    
  1706.     template <>
  1707.     struct numeric_cast_traits
  1708.         <
  1709.             long double
  1710.           , float
  1711.         >
  1712.     {
  1713.         typedef def_overflow_handler overflow_policy;
  1714.         typedef UseInternalRangeChecker range_checking_policy;
  1715.         typedef Trunc<float> rounding_policy;
  1716.     };
  1717.    
  1718.     template <>
  1719.     struct numeric_cast_traits
  1720.         <
  1721.             long double
  1722.           , double
  1723.         >
  1724.     {
  1725.         typedef def_overflow_handler overflow_policy;
  1726.         typedef UseInternalRangeChecker range_checking_policy;
  1727.         typedef Trunc<double> rounding_policy;
  1728.     };
  1729.    
  1730.     template <>
  1731.     struct numeric_cast_traits
  1732.         <
  1733.             long double
  1734.           , long double
  1735.         >
  1736.     {
  1737.         typedef def_overflow_handler overflow_policy;
  1738.         typedef UseInternalRangeChecker range_checking_policy;
  1739.         typedef Trunc<long double> rounding_policy;
  1740.     };
  1741. }}
  1742.  
downloadnumeric_cast_traits_common.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top