// (C) Copyright John Maddock 2000. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // Simple program to output some template specialisations for the type_traits library. // #include using namespace std; unsigned specializations = 30; int main() { unsigned i, j; ofstream os("specialisations"); // // generate is_function tester prototypes: for(i = 0; i <= specializations; ++i) { os << "template \n::boost::type_traits::yes_type is_function_tester(R (*)("; if(i == 0) os << "void"; else { for(j = 0; j < i; ++j) { if(j) os << ", "; os << "A" << j; } } os << "));" << endl; } os << endl << endl; // // generate is_function_helper partial specialisations: // for(i = 0; i < specializations; ++i) { os << "template \nstruct is_function_helper_base{ BOOST_STATIC_CONSTANT(bool, value = true); };" << endl; } os << endl << endl; // // generate is_member_pointer_helper tester prototypes: for(i = 0; i <= specializations; ++i) { os << "template \n::boost::type_traits::yes_type is_member_pointer_helper(R (T::*)("; if(i == 0) os << "void"; else { for(j = 0; j < i; ++j) { if(j) os << ", "; os << "A" << j; } } os << "));" << endl; } os << endl << endl; // // generate is_member_pointer partial specialisations: // for(i = 0; i < specializations; ++i) { os << "template \nstruct is_member_pointer{ BOOST_STATIC_CONSTANT(bool, value = true); };" << endl; } os << endl << endl; return 0; }