Mirror reflection library 0.5.13
|
00001 00012 #ifndef MIRROR_META_PROG_APPEND_1011291729_HPP 00013 #define MIRROR_META_PROG_APPEND_1011291729_HPP 00014 00015 00016 #include <mirror/meta_prog/range.hpp> 00017 00018 MIRROR_NAMESPACE_BEGIN 00019 namespace mp { 00020 00021 #ifdef MIRROR_DOCUMENTATION_ONLY 00022 00023 00029 template <class RangeToModify, typename T> 00030 struct append 00031 { 00032 typedef Range type; 00033 }; 00034 #endif 00035 00036 template <typename ... P, typename T> 00037 struct append<range<P...>, T> 00038 { 00039 typedef range<P..., T> type; 00040 }; 00041 00042 template <typename X, typename T> 00043 struct append 00044 { 00045 MIRROR_ASSERT_RETURNS_RANGE(X); 00046 typedef typename append<typename X::type, T>::type type; 00047 }; 00048 00049 00050 } // namespace mp 00051 MIRROR_NAMESPACE_END 00052 00053 #endif //include guard 00054