diff options
| author | Patrick Williams <iawillia@us.ibm.com> | 2012-02-14 16:45:40 -0600 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-02-22 16:11:14 -0600 |
| commit | ddb7ed4a1c3da475aa1fd6036171d4bbba75e722 (patch) | |
| tree | 6616d24f32e7ff5154bb25bd9366137848ceeced /src/include/util/traits/impl | |
| parent | c232f7a5a8b38321edae7a02c3148e67b5b4c3c7 (diff) | |
| download | blackbird-hostboot-ddb7ed4a1c3da475aa1fd6036171d4bbba75e722.tar.gz blackbird-hostboot-ddb7ed4a1c3da475aa1fd6036171d4bbba75e722.zip | |
STL advance / distance.
Change-Id: I9cdf9459f2970def812b1681897fe7d0cdda37ac
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/669
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Terry J. Opie <opiet@us.ibm.com>
Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/util/traits/impl')
| -rw-r--r-- | src/include/util/traits/impl/has_comparison.H | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/include/util/traits/impl/has_comparison.H b/src/include/util/traits/impl/has_comparison.H index 4cc7a84c0..fbfb5d7ff 100644 --- a/src/include/util/traits/impl/has_comparison.H +++ b/src/include/util/traits/impl/has_comparison.H @@ -63,8 +63,8 @@ namespace Util // hide the template implementation in. namespace UTIL_TRAIT_COMPARISON_MAKENAME(__Util_Trait_Impl_) { - // If "T op S" is valid, it is going to return some type (likely bool). If - // it is not valid, we still need it to compile cleanly. So what we do is + // If "T op S" is valid, it is going to return a type R. If it is not + // valid, we still need it to compile cleanly. So what we do is // create a type (convert_from_any_type) that causes implicit type // conversion from any other type. We ensure that the operator against // convert_from_any_type returns a special type (bad_type). @@ -84,7 +84,7 @@ namespace UTIL_TRAIT_COMPARISON_MAKENAME(__Util_Trait_Impl_) const convert_from_any_type&); - // Now, "T op T" is going to return either bad_type or something else. We + // Now, "T op S" is going to return either bad_type or something else. We // define a function 'has_comparison' that returns a character array of // different size based on the input parameter type. Then the "sizeof" // can be used to tell if "T op S" returns bad_type or something else. @@ -92,14 +92,14 @@ namespace UTIL_TRAIT_COMPARISON_MAKENAME(__Util_Trait_Impl_) // The only additional oddity is the get_instance function. Since some // classes cannot be directly constructed, this is a level of indirection // to get a type of T and S to apply the operator against. - template <typename _T, typename _S> + template <typename _T, typename _S, typename _R> struct UTIL_TRAIT_COMPARISON_MAKENAME(has_) { typedef char yes[1]; typedef char no[2]; static no& has_comparison(bad_type); - static yes& has_comparison(...); + static yes& has_comparison(_R); template <typename C> static C& get_instance(); @@ -117,10 +117,13 @@ namespace UTIL_TRAIT_COMPARISON_MAKENAME(__Util_Trait_Impl_) // the __Util_Trait_Impl_OPERATOR_NAME namespace. namespace Traits { - template <typename _T, typename _S = _T> + template <typename _T, typename _S = _T, + typename _R = typename + UTIL_TRAIT_COMPARISON_MAKENAME(Util::__Util_Trait_Impl_):: + convert_from_any_type> struct UTIL_TRAIT_COMPARISON_MAKENAME(has_) : public UTIL_TRAIT_COMPARISON_MAKENAME(Util::__Util_Trait_Impl_):: - UTIL_TRAIT_COMPARISON_MAKENAME(has_)<_T,_S> + UTIL_TRAIT_COMPARISON_MAKENAME(has_)<_T,_S,_R> {}; }; |

