Mirror reflection library 0.5.13

mirror/meta_prog/nil_term_pack.hpp

Go to the documentation of this file.
00001 
00011 #ifndef MIRROR_META_PROG_NIL_TERM_PACK_1105050854_HPP
00012 #define MIRROR_META_PROG_NIL_TERM_PACK_1105050854_HPP
00013 
00014 #include <mirror/meta_prog/not.hpp>
00015 #include <mirror/meta_prog/only_if.hpp>
00016 #include <mirror/meta_prog/lambda.hpp>
00017 #include <mirror/meta_prog/nil_type.hpp>
00018 
00019 MIRROR_NAMESPACE_BEGIN
00020 namespace mp {
00021 
00022 template <typename T>
00023 struct is_pack_nil_type
00024 {
00025     typedef std::false_type type;
00026 };
00027 
00028 template <>
00029 struct is_pack_nil_type<nil_t>
00030 {
00031     typedef std::true_type type;
00032 };
00033 
00034 template <typename Range>
00035 struct remove_nil_types
00036 {
00037     typedef typename mirror::mp::only_if<
00038         Range,
00039         not_<is_pack_nil_type<arg<1> > >
00040     >::type type;
00041 };
00042 
00043 } // namespace mp
00044 MIRROR_NAMESPACE_END
00045 
00046 #endif //include guard
00047 

Copyright © 2006-2011 Matus Chochlik, University of Zilina, Zilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Fri Dec 16 2011 by Doxygen (version 1.7.3).
Important note: Although the 'boostified' version of Mirror uses the Boost C++ libraries Coding Guidelines and is implemented inside of the boost namespace, it IS NOT an officially reviewed and accepted Boost library. Mirror is being developed with the intention to be submitted for review for inclusion to the Boost C++ libraries.