00001
00002
00003
00004
00005
00006
00007
00008
00009
00011 #ifndef FILTER_ASSERTER_H_INCLUDED
00012 #define FILTER_ASSERTER_H_INCLUDED
00013 namespace dirstr { class filter_base; }
00014 namespace dirstr { namespace detail {
00015 template <class T>
00016 struct maker
00017 {
00018 static T make_t();
00019 };
00020
00021 char check_result_type(bool);
00022 template <class T>
00023 struct assert_is_filter
00024 {
00025 enum {T_IS_NOT_A_VALID_FILTER =
00026 sizeof( check_result_type( maker<T>::make_t()(std::string()) ) ) == sizeof(char)
00027 };
00028 };
00029 template <>
00030 struct assert_is_filter<dirstr::filter_base*>
00031 {};
00032 }}
00033
00034 #endif