filter_asserter.h

00001 
00002 //      file            :       filter_asserter.h
00003 //  copyright   :       (C) 2002-2004 Benjamin Kaufmann
00004 //  email               :       hume@c-plusplus.de
00005 //      internet        :       http://bens.c-plusplus.info/
00006 //
00007 //  assert_is_filter prüft ob T ein Typ ist, der mit einem Argument vom
00008 //  Type std::string aufgerufen werden kann und ein bool-kompatiblen
00009 //      Rückgabewert liefert.
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

Generated on Fri Apr 27 13:12:36 2007 for Highlight Code Converter by  doxygen 1.5.2