37 #ifndef VIGRA_PROMOTETRAITS_HXX 
   38 #define VIGRA_PROMOTETRAITS_HXX 
   43 struct PromoteTraits<bool, bool> : 
public detail::PromoteType<bool, bool>
 
   45     typedef detail::PromoteType<bool, bool>::Promote Promote;
 
   46     using detail::PromoteType<bool, bool>::toPromote;
 
   50 struct PromoteTraits<bool, signed char> : 
public detail::PromoteType<bool, signed char>
 
   52     typedef detail::PromoteType<bool, signed char>::Promote Promote;
 
   53     using detail::PromoteType<bool, signed char>::toPromote;
 
   57 struct PromoteTraits<bool, unsigned char> : 
public detail::PromoteType<bool, unsigned char>
 
   59     typedef detail::PromoteType<bool, unsigned char>::Promote Promote;
 
   60     using detail::PromoteType<bool, unsigned char>::toPromote;
 
   64 struct PromoteTraits<bool, short> : 
public detail::PromoteType<bool, short>
 
   66     typedef detail::PromoteType<bool, short>::Promote Promote;
 
   67     using detail::PromoteType<bool, short>::toPromote;
 
   71 struct PromoteTraits<bool, unsigned short> : 
public detail::PromoteType<bool, unsigned short>
 
   73     typedef detail::PromoteType<bool, unsigned short>::Promote Promote;
 
   74     using detail::PromoteType<bool, unsigned short>::toPromote;
 
   78 struct PromoteTraits<bool, int> : 
public detail::PromoteType<bool, int>
 
   80     typedef detail::PromoteType<bool, int>::Promote Promote;
 
   81     using detail::PromoteType<bool, int>::toPromote;
 
   85 struct PromoteTraits<bool, unsigned int> : 
public detail::PromoteType<bool, unsigned int>
 
   87     typedef detail::PromoteType<bool, unsigned int>::Promote Promote;
 
   88     using detail::PromoteType<bool, unsigned int>::toPromote;
 
   92 struct PromoteTraits<bool, long> : 
public detail::PromoteType<bool, long>
 
   94     typedef detail::PromoteType<bool, long>::Promote Promote;
 
   95     using detail::PromoteType<bool, long>::toPromote;
 
   99 struct PromoteTraits<bool, unsigned long> : 
public detail::PromoteType<bool, unsigned long>
 
  101     typedef detail::PromoteType<bool, unsigned long>::Promote Promote;
 
  102     using detail::PromoteType<bool, unsigned long>::toPromote;
 
  106 struct PromoteTraits<bool, float> : 
public detail::PromoteType<bool, float>
 
  108     typedef detail::PromoteType<bool, float>::Promote Promote;
 
  109     using detail::PromoteType<bool, float>::toPromote;
 
  113 struct PromoteTraits<bool, double> : 
public detail::PromoteType<bool, double>
 
  115     typedef detail::PromoteType<bool, double>::Promote Promote;
 
  116     using detail::PromoteType<bool, double>::toPromote;
 
  120 struct PromoteTraits<bool, long double> : 
public detail::PromoteType<bool, long double>
 
  122     typedef detail::PromoteType<bool, long double>::Promote Promote;
 
  123     using detail::PromoteType<bool, long double>::toPromote;
 
  128 struct PromoteTraits<bool, long long> : 
public detail::PromoteType<bool, long long>
 
  130     typedef detail::PromoteType<bool, long long>::Promote Promote;
 
  131     using detail::PromoteType<bool, long long>::toPromote;
 
  137 struct PromoteTraits<bool, unsigned long long> : 
public detail::PromoteType<bool, unsigned long long>
 
  139     typedef detail::PromoteType<bool, unsigned long long>::Promote Promote;
 
  140     using detail::PromoteType<bool, unsigned long long>::toPromote;
 
  145 struct PromoteTraits<signed char, signed char> : 
public detail::PromoteType<signed char, signed char>
 
  147     typedef detail::PromoteType<signed char, signed char>::Promote Promote;
 
  148     using detail::PromoteType<signed char, signed char>::toPromote;
 
  152 struct PromoteTraits<signed char, bool> : 
public detail::PromoteType<signed char, bool>
 
  154     typedef detail::PromoteType<signed char, bool>::Promote Promote;
 
  155     using detail::PromoteType<signed char, bool>::toPromote;
 
  159 struct PromoteTraits<signed char, unsigned char> : 
public detail::PromoteType<signed char, unsigned char>
 
  161     typedef detail::PromoteType<signed char, unsigned char>::Promote Promote;
 
  162     using detail::PromoteType<signed char, unsigned char>::toPromote;
 
  166 struct PromoteTraits<signed char, short> : 
public detail::PromoteType<signed char, short>
 
  168     typedef detail::PromoteType<signed char, short>::Promote Promote;
 
  169     using detail::PromoteType<signed char, short>::toPromote;
 
  173 struct PromoteTraits<signed char, unsigned short> : 
public detail::PromoteType<signed char, unsigned short>
 
  175     typedef detail::PromoteType<signed char, unsigned short>::Promote Promote;
 
  176     using detail::PromoteType<signed char, unsigned short>::toPromote;
 
  180 struct PromoteTraits<signed char, int> : 
public detail::PromoteType<signed char, int>
 
  182     typedef detail::PromoteType<signed char, int>::Promote Promote;
 
  183     using detail::PromoteType<signed char, int>::toPromote;
 
  187 struct PromoteTraits<signed char, unsigned int> : 
public detail::PromoteType<signed char, unsigned int>
 
  189     typedef detail::PromoteType<signed char, unsigned int>::Promote Promote;
 
  190     using detail::PromoteType<signed char, unsigned int>::toPromote;
 
  194 struct PromoteTraits<signed char, long> : 
public detail::PromoteType<signed char, long>
 
  196     typedef detail::PromoteType<signed char, long>::Promote Promote;
 
  197     using detail::PromoteType<signed char, long>::toPromote;
 
  201 struct PromoteTraits<signed char, unsigned long> : 
public detail::PromoteType<signed char, unsigned long>
 
  203     typedef detail::PromoteType<signed char, unsigned long>::Promote Promote;
 
  204     using detail::PromoteType<signed char, unsigned long>::toPromote;
 
  208 struct PromoteTraits<signed char, float> : 
public detail::PromoteType<signed char, float>
 
  210     typedef detail::PromoteType<signed char, float>::Promote Promote;
 
  211     using detail::PromoteType<signed char, float>::toPromote;
 
  215 struct PromoteTraits<signed char, double> : 
