BVB Source Codes

mars Show msvc_is_class.hpp Source code

Return Download mars: download msvc_is_class.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
  3. #define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
  4.  
  5. // Copyright Aleksey Gurtovoy 2002-2004
  6. //
  7. // Distributed under the Boost Software License, Version 1.0.
  8. // (See accompanying file LICENSE_1_0.txt or copy at
  9. // http://www.boost.org/LICENSE_1_0.txt)
  10. //
  11. // See http://www.boost.org/libs/mpl for documentation.
  12.  
  13. // $Id$
  14. // $Date$
  15. // $Revision$
  16.  
  17. #include <boost/mpl/if.hpp>
  18. #include <boost/mpl/bool.hpp>
  19. #include <boost/mpl/aux_/type_wrapper.hpp>
  20. #include <boost/mpl/aux_/yes_no.hpp>
  21.  
  22. #include <boost/type_traits/is_reference.hpp>
  23.  
  24. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl { namespace aux {
  25.  
  26. template< typename T > struct is_class_helper
  27. {
  28.     typedef int (T::* type)();
  29. };
  30.  
  31. // MSVC 6.x-specific lightweight 'is_class' implementation;
  32. // Distinguishing feature: does not instantiate the type being tested.
  33. template< typename T >
  34. struct msvc_is_class_impl
  35. {
  36.     template< typename U>
  37.     static yes_tag  test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0);
  38.     static no_tag   test(void const volatile*, ...);
  39.  
  40.     enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) };
  41.     typedef bool_<value> type;
  42. };
  43.  
  44. // agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in
  45. // complex metaprograms
  46. template< typename T >
  47. struct msvc_is_class
  48.     : if_<
  49.           is_reference<T>
  50.         , false_
  51.         , msvc_is_class_impl<T>
  52.         >::type
  53. {
  54. };
  55.  
  56. }}}
  57.  
  58. #endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
  59.  
downloadmsvc_is_class.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