public detail::PromoteType<signed char, double>
 
  217     typedef detail::PromoteType<signed char, double>::Promote Promote;
 
  218     using detail::PromoteType<signed char, double>::toPromote;
 
  222 struct PromoteTraits<signed char, long double> : 
public detail::PromoteType<signed char, long double>
 
  224     typedef detail::PromoteType<signed char, long double>::Promote Promote;
 
  225     using detail::PromoteType<signed char, long double>::toPromote;
 
  230 struct PromoteTraits<signed char, long long> : 
public detail::PromoteType<signed char, long long>
 
  232     typedef detail::PromoteType<signed char, long long>::Promote Promote;
 
  233     using detail::PromoteType<signed char, long long>::toPromote;
 
  239 struct PromoteTraits<signed char, unsigned long long> : 
public detail::PromoteType<signed char, unsigned long long>
 
  241     typedef detail::PromoteType<signed char, unsigned long long>::Promote Promote;
 
  242     using detail::PromoteType<signed char, unsigned long long>::toPromote;
 
  247 struct PromoteTraits<unsigned char, unsigned char> : 
public detail::PromoteType<unsigned char, unsigned char>
 
  249     typedef detail::PromoteType<unsigned char, unsigned char>::Promote Promote;
 
  250     using detail::PromoteType<unsigned char, unsigned char>::toPromote;
 
  254 struct PromoteTraits<unsigned char, bool> : 
public detail::PromoteType<unsigned char, bool>
 
  256     typedef detail::PromoteType<unsigned char, bool>::Promote Promote;
 
  257     using detail::PromoteType<unsigned char, bool>::toPromote;
 
  261 struct PromoteTraits<unsigned char, signed char> : 
public detail::PromoteType<unsigned char, signed char>
 
  263     typedef detail::PromoteType<unsigned char, signed char>::Promote Promote;
 
  264     using detail::PromoteType<unsigned char, signed char>::toPromote;
 
  268 struct PromoteTraits<unsigned char, short> : 
public detail::PromoteType<unsigned char, short>
 
  270     typedef detail::PromoteType<unsigned char, short>::Promote Promote;
 
  271     using detail::PromoteType<unsigned char, short>::toPromote;
 
  275 struct PromoteTraits<unsigned char, unsigned short> : 
public detail::PromoteType<unsigned char, unsigned short>
 
  277     typedef detail::PromoteType<unsigned char, unsigned short>::Promote Promote;
 
  278     using detail::PromoteType<unsigned char, unsigned short>::toPromote;
 
  282 struct PromoteTraits<unsigned char, int> : 
public detail::PromoteType<unsigned char, int>
 
  284     typedef detail::PromoteType<unsigned char, int>::Promote Promote;
 
  285     using detail::PromoteType<unsigned char, int>::toPromote;
 
  289 struct PromoteTraits<unsigned char, unsigned int> : 
public detail::PromoteType<unsigned char, unsigned int>
 
  291     typedef detail::PromoteType<unsigned char, unsigned int>::Promote Promote;
 
  292     using detail::PromoteType<unsigned char, unsigned int>::toPromote;
 
  296 struct PromoteTraits<unsigned char, long> : 
public detail::PromoteType<unsigned char, long>
 
  298     typedef detail::PromoteType<unsigned char, long>::Promote Promote;
 
  299     using detail::PromoteType<unsigned char, long>::toPromote;
 
  303 struct PromoteTraits<unsigned char, unsigned long> : 
public detail::PromoteType<unsigned char, unsigned long>
 
  305     typedef detail::PromoteType<unsigned char, unsigned long>::Promote Promote;
 
  306     using detail::PromoteType<unsigned char, unsigned long>::toPromote;
 
  310 struct PromoteTraits<unsigned char, float> : 
public detail::PromoteType<unsigned char, float>
 
  312     typedef detail::PromoteType<unsigned char, float>::Promote Promote;
 
  313     using detail::PromoteType<unsigned char, float>::toPromote;
 
  317 struct PromoteTraits<unsigned char, double> : 
public detail::PromoteType<unsigned char, double>
 
  319     typedef detail::PromoteType<unsigned char, double>::Promote Promote;
 
  320     using detail::PromoteType<unsigned char, double>::toPromote;
 
  324 struct PromoteTraits<unsigned char, long double> : 
public detail::PromoteType<unsigned char, long double>
 
  326     typedef detail::PromoteType<unsigned char, long double>::Promote Promote;
 
  327     using detail::PromoteType<unsigned char, long double>::toPromote;
 
  332 struct PromoteTraits<unsigned char, long long> : 
public detail::PromoteType<unsigned char, long long>
 
  334     typedef detail::PromoteType<unsigned char, long long>::Promote Promote;
 
  335     using detail::PromoteType<unsigned char, long long>::toPromote;
 
  341 struct PromoteTraits<unsigned char, unsigned long long> : 
public detail::PromoteType<unsigned char, unsigned long long>
 
  343     typedef detail::PromoteType<unsigned char, unsigned long long>::Promote Promote;
 
  344     using detail::PromoteType<unsigned char, unsigned long long>::toPromote;
 
  349 struct PromoteTraits<short, short> : 
public detail::PromoteType<short, short>
 
  351     typedef detail::PromoteType<short, short>::Promote Promote;
 
  352     using detail::PromoteType<short, short>::toPromote;
 
  356 struct PromoteTraits<short, bool> : 
public detail::PromoteType<short, bool>
 
  358     typedef detail::PromoteType<short, bool>::Promote Promote;
 
  359     using detail::PromoteType<short, bool>::toPromote;
 
  363 struct PromoteTraits<short, signed char> : 
public detail::PromoteType<short, signed char>
 
  365     typedef detail::PromoteType<short, signed char>::Promote Promote;
 
  366     using detail::PromoteType<short, signed char>::toPromote;
 
  370 struct PromoteTraits<short, unsigned char> : 
public detail::PromoteType<short, unsigned char>
 
  372     typedef detail::PromoteType<short, unsigned char>::Promote Promote;
 
  373     using detail::PromoteType<short, unsigned char>::toPromote;
 
  377 struct PromoteTraits<short, unsigned short> : 
public detail::PromoteType<short, unsigned short>
 
  379     typedef detail::PromoteType<short, unsigned short>::Promote Promote;
 
  380     using detail::PromoteType<short, unsigned short>::toPromote;
 
  384 struct PromoteTraits<short, int> : 
public detail::PromoteType<short, int>
 
  386     typedef detail::PromoteType<short, int>::Promote Promote;
 
  387     using detail::PromoteType<short, int>::toPromote;
 
  391 struct PromoteTraits<short, unsigned int> : 
public detail::PromoteType<short, unsigned int>
 
  393     typedef detail::PromoteType<short, unsigned int>::Promote Promote;
 
  394     using detail::PromoteType<short, unsigned int>::toPromote;
 
  398 struct PromoteTraits<short, long> : 
public detail::PromoteType<short, long>
 
  400     typedef detail::PromoteType<short, long>::Promote Promote;
 
  401     using detail::PromoteType<short, long>::toPromote;
 
  405 struct PromoteTraits<short, unsigned long> : 
public detail::PromoteType<short, unsigned long>
 
  407     typedef detail::PromoteType<short, unsigned long>::Promote Promote;
 
  408     using detail::PromoteType<short, unsigned long>::toPromote;
 
  412 struct PromoteTraits<short, float> : 
public detail::PromoteType<short, float>
 
  414     typedef detail::PromoteType<short, float>::Promote Promote;
 
  415     using detail::PromoteType<short, float>::toPromote;
 
  419 struct PromoteTraits<short, double> : 
public detail::PromoteType<short, double>
 
  421     typedef detail::PromoteType<short, double>::Promote Promote;
 
  422     using detail::PromoteType<short, double>::toPromote;
 
  426 struct PromoteTraits<short, long double> : 
public detail::PromoteType<short, long double>
 
  428     typedef detail::PromoteType<short, long double>::Promote Promote;
 
  429     using detail::PromoteType<short, long double>::toPromote;
 
  434 struct PromoteTraits<short, long long> : 
public detail::PromoteType<short, long long>
 
  436     typedef detail::PromoteType<short, long long>::Promote Promote;
 
  437     using detail::PromoteType<short, long long>::toPromote;
 
  443 struct PromoteTraits<short, unsigned long long> : 
public detail::PromoteType<short, unsigned long long>
 
  445     typedef detail::PromoteType<short, unsigned long long>::Promote Promote;
 
  446     using detail::PromoteType<short, unsigned long long>::toPromote;
 
  451 struct PromoteTraits<unsigned short, unsigned short> : 
public detail::PromoteType<unsigned short, unsigned short>
 
  453     typedef detail::PromoteType<unsigned short, unsigned short>::Promote Promote;
 
  454     using detail::PromoteType<unsigned short, unsigned short>::toPromote;
 
  458 struct PromoteTraits<unsigned short, bool> : 
public detail::PromoteType<unsigned short, bool>
 
  460     typedef detail::PromoteType<unsigned short, bool>::Promote Promote;
 
  461     using detail::PromoteType<unsigned short, bool>::toPromote;
 
  465 struct PromoteTraits<unsigned short, signed char> : 
public detail::PromoteType<unsigned short, signed char>
 
  467     typedef detail::PromoteType<unsigned short, signed char>::Promote Promote;
 
  468     using detail::PromoteType<unsigned short, signed char>::toPromote;
 
  472 struct PromoteTraits<unsigned short, unsigned char> : 
public detail::PromoteType<unsigned short, unsigned char>
 
  474     typedef detail::PromoteType<unsigned short, unsigned char>::Promote Promote;
 
  475     using detail::PromoteType<unsigned short, unsigned char>::toPromote;
 
  479 struct PromoteTraits<unsigned short, short> : 
public detail::PromoteType<unsigned short, short>
 
  481     typedef detail::PromoteType<unsigned short, short>::Promote Promote;
 
  482     using detail::PromoteType<unsigned short, short>::toPromote;
 
  486 struct PromoteTraits<unsigned short, int> : 
public detail::PromoteType<unsigned short, int>
 
  488     typedef detail::PromoteType<unsigned short, int>::Promote Promote;
 
  489     using detail::PromoteType<unsigned short, int>::toPromote;
 
  493 struct PromoteTraits<unsigned short, unsigned int> : 
public detail::PromoteType<unsigned short, unsigned int>
 
  495     typedef detail::PromoteType<unsigned short, unsigned int>::Promote Promote;
 
  496     using detail::PromoteType<unsigned short, unsigned int>::toPromote;
 
  500 struct PromoteTraits<unsigned short, long> : 
public detail::PromoteType<unsigned short, long>
 
  502     typedef detail::PromoteType<unsigned short, long>::Promote Promote;
 
  503     using detail::PromoteType<unsigned short, long>::toPromote;
 
  507 struct PromoteTraits<unsigned short, unsigned long> : 
public detail::PromoteType<unsigned short, unsigned long>
 
  509     typedef detail::PromoteType<unsigned short, unsigned long>::Promote Promote;
 
  510     using detail::PromoteType<unsigned short, unsigned long>::toPromote;
 
  514 struct PromoteTraits<unsigned short, float> : 
public detail::PromoteType<unsigned short, float>
 
  516     typedef detail::PromoteType<unsigned short, float>::Promote Promote;
 
  517     using detail::PromoteType<unsigned short, float>::toPromote;
 
  521 struct PromoteTraits<unsigned short, double> : 
public detail::PromoteType<unsigned short, double>
 
  523     typedef detail::PromoteType<unsigned short, double>::Promote Promote;
 
  524     using detail::PromoteType<unsigned short, double>::toPromote;
 
  528 struct PromoteTraits<unsigned short, long double> : 
public detail::PromoteType<unsigned short, long double>
 
  530     typedef detail::PromoteType<unsigned short, long double>::Promote Promote;
 
  531     using detail::PromoteType<unsigned short, long double>::toPromote;
 
  536 struct PromoteTraits<unsigned short, long long> : 
public detail::PromoteType<unsigned short, long long>
 
  538     typedef detail::PromoteType<unsigned short, long long>::Promote Promote;
 
  539     using detail::PromoteType<unsigned short, long long>::toPromote;
 
  545 struct PromoteTraits<unsigned short, unsigned long long> : 
public detail::PromoteType<unsigned short, unsigned long long>
 
  547     typedef detail::PromoteType<unsigned short, unsigned long long>::Promote Promote;
 
  548     using detail::PromoteType<unsigned short, unsigned long long>::toPromote;
 
  553 struct PromoteTraits<int, int> : 
public detail::PromoteType<int, int>
 
  555     typedef detail::PromoteType<int, int>::Promote Promote;
 
  556     using detail::PromoteType<int, int>::toPromote;
 
  560 struct PromoteTraits<int, bool> : 
public detail::PromoteType<int, bool>
 
  562     typedef detail::PromoteType<int, bool>::Promote Promote;
 
  563     using detail::PromoteType<int, bool>::toPromote;
 
  567 struct PromoteTraits<int, signed char> : 
public detail::PromoteType<int, signed char>
 
  569     typedef detail::PromoteType<int, signed char>::Promote Promote;
 
  570     using detail::PromoteType<int, signed char>::toPromote;
 
  574 struct PromoteTraits<int, unsigned char> : 
public detail::PromoteType<int, unsigned char>
 
  576     typedef detail::PromoteType<int, unsigned char>::Promote Promote;
 
  577     using detail::PromoteType<int, unsigned char>::toPromote;
 
  581 struct PromoteTraits<int, short> : 
public detail::PromoteType<int, short>
 
  583     typedef detail::PromoteType<int, short>::Promote Promote;
 
  584     using detail::PromoteType<int, short>::toPromote;
 
  588 struct PromoteTraits<int, unsigned short> : 
public detail::PromoteType<int, unsigned short>
 
  590     typedef detail::PromoteType<int, unsigned short>::Promote Promote;
 
  591     using detail::PromoteType<int, unsigned short>::toPromote;
 
  595 struct PromoteTraits<int, unsigned int> : 
public detail::PromoteType<int, unsigned int>
 
  597     typedef detail::PromoteType<int, unsigned int>::Promote Promote;
 
  598     using detail::PromoteType<int, unsigned int>::toPromote;
 
  602 struct PromoteTraits<int, long> : 
public detail::PromoteType<int, long>
 
  604     typedef detail::PromoteType<int, long>::Promote Promote;
 
  605     using detail::PromoteType<int, long>::toPromote;
 
  609 struct PromoteTraits<int, unsigned long> : 
public detail::PromoteType<int, unsigned long>
 
  611     typedef detail::PromoteType<int, unsigned long>::Promote Promote;
 
  612     using detail::PromoteType<int, unsigned long>::toPromote;
 
  616 struct PromoteTraits<int, float> : 
public detail::PromoteType<int, float>
 
  618     typedef detail::PromoteType<int, float>::Promote Promote;
 
  619     using detail::PromoteType<int, float>::toPromote;
 
  623 struct PromoteTraits<int, double> : 
public detail::PromoteType<int, double>
 
  625     typedef detail::PromoteType<int, double>::Promote Promote;
 
  626     using detail::PromoteType<int, double>::toPromote;
 
  630 struct PromoteTraits<int, long double> : 
public detail::PromoteType<int, long double>
 
  632     typedef detail::PromoteType<int, long double>::Promote Promote;
 
  633     using detail::PromoteType<int, long double>::toPromote;
 
  638 struct PromoteTraits<int, long long> : 
public detail::PromoteType<int, long long>
 
  640     typedef detail::PromoteType<int, long long>::Promote Promote;
 
  641     using detail::PromoteType<int, long long>::toPromote;
 
  647 struct PromoteTraits<int, unsigned long long> : 
public detail::PromoteType<int, unsigned long long>
 
  649     typedef detail::PromoteType<int, unsigned long long>::Promote Promote;
 
  650     using detail::PromoteType<int, unsigned long long>::toPromote;
 
  655 struct PromoteTraits<unsigned int, unsigned int> : 
public detail::PromoteType<unsigned int, unsigned int>
 
  657     typedef detail::PromoteType<unsigned int, unsigned int>::Promote Promote;
 
  658     using detail::PromoteType<unsigned int, unsigned int>::toPromote;
 
  662 struct PromoteTraits<unsigned int, bool> : 
public detail::PromoteType<unsigned int, bool>
 
  664     typedef detail::PromoteType<unsigned int, bool>::Promote Promote;
 
  665     using detail::PromoteType<unsigned int, bool>::toPromote;
 
  669 struct PromoteTraits<unsigned int, signed char> : 
public detail::PromoteType<unsigned int, signed char>
 
  671     typedef detail::PromoteType<unsigned int, signed char>::Promote Promote;
 
  672     using detail::PromoteType<unsigned int, signed char>::toPromote;
 
  676 struct PromoteTraits<unsigned int, unsigned char> : 
public detail::PromoteType<unsigned int, unsigned char>
 
  678     typedef detail::PromoteType<unsigned int, unsigned char>::Promote Promote;
 
  679     using detail::PromoteType<unsigned int, unsigned char>::toPromote;
 
  683 struct PromoteTraits<unsigned int, short> : 
public detail::PromoteType<unsigned int, short>
 
  685     typedef detail::PromoteType<unsigned int, short>::Promote Promote;
 
  686     using detail::PromoteType<unsigned int, short>::toPromote;
 
  690 struct PromoteTraits<unsigned int, unsigned short> : 
public detail::PromoteType<unsigned int, unsigned short>
 
  692     typedef detail::PromoteType<unsigned int, unsigned short>::Promote Promote;
 
  693     using detail::PromoteType<unsigned int, unsigned short>::toPromote;
 
  697 struct PromoteTraits<unsigned int, int> : 
public detail::PromoteType<unsigned int, int>
 
  699     typedef detail::PromoteType<unsigned int, int>::Promote Promote;
 
  700     using detail::PromoteType<unsigned int, int>::toPromote;
 
  704 struct PromoteTraits<unsigned int, long> : 
public detail::PromoteType<unsigned int, long>
 
  706     typedef detail::PromoteType<unsigned int, long>::Promote Promote;
 
  707     using detail::PromoteType<unsigned int, long>::toPromote;
 
  711 struct PromoteTraits<unsigned int, unsigned long> : 
public detail::PromoteType<unsigned int, unsigned long>
 
  713     typedef detail::PromoteType<unsigned int, unsigned long>::Promote Promote;
 
  714     using detail::PromoteType<unsigned int, unsigned long>::toPromote;
 
  718 struct PromoteTraits<unsigned int, float> : 
public detail::PromoteType<unsigned int, float>
 
  720     typedef detail::PromoteType<unsigned int, float>::Promote Promote;
 
  721     using detail::PromoteType<unsigned int, float>::toPromote;
 
  725 struct PromoteTraits<unsigned int, double> : 
public detail::PromoteType<unsigned int, double>
 
  727     typedef detail::PromoteType<unsigned int, double>::Promote Promote;
 
  728     using detail::PromoteType<unsigned int, double>::toPromote;
 
  732 struct PromoteTraits<unsigned int, long double> : 
public detail::PromoteType<unsigned int, long double>
 
  734     typedef detail::PromoteType<unsigned int, long double>::Promote Promote;
 
  735     using detail::PromoteType<unsigned int, long double>::toPromote;
 
  740 struct PromoteTraits<unsigned int, long long> : 
public detail::PromoteType<unsigned int, long long>
 
  742     typedef detail::PromoteType<unsigned int, long long>::Promote Promote;
 
  743     using detail::PromoteType<unsigned int, long long>::toPromote;
 
  749 struct PromoteTraits<unsigned int, unsigned long long> : 
public detail::PromoteType<unsigned int, unsigned long long>
 
  751     typedef detail::PromoteType<unsigned int, unsigned long long>::Promote Promote;
 
  752     using detail::PromoteType<unsigned int, unsigned long long>::toPromote;
 
  757 struct PromoteTraits<long, long> : 
public detail::PromoteType<long, long>
 
  759     typedef detail::PromoteType<long, long>::Promote Promote;
 
  760     using detail::PromoteType<long, long>::toPromote;
 
  764 struct PromoteTraits<long, bool> : 
public detail::PromoteType<long, bool>
 
  766     typedef detail::PromoteType<long, bool>::Promote Promote;
 
  767     using detail::PromoteType<long, bool>::toPromote;
 
  771 struct PromoteTraits<long, signed char> : 
public detail::PromoteType<long, signed char>
 
  773     typedef detail::PromoteType<long, signed char>::Promote Promote;
 
  774     using detail::PromoteType<long, signed char>::toPromote;
 
  778 struct PromoteTraits<long, unsigned char> : 
public detail::PromoteType<long, unsigned char>
 
  780     typedef detail::PromoteType<long, unsigned char>::Promote Promote;
 
  781     using detail::PromoteType<long, unsigned char>::toPromote;
 
  785 struct PromoteTraits<long, short> : 
public detail::PromoteType<long, short>
 
  787     typedef detail::PromoteType<long, short>::Promote Promote;
 
  788     using detail::PromoteType<long, short>::toPromote;
 
  792 struct PromoteTraits<long, unsigned short> : 
public detail::PromoteType<long, unsigned short>
 
  794     typedef detail::PromoteType<long, unsigned short>::Promote Promote;
 
  795     using detail::PromoteType<long, unsigned short>::toPromote;
 
  799 struct PromoteTraits<long, int> : 
public detail::PromoteType<long, int>
 
  801     typedef detail::PromoteType<long, int>::Promote Promote;
 
  802     using detail::PromoteType<long, int>::toPromote;
 
  806 struct PromoteTraits<long, unsigned int> : 
public detail::PromoteType<long, unsigned int>
 
  808     typedef detail::PromoteType<long, unsigned int>::Promote Promote;
 
  809     using detail::PromoteType<long, unsigned int>::toPromote;
 
  813 struct PromoteTraits<long, unsigned long> : 
public detail::PromoteType<long, unsigned long>
 
  815     typedef detail::PromoteType<long, unsigned long>::Promote Promote;
 
  816     using detail::PromoteType<long, unsigned long>::toPromote;
 
  820 struct PromoteTraits<long, float> : 
public detail::PromoteType<long, float>
 
  822     typedef detail::PromoteType<long, float>::Promote Promote;
 
  823     using detail::PromoteType<long, float>::toPromote;
 
  827 struct PromoteTraits<long, double> : 
public detail::PromoteType<long, double>
 
  829     typedef detail::PromoteType<long, double>::Promote Promote;
 
  830     using detail::PromoteType<long, double>::toPromote;
 
  834 struct PromoteTraits<long, long double> : 
public detail::PromoteType<long, long double>
 
  836     typedef detail::PromoteType<long, long double>::Promote Promote;
 
  837     using detail::PromoteType<long, long double>::toPromote;
 
  842 struct PromoteTraits<long, long long> : 
public detail::PromoteType<long, long long>
 
  844     typedef detail::PromoteType<long, long long>::Promote Promote;
 
  845     using detail::PromoteType<long, long long>::toPromote;
 
  851 struct PromoteTraits<long, unsigned long long> : 
public detail::PromoteType<long, unsigned long long>
 
  853     typedef detail::PromoteType<long, unsigned long long>::Promote Promote;
 
  854     using detail::PromoteType<long, unsigned long long>::toPromote;
 
  859 struct PromoteTraits<unsigned long, unsigned long> : 
public detail::PromoteType<unsigned long, unsigned long>
 
  861     typedef detail::PromoteType<unsigned long, unsigned long>::Promote Promote;
 
  862     using detail::PromoteType<unsigned long, unsigned long>::toPromote;
 
  866 struct PromoteTraits<unsigned long, bool> : 
public detail::PromoteType<unsigned long, bool>
 
  868     typedef detail::PromoteType<unsigned long, bool>::Promote Promote;
 
  869     using detail::PromoteType<unsigned long, bool>::toPromote;
 
  873 struct PromoteTraits<unsigned long, signed char> : 
public detail::PromoteType<unsigned long, signed char>
 
  875     typedef detail::PromoteType<unsigned long, signed char>::Promote Promote;
 
  876     using detail::PromoteType<unsigned long, signed char>::toPromote;
 
  880 struct PromoteTraits<unsigned long, unsigned char> : 
public detail::PromoteType<unsigned long, unsigned char>
 
  882     typedef detail::PromoteType<unsigned long, unsigned char>::Promote Promote;
 
  883     using detail::PromoteType<unsigned long, unsigned char>::toPromote;
 
  887 struct PromoteTraits<unsigned long, short> : 
public detail::PromoteType<unsigned long, short>
 
  889     typedef detail::PromoteType<unsigned long, short>::Promote Promote;
 
  890     using detail::PromoteType<unsigned long, short>::toPromote;
 
  894 struct PromoteTraits<unsigned long, unsigned short> : 
public detail::PromoteType<unsigned long, unsigned short>
 
  896     typedef detail::PromoteType<unsigned long, unsigned short>::Promote Promote;
 
  897     using detail::PromoteType<unsigned long, unsigned short>::toPromote;
 
  901 struct PromoteTraits<unsigned long, int> : 
public detail::PromoteType<unsigned long, int>
 
  903     typedef detail::PromoteType<unsigned long, int>::Promote Promote;
 
  904     using detail::PromoteType<unsigned long, int>::toPromote;
 
  908 struct PromoteTraits<unsigned long, unsigned int> : 
public detail::PromoteType<unsigned long, unsigned int>
 
  910     typedef detail::PromoteType<unsigned long, unsigned int>::Promote Promote;
 
  911     using detail::PromoteType<unsigned long, unsigned int>::toPromote;
 
  915 struct PromoteTraits<unsigned long, long> : 
public detail::PromoteType<unsigned long, long>
 
  917     typedef detail::PromoteType<unsigned long, long>::Promote Promote;
 
  918     using detail::PromoteType<unsigned long, long>::toPromote;
 
  922 struct PromoteTraits<unsigned long, float> : 
public detail::PromoteType<unsigned long, float>
 
  924     typedef detail::PromoteType<unsigned long, float>::Promote Promote;
 
  925     using detail::PromoteType<unsigned long, float>::toPromote;
 
  929 struct PromoteTraits<unsigned long, double> : 
public detail::PromoteType<unsigned long, double>
 
  931     typedef detail::PromoteType<unsigned long, double>::Promote Promote;
 
  932     using detail::PromoteType<unsigned long, double>::toPromote;
 
  936 struct PromoteTraits<unsigned long, long double> : 
public detail::PromoteType<unsigned long, long double>
 
  938     typedef detail::PromoteType<unsigned long, long double>::Promote Promote;
 
  939     using detail::PromoteType<unsigned long, long double>::toPromote;
 
  944 struct PromoteTraits<unsigned long, long long> : 
public detail::PromoteType<unsigned long, long long>
 
  946     typedef detail::PromoteType<unsigned long, long long>::Promote Promote;
 
  947     using detail::PromoteType<unsigned long, long long>::toPromote;
 
  953 struct PromoteTraits<unsigned long, unsigned long long> : 
public detail::PromoteType<unsigned long, unsigned long long>
 
  955     typedef detail::PromoteType<unsigned long, unsigned long long>::Promote Promote;
 
  956     using detail::PromoteType<unsigned long, unsigned long long>::toPromote;
 
  961 struct PromoteTraits<float, float> : 
public detail::PromoteType<float, float>
 
  963     typedef detail::PromoteType<float, float>::Promote Promote;
 
  964     using detail::PromoteType<float, float>::toPromote;
 
  968 struct PromoteTraits<float, bool> : 
public detail::PromoteType<float, bool>
 
  970     typedef detail::PromoteType<float, bool>::Promote Promote;
 
  971     using detail::PromoteType<float, bool>::toPromote;
 
  975 struct PromoteTraits<float, signed char> : 
public detail::PromoteType<float, signed char>
 
  977     typedef detail::PromoteType<float, signed char>::Promote Promote;
 
  978     using detail::PromoteType<float, signed char>::toPromote;
 
  982 struct PromoteTraits<float, unsigned char> : 
public detail::PromoteType<float, unsigned char>
 
  984     typedef detail::PromoteType<float, unsigned char>::Promote Promote;
 
  985     using detail::PromoteType<float, unsigned char>::toPromote;
 
  989 struct PromoteTraits<float, short> : 
public detail::PromoteType<float, short>
 
  991     typedef detail::PromoteType<float, short>::Promote Promote;
 
  992     using detail::PromoteType<float, short>::toPromote;
 
  996 struct PromoteTraits<float, unsigned short> : 
public detail::PromoteType<float, unsigned short>
 
  998     typedef detail::PromoteType<float, unsigned short>::Promote Promote;
 
  999     using detail::PromoteType<float, unsigned short>::toPromote;
 
 1003 struct PromoteTraits<float, int> : 
public detail::PromoteType<float, int>
 
 1005     typedef detail::PromoteType<float, int>::Promote Promote;
 
 1006     using detail::PromoteType<float, int>::toPromote;
 
 1010 struct PromoteTraits<float, unsigned int> : 
public detail::PromoteType<float, unsigned int>
 
 1012     typedef detail::PromoteType<float, unsigned int>::Promote Promote;
 
 1013     using detail::PromoteType<float, unsigned int>::toPromote;
 
 1017 struct PromoteTraits<float, long> : 
public detail::PromoteType<float, long>
 
 1019     typedef detail::PromoteType<float, long>::Promote Promote;
 
 1020     using detail::PromoteType<float, long>::toPromote;
 
 1024 struct PromoteTraits<float, unsigned long> : 
public detail::PromoteType<float, unsigned long>
 
 1026     typedef detail::PromoteType<float, unsigned long>::Promote Promote;
 
 1027     using detail::PromoteType<float, unsigned long>::toPromote;
 
 1031 struct PromoteTraits<float, double> : 
public detail::PromoteType<float, double>
 
 1033     typedef detail::PromoteType<float, double>::Promote Promote;
 
 1034     using detail::PromoteType<float, double>::toPromote;
 
 1038 struct PromoteTraits<float, long double> : 
public detail::PromoteType<float, long double>
 
 1040     typedef detail::PromoteType<float, long double>::Promote Promote;
 
 1041     using detail::PromoteType<float, long double>::toPromote;
 
 1046 struct PromoteTraits<float, long long> : 
public detail::PromoteType<float, long long>
 
 1048     typedef detail::PromoteType<float, long long>::Promote Promote;
 
 1049     using detail::PromoteType<float, long long>::toPromote;
 
 1055 struct PromoteTraits<float, unsigned long long> : 
public detail::PromoteType<float, unsigned long long>
 
 1057     typedef detail::PromoteType<float, unsigned long long>::Promote Promote;
 
 1058     using detail::PromoteType<float, unsigned long long>::toPromote;
 
 1063 struct PromoteTraits<double, double> : 
public detail::PromoteType<double, double>
 
 1065     typedef detail::PromoteType<double, double>::Promote Promote;
 
 1066     using detail::PromoteType<double, double>::toPromote;
 
 1070 struct PromoteTraits<double, bool> : 
public detail::PromoteType<double, bool>
 
 1072     typedef detail::PromoteType<double, bool>::Promote Promote;
 
 1073     using detail::PromoteType<double, bool>::toPromote;
 
 1077 struct PromoteTraits<double, signed char> : 
public detail::PromoteType<double, signed char>
 
 1079     typedef detail::PromoteType<double, signed char>::Promote Promote;
 
 1080     using detail::PromoteType<double, signed char>::toPromote;
 
 1084 struct PromoteTraits<double, unsigned char> : 
public detail::PromoteType<double, unsigned char>
 
 1086     typedef detail::PromoteType<double, unsigned char>::Promote Promote;
 
 1087     using detail::PromoteType<double, unsigned char>::toPromote;
 
 1091 struct PromoteTraits<double, short> : 
public detail::PromoteType<double, short>
 
 1093     typedef detail::PromoteType<double, short>::Promote Promote;
 
 1094     using detail::PromoteType<double, short>::toPromote;
 
 1098 struct PromoteTraits<double, unsigned short> : 
public detail::PromoteType<double, unsigned short>
 
 1100     typedef detail::PromoteType<double, unsigned short>::Promote Promote;
 
 1101     using detail::PromoteType<double, unsigned short>::toPromote;
 
 1105 struct PromoteTraits<double, int> : 
public detail::PromoteType<double, int>
 
 1107     typedef detail::PromoteType<double, int>::Promote Promote;
 
 1108     using detail::PromoteType<double, int>::toPromote;
 
 1112 struct PromoteTraits<double, unsigned int> : 
public detail::PromoteType<double, unsigned int>
 
 1114     typedef detail::PromoteType<double, unsigned int>::Promote Promote;
 
 1115     using detail::PromoteType<double, unsigned int>::toPromote;
 
 1119 struct PromoteTraits<double, long> : 
public detail::PromoteType<double, long>
 
 1121     typedef detail::PromoteType<double, long>::Promote Promote;
 
 1122     using detail::PromoteType<double, long>::toPromote;
 
 1126 struct PromoteTraits<double, unsigned long> : 
public detail::PromoteType<double, unsigned long>
 
 1128     typedef detail::PromoteType<double, unsigned long>::Promote Promote;
 
 1129     using detail::PromoteType<double, unsigned long>::toPromote;
 
 1133 struct PromoteTraits<double, float> : 
public detail::PromoteType<double, float>
 
 1135     typedef detail::PromoteType<double, float>::Promote Promote;
 
 1136     using detail::PromoteType<double, float>::toPromote;
 
 1140 struct PromoteTraits<double, long double> : 
public detail::PromoteType<double, long double>
 
 1142     typedef detail::PromoteType<double, long double>::Promote Promote;
 
 1143     using detail::PromoteType<double, long double>::toPromote;
 
 1148 struct PromoteTraits<double, long long> : 
public detail::PromoteType<double, long long>
 
 1150     typedef detail::PromoteType<double, long long>::Promote Promote;
 
 1151     using detail::PromoteType<double, long long>::toPromote;
 
 1157 struct PromoteTraits<double, unsigned long long> : 
public detail::PromoteType<double, unsigned long long>
 
 1159     typedef detail::PromoteType<double, unsigned long long>::Promote Promote;
 
 1160     using detail::PromoteType<double, unsigned long long>::toPromote;
 
 1165 struct PromoteTraits<long double, long double> : 
public detail::PromoteType<long double, long double>
 
 1167     typedef detail::PromoteType<long double, long double>::Promote Promote;
 
 1168     using detail::PromoteType<long double, long double>::toPromote;
 
 1172 struct PromoteTraits<long double, bool> : 
public detail::PromoteType<long double, bool>
 
 1174     typedef detail::PromoteType<long double, bool>::Promote Promote;
 
 1175     using detail::PromoteType<long double, bool>::toPromote;
 
 1179 struct PromoteTraits<long double, signed char> : 
public detail::PromoteType<long double, signed char>
 
 1181     typedef detail::PromoteType<long double, signed char>::Promote Promote;
 
 1182     using detail::PromoteType<long double, signed char>::toPromote;
 
 1186 struct PromoteTraits<long double, unsigned char> : 
public detail::PromoteType<long double, unsigned char>
 
 1188     typedef detail::PromoteType<long double, unsigned char>::Promote Promote;
 
 1189     using detail::PromoteType<long double, unsigned char>::toPromote;
 
 1193 struct PromoteTraits<long double, short> : 
public detail::PromoteType<long double, short>
 
 1195     typedef detail::PromoteType<long double, short>::Promote Promote;
 
 1196     using detail::PromoteType<long double, short>::toPromote;
 
 1200 struct PromoteTraits<long double, unsigned short> : 
public detail::PromoteType<long double, unsigned short>
 
 1202     typedef detail::PromoteType<long double, unsigned short>::Promote Promote;
 
 1203     using detail::PromoteType<long double, unsigned short>::toPromote;
 
 1207 struct PromoteTraits<long double, int> : 
public detail::PromoteType<long double, int>
 
 1209     typedef detail::PromoteType<long double, int>::Promote Promote;
 
 1210     using detail::PromoteType<long double, int>::toPromote;
 
 1214 struct PromoteTraits<long double, unsigned int> : 
public detail::PromoteType<long double, unsigned int>
 
 1216     typedef detail::PromoteType<long double, unsigned int>::Promote Promote;
 
 1217     using detail::PromoteType<long double, unsigned int>::toPromote;
 
 1221 struct PromoteTraits<long double, long> : 
public detail::PromoteType<long double, long>
 
 1223     typedef detail::PromoteType<long double, long>::Promote Promote;
 
 1224     using detail::PromoteType<long double, long>::toPromote;
 
 1228 struct PromoteTraits<long double, unsigned long> : 
public detail::PromoteType<long double, unsigned long>
 
 1230     typedef detail::PromoteType<long double, unsigned long>::Promote Promote;
 
 1231     using detail::PromoteType<long double, unsigned long>::toPromote;
 
 1235 struct PromoteTraits<long double, float> : 
public detail::PromoteType<long double, float>
 
 1237     typedef detail::PromoteType<long double, float>::Promote Promote;
 
 1238     using detail::PromoteType<long double, float>::toPromote;
 
 1242 struct PromoteTraits<long double, double> : 
public detail::PromoteType<long double, double>
 
 1244     typedef detail::PromoteType<long double, double>::Promote Promote;
 
 1245     using detail::PromoteType<long double, double>::toPromote;
 
 1250 struct PromoteTraits<long double, long long> : 
public detail::PromoteType<long double, long long>
 
 1252     typedef detail::PromoteType<long double, long long>::Promote Promote;
 
 1253     using detail::PromoteType<long double, long long>::toPromote;
 
 1259 struct PromoteTraits<long double, unsigned long long> : 
public detail::PromoteType<long double, unsigned long long>
 
 1261     typedef detail::PromoteType<long double, unsigned long long>::Promote Promote;
 
 1262     using detail::PromoteType<long double, unsigned long long>::toPromote;
 
 1268 struct PromoteTraits<long long, long long> : 
public detail::PromoteType<long long, long long>
 
 1270     typedef detail::PromoteType<long long, long long>::Promote Promote;
 
 1271     using detail::PromoteType<long long, long long>::toPromote;
 
 1277 struct PromoteTraits<long long, bool> : 
public detail::PromoteType<long long, bool>
 
 1279     typedef detail::PromoteType<long long, bool>::Promote Promote;
 
 1280     using detail::PromoteType<long long, bool>::toPromote;
 
 1286 struct PromoteTraits<long long, signed char> : 
public detail::PromoteType<long long, signed char>
 
 1288     typedef detail::PromoteType<long long, signed char>::Promote Promote;
 
 1289     using detail::PromoteType<long long, signed char>::toPromote;
 
 1295 struct PromoteTraits<long long, unsigned char> : 
public detail::PromoteType<long long, unsigned char>
 
 1297     typedef detail::PromoteType<long long, unsigned char>::Promote Promote;
 
 1298     using detail::PromoteType<long long, unsigned char>::toPromote;
 
 1304 struct PromoteTraits<long long, short> : 
public detail::PromoteType<long long, short>
 
 1306     typedef detail::PromoteType<long long, short>::Promote Promote;
 
 1307     using detail::PromoteType<long long, short>::toPromote;
 
 1313 struct PromoteTraits<long long, unsigned short> : 
public detail::PromoteType<long long, unsigned short>
 
 1315     typedef detail::PromoteType<long long, unsigned short>::Promote Promote;
 
 1316     using detail::PromoteType<long long, unsigned short>::toPromote;
 
 1322 struct PromoteTraits<long long, int> : 
public detail::PromoteType<long long, int>
 
 1324     typedef detail::PromoteType<long long, int>::Promote Promote;
 
 1325     using detail::PromoteType<long long, int>::toPromote;
 
 1331 struct PromoteTraits<long long, unsigned int> : 
public detail::PromoteType<long long, unsigned int>
 
 1333     typedef detail::PromoteType<long long, unsigned int>::Promote Promote;
 
 1334     using detail::PromoteType<long long, unsigned int>::toPromote;
 
 1340 struct PromoteTraits<long long, long> : 
public detail::PromoteType<long long, long>
 
 1342     typedef detail::PromoteType<long long, long>::Promote Promote;
 
 1343     using detail::PromoteType<long long, long>::toPromote;
 
 1349 struct PromoteTraits<long long, unsigned long> : 
public detail::PromoteType<long long, unsigned long>
 
 1351     typedef detail::PromoteType<long long, unsigned long>::Promote Promote;
 
 1352     using detail::PromoteType<long long, unsigned long>::toPromote;
 
 1358 struct PromoteTraits<long long, float> : 
public detail::PromoteType<long long, float>
 
 1360     typedef detail::PromoteType<long long, float>::Promote Promote;
 
 1361     using detail::PromoteType<long long, float>::toPromote;
 
 1367 struct PromoteTraits<long long, double> : 
public detail::PromoteType<long long, double>
 
 1369     typedef detail::PromoteType<long long, double>::Promote Promote;
 
 1370     using detail::PromoteType<long long, double>::toPromote;
 
 1376 struct PromoteTraits<long long, long double> : 
public detail::PromoteType<long long, long double>
 
 1378     typedef detail::PromoteType<long long, long double>::Promote Promote;
 
 1379     using detail::PromoteType<long long, long double>::toPromote;
 
 1385 struct PromoteTraits<long long, unsigned long long> : 
public detail::PromoteType<long long, unsigned long long>
 
 1387     typedef detail::PromoteType<long long, unsigned long long>::Promote Promote;
 
 1388     using detail::PromoteType<long long, unsigned long long>::toPromote;
 
 1394 struct PromoteTraits<unsigned long long, unsigned long long> : 
public detail::PromoteType<unsigned long long, unsigned long long>
 
 1396     typedef detail::PromoteType<unsigned long long, unsigned long long>::Promote Promote;
 
 1397     using detail::PromoteType<unsigned long long, unsigned long long>::toPromote;
 
 1403 struct PromoteTraits<unsigned long long, bool> : 
public detail::PromoteType<unsigned long long, bool>
 
 1405     typedef detail::PromoteType<unsigned long long, bool>::Promote Promote;
 
 1406     using detail::PromoteType<unsigned long long, bool>::toPromote;
 
 1412 struct PromoteTraits<unsigned long long, signed char> : 
public detail::PromoteType<unsigned long long, signed char>
 
 1414     typedef detail::PromoteType<unsigned long long, signed char>::Promote Promote;
 
 1415     using detail::PromoteType<unsigned long long, signed char>::toPromote;
 
 1421 struct PromoteTraits<unsigned long long, unsigned char> : 
public detail::PromoteType<unsigned long long, unsigned char>
 
 1423     typedef detail::PromoteType<unsigned long long, unsigned char>::Promote Promote;
 
 1424     using detail::PromoteType<unsigned long long, unsigned char>::toPromote;
 
 1430 struct PromoteTraits<unsigned long long, short> : 
public detail::PromoteType<unsigned long long, short>
 
 1432     typedef detail::PromoteType<unsigned long long, short>::Promote Promote;
 
 1433     using detail::PromoteType<unsigned long long, short>::toPromote;
 
 1439 struct PromoteTraits<unsigned long long, unsigned short> : 
public detail::PromoteType<unsigned long long, unsigned short>
 
 1441     typedef detail::PromoteType<unsigned long long, unsigned short>::Promote Promote;
 
 1442     using detail::PromoteType<unsigned long long, unsigned short>::toPromote;
 
 1448 struct PromoteTraits<unsigned long long, int> : 
public detail::PromoteType<unsigned long long, int>
 
 1450     typedef detail::PromoteType<unsigned long long, int>::Promote Promote;
 
 1451     using detail::PromoteType<unsigned long long, int>::toPromote;
 
 1457 struct PromoteTraits<unsigned long long, unsigned int> : 
public detail::PromoteType<unsigned long long, unsigned int>
 
 1459     typedef detail::PromoteType<unsigned long long, unsigned int>::Promote Promote;
 
 1460     using detail::PromoteType<unsigned long long, unsigned int>::toPromote;
 
 1466 struct PromoteTraits<unsigned long long, long> : 
public detail::PromoteType<unsigned long long, long>
 
 1468     typedef detail::PromoteType<unsigned long long, long>::Promote Promote;
 
 1469     using detail::PromoteType<unsigned long long, long>::toPromote;
 
 1475 struct PromoteTraits<unsigned long long, unsigned long> : 
public detail::PromoteType<unsigned long long, unsigned long>
 
 1477     typedef detail::PromoteType<unsigned long long, unsigned long>::Promote Promote;
 
 1478     using detail::PromoteType<unsigned long long, unsigned long>::toPromote;
 
 1484 struct PromoteTraits<unsigned long long, float> : 
public detail::PromoteType<unsigned long long, float>
 
 1486     typedef detail::PromoteType<unsigned long long, float>::Promote Promote;
 
 1487     using detail::PromoteType<unsigned long long, float>::toPromote;
 
 1493 struct PromoteTraits<unsigned long long, double> : 
public detail::PromoteType<unsigned long long, double>
 
 1495     typedef detail::PromoteType<unsigned long long, double>::Promote Promote;
 
 1496     using detail::PromoteType<unsigned long long, double>::toPromote;
 
 1502 struct PromoteTraits<unsigned long long, long double> : 
public detail::PromoteType<unsigned long long, long double>
 
 1504     typedef detail::PromoteType<unsigned long long, long double>::Promote Promote;
 
 1505     using detail::PromoteType<unsigned long long, long double>::toPromote;
 
 1511 struct PromoteTraits<unsigned long long, long long> : 
public detail::PromoteType<unsigned long long, long long>
 
 1513     typedef detail::PromoteType<unsigned long long, long long>::Promote Promote;
 
 1514     using detail::PromoteType<unsigned long long, long long>::toPromote;
 
 1520 #endif // VIGRA_PROMOTETRAITS_HXX