diff --git a/genreg/main.cpp b/genreg/main.cpp index 9cb20cc..7c96b7f 100755 --- a/genreg/main.cpp +++ b/genreg/main.cpp @@ -96,12 +96,16 @@ public: catch(const runtime_error&) {} - for (int i = nMin; i < nMax; ++i) + for (int i = nMin; i <= nMax; ++i) { - m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(" << name << ", " << i << ")" << endl; + if (i == nMin && i != nMax) + m_out << "#ifdef BOOST_TYPEOF_COMPLIANT" << endl; + if (i == nMax && i != nMin) + m_out << "#endif//BOOST_TYPEOF_COMPLIANT" << endl; + + m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE(" << name << ", " << i << ")" << endl; } - m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE(" << name << ", " << nMax << ")" << endl; } else if (what == "TYPE") { diff --git a/include/boost/typeof/compliant/integral_template_param.hpp b/include/boost/typeof/compliant/integral_template_param.hpp new file mode 100755 index 0000000..41536c3 --- /dev/null +++ b/include/boost/typeof/compliant/integral_template_param.hpp @@ -0,0 +1,25 @@ +// Copyright (C) 2005 Arkadiy Vertleyb +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED +#define BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED + +#include + +// INTEGRAL_PARAM "virtual functions" implementation + +#define BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM(This, n)\ + typedef typename encode_integral<\ + BOOST_PP_CAT(V, n),\ + BOOST_TYPEOF_PARAM_GETTYPE(This),\ + BOOST_PP_CAT(P, n)\ + >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); + +#define BOOST_TYPEOF_DECODE_INTEGRAL_PARAM(This, n)\ + typedef decode_integral BOOST_PP_CAT(d, n);\ + static const BOOST_TYPEOF_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\ + typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n)); + + +#endif//BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED diff --git a/include/boost/typeof/compliant/template_encoding.hpp b/include/boost/typeof/compliant/template_encoding.hpp index fca53a4..50cada6 100755 --- a/include/boost/typeof/compliant/template_encoding.hpp +++ b/include/boost/typeof/compliant/template_encoding.hpp @@ -8,38 +8,15 @@ #include #include -#include -#include + +#include + +#include +#include +#include ////////// -// TYPE_PARAM "virtual functions" implementation - -#define BOOST_TYPEOF_ENCODE_TYPE_PARAM(This, n)\ - typedef typename encode_type<\ - BOOST_PP_CAT(V, n),\ - BOOST_PP_CAT(P, n)\ - >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); - -#define BOOST_TYPEOF_DECODE_TYPE_PARAM(This, n)\ - typedef decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\ - typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\ - typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n)); - -// INTEGRAL_PARAM "virtual functions" implementation - -#define BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM(This, n)\ - typedef typename encode_integral<\ - BOOST_PP_CAT(V, n),\ - BOOST_TYPEOF_PARAM_GETTYPE(This),\ - BOOST_PP_CAT(P, n)\ - >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); - -#define BOOST_TYPEOF_DECODE_INTEGRAL_PARAM(This, n)\ - typedef decode_integral BOOST_PP_CAT(d, n);\ - static const BOOST_TYPEOF_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\ - typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n)); - // "function objects" #define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM(r, data, n, elem)\ @@ -63,6 +40,7 @@ #define BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, ID)\ + BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING(Name, Params, ID)\ template\ @@ -92,13 +70,6 @@ #define BOOST_TYPEOF_REGISTER_TEMPLATE_X(Name, Params)\ namespace boost{namespace type_of{namespace{\ - BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\ - BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, BOOST_TYPEOF_UNIQUE_ID())\ - }}} - -#define BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS_X(Name, Params)\ - namespace boost{namespace type_of{namespace{\ - BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\ BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, BOOST_TYPEOF_UNIQUE_ID())\ }}} diff --git a/include/boost/typeof/compliant/register_template_template.hpp b/include/boost/typeof/compliant/template_template_param.hpp similarity index 92% rename from include/boost/typeof/compliant/register_template_template.hpp rename to include/boost/typeof/compliant/template_template_param.hpp index 5792e3e..c2215ca 100644 --- a/include/boost/typeof/compliant/register_template_template.hpp +++ b/include/boost/typeof/compliant/template_template_param.hpp @@ -2,8 +2,8 @@ // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED -#define BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED +#ifndef BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED +#define BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED #include #include @@ -125,10 +125,16 @@ namespace boost{namespace type_of {namespace { //Define template template arguments #define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\ - BOOST_PP_IF(BOOST_TYPEOF_SUPPORT_TEMPLATE_TEMPLATE_ENCODING(Params),\ - BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING,\ - BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING)(Name,Params,ID) + BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING(Name,Params,ID) + //BOOST_PP_IF(BOOST_TYPEOF_SUPPORT_TEMPLATE_TEMPLATE_ENCODING(Params),\ + // BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING,\ + // BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING)(Name,Params,ID) + +#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE(Name,Params)\ + namespace boost{namespace type_of{namespace{\ + BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\ + }}} //Define template template params #define BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING(Name,Params,ID)\ @@ -187,8 +193,7 @@ namespace boost{namespace type_of {namespace { #define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_TYPE(Name,Params,ID)\ typename BOOST_TYPEOF_TEMPLATE_TEMPLATE_NAME_IMPL(decode_template,Params) BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) >::type - #define BOOST_TYPEOF_REGISTER_COMPACT_TEMPLATE_PARAM_PAIR(z,n,elem)\ BOOST_TYPEOF_COMPACT_TYPE(BOOST_TYPEOF_MAKE_OBJ(elem)) BOOST_PP_CAT(P, n) -#endif //BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED \ No newline at end of file +#endif //BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED diff --git a/include/boost/typeof/compliant/type_template_param.hpp b/include/boost/typeof/compliant/type_template_param.hpp new file mode 100755 index 0000000..54676f2 --- /dev/null +++ b/include/boost/typeof/compliant/type_template_param.hpp @@ -0,0 +1,25 @@ +// Copyright (C) 2005 Arkadiy Vertleyb +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED +#define BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED + +#include + +// TYPE_PARAM "virtual functions" implementation + +#define BOOST_TYPEOF_ENCODE_TYPE_PARAM(This, n)\ + typedef typename encode_type<\ + BOOST_PP_CAT(V, n),\ + BOOST_PP_CAT(P, n)\ + >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); + +#define BOOST_TYPEOF_DECODE_TYPE_PARAM(This, n)\ + typedef decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\ + typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\ + typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n)); + +#define BOOST_TYPEOF_EXPAND_TYPE_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param) + +#endif//BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED diff --git a/include/boost/typeof/register_integral.hpp b/include/boost/typeof/integral_template_param.hpp old mode 100644 new mode 100755 similarity index 56% rename from include/boost/typeof/register_integral.hpp rename to include/boost/typeof/integral_template_param.hpp index 3179e5e..1227b21 --- a/include/boost/typeof/register_integral.hpp +++ b/include/boost/typeof/integral_template_param.hpp @@ -1,26 +1,9 @@ -// Copyright (C) 2004 Arkadiy Vertleyb -// Copyright (C) 2005 Peder Holt +// Copyright (C) 2005 Arkadiy Vertleyb // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED -#define BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED - -#include -#include -#include - -// The template parameter description, entered by the user, -// is converted into a polymorphic "object" -// that is used to generate the code responsible for -// encoding/decoding the parameter, etc. -// See also compliant/template_encoding.hpp and -// vintage/template_encoding.hpp. - -#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_SEQ_CAT(\ - (BOOST_TYPEOF_MAKE_OBJ_) BOOST_TYPEOF_TO_SEQ(elem)) - -#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF +#ifndef BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED +#define BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED #define BOOST_TYPEOF_unsigned (unsigned) #define BOOST_TYPEOF_signed (signed) @@ -35,13 +18,9 @@ #define BOOST_TYPEOF_int_BOOST_TYPEOF (int) #define BOOST_TYPEOF_long_BOOST_TYPEOF (long) #define BOOST_TYPEOF_bool_BOOST_TYPEOF (bool) -#define BOOST_TYPEOF_class_BOOST_TYPEOF (class) -#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename) #define BOOST_TYPEOF_unsigned_BOOST_TYPEOF (unsigned) #define BOOST_TYPEOF_size_t_BOOST_TYPEOF (size_t) -#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM -#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM #define BOOST_TYPEOF_MAKE_OBJ_char BOOST_TYPEOF_INTEGRAL_PARAM(char,char) #define BOOST_TYPEOF_MAKE_OBJ_short BOOST_TYPEOF_INTEGRAL_PARAM(short,short) #define BOOST_TYPEOF_MAKE_OBJ_int BOOST_TYPEOF_INTEGRAL_PARAM(int,int) @@ -63,27 +42,6 @@ #define BOOST_TYPEOF_EAT_BOOST_TYPEOF #define BOOST_TYPEOF_integral(X) (integral(X)) -// "interface" - -#define BOOST_TYPEOF_PARAM_ENCODE(Param)\ - BOOST_PP_CAT(BOOST_TYPEOF_ENCODE_, BOOST_PP_SEQ_ELEM(0, Param)) - -#define BOOST_TYPEOF_PARAM_DECODE(Param)\ - BOOST_PP_CAT(BOOST_TYPEOF_DECODE_, BOOST_PP_SEQ_ELEM(0, Param)) - -#define BOOST_TYPEOF_PARAM_GETTYPE(Param)\ - BOOST_PP_SEQ_ELEM(1, Param) - -#define BOOST_TYPEOF_PARAM_GETNAME(Param)\ - BOOST_PP_SEQ_ELEM(2, Param) - -// "constructors" - -#define BOOST_TYPEOF_TYPE_PARAM\ - (TYPE_PARAM)\ - (class)\ - (class) - #define BOOST_TYPEOF_INTEGRAL_PARAM(Type,Name)\ (INTEGRAL_PARAM)\ (Type)\ @@ -96,21 +54,7 @@ #define BOOST_TYPEOF_DECODE_EXPLICIT_INTEGRAL_PARAM BOOST_TYPEOF_DECODE_INTEGRAL_PARAM #define BOOST_TYPEOF_ENCODE_EXPLICIT_INTEGRAL_PARAM BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM - -#define BOOST_TYPEOF_EXPAND_TYPE(Param)\ - BOOST_PP_CAT(BOOST_TYPEOF_EXPAND_, BOOST_PP_SEQ_ELEM(0, Param))(Param) - -#define BOOST_TYPEOF_EXPAND_TYPE_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param) #define BOOST_TYPEOF_EXPAND_INTEGRAL_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param) #define BOOST_TYPEOF_EXPAND_EXPLICIT_INTEGRAL_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param) -#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\ - BOOST_PP_SEQ_ELEM(0,seq)(z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq))) - -#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\ -BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) - -#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\ -BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) - -#endif//BOOST_TYPEOF_COMPLIANT_TEMPLATE_ENCODING_HPP_INCLUDED +#endif//BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED diff --git a/include/boost/typeof/std/deque.hpp b/include/boost/typeof/std/deque.hpp index 7942816..d264bd1 100755 --- a/include/boost/typeof/std/deque.hpp +++ b/include/boost/typeof/std/deque.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::deque, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 2) #endif//BOOST_TYPEOF_STD_deque_hpp_INCLUDED diff --git a/include/boost/typeof/std/fstream.hpp b/include/boost/typeof/std/fstream.hpp index b3e7c2f..cfa056f 100755 --- a/include/boost/typeof/std/fstream.hpp +++ b/include/boost/typeof/std/fstream.hpp @@ -13,13 +13,21 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_filebuf, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ifstream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ofstream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_fstream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 2) #ifdef BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TYPE(std::filebuf) diff --git a/include/boost/typeof/std/iostream.hpp b/include/boost/typeof/std/iostream.hpp index 2331ec7..762d6f9 100755 --- a/include/boost/typeof/std/iostream.hpp +++ b/include/boost/typeof/std/iostream.hpp @@ -14,7 +14,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() BOOST_TYPEOF_REGISTER_TEMPLATE(std::fpos, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ios, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 2) #endif//BOOST_TYPEOF_STD_iostream_hpp_INCLUDED diff --git a/include/boost/typeof/std/istream.hpp b/include/boost/typeof/std/istream.hpp index 0b14fd1..431e058 100755 --- a/include/boost/typeof/std/istream.hpp +++ b/include/boost/typeof/std/istream.hpp @@ -13,9 +13,13 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_iostream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 2) #ifdef BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TYPE(std::istream) diff --git a/include/boost/typeof/std/iterator.hpp b/include/boost/typeof/std/iterator.hpp index 1b7e17a..12fa823 100755 --- a/include/boost/typeof/std/iterator.hpp +++ b/include/boost/typeof/std/iterator.hpp @@ -15,12 +15,16 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator_traits, 1) #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3) #else -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 4) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 4) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 5) #endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) BOOST_TYPEOF_REGISTER_TYPE(std::input_iterator_tag) @@ -29,9 +33,11 @@ BOOST_TYPEOF_REGISTER_TYPE(std::forward_iterator_tag) BOOST_TYPEOF_REGISTER_TYPE(std::bidirectional_iterator_tag) BOOST_TYPEOF_REGISTER_TYPE(std::random_access_iterator_tag) #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 4) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 2) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 3) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 4) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 5) #else BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 1) @@ -40,21 +46,31 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::back_insert_iterator, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::front_insert_iterator, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::insert_iterator, 1) #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3) #else -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 3) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 4) #endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostream_iterator, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostream_iterator, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istreambuf_iterator, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostreambuf_iterator, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 2) #endif//BOOST_TYPEOF_STD_iterator_hpp_INCLUDED diff --git a/include/boost/typeof/std/list.hpp b/include/boost/typeof/std/list.hpp index 65f1be8..991bdf5 100755 --- a/include/boost/typeof/std/list.hpp +++ b/include/boost/typeof/std/list.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::list, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 2) #endif//BOOST_TYPEOF_STD_list_hpp_INCLUDED diff --git a/include/boost/typeof/std/map.hpp b/include/boost/typeof/std/map.hpp index db6f1e7..616ac46 100755 --- a/include/boost/typeof/std/map.hpp +++ b/include/boost/typeof/std/map.hpp @@ -15,11 +15,15 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::map, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::map, 3) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 2) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 3) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 4) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multimap, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multimap, 3) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 2) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 3) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 4) #endif//BOOST_TYPEOF_STD_map_hpp_INCLUDED diff --git a/include/boost/typeof/std/ostream.hpp b/include/boost/typeof/std/ostream.hpp index d4bcc18..d8c20c7 100755 --- a/include/boost/typeof/std/ostream.hpp +++ b/include/boost/typeof/std/ostream.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostream, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 2) #ifdef BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TYPE(std::ostream) diff --git a/include/boost/typeof/std/queue.hpp b/include/boost/typeof/std/queue.hpp index 580ce99..6681a57 100755 --- a/include/boost/typeof/std/queue.hpp +++ b/include/boost/typeof/std/queue.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::queue, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 2) #endif//BOOST_TYPEOF_STD_queue_hpp_INCLUDED diff --git a/include/boost/typeof/std/set.hpp b/include/boost/typeof/std/set.hpp index 8e5af18..16c0665 100755 --- a/include/boost/typeof/std/set.hpp +++ b/include/boost/typeof/std/set.hpp @@ -14,11 +14,15 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::set, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::set, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multiset, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multiset, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 3) #endif//BOOST_TYPEOF_STD_set_hpp_INCLUDED diff --git a/include/boost/typeof/std/sstream.hpp b/include/boost/typeof/std/sstream.hpp index 43a73cb..4d63503 100755 --- a/include/boost/typeof/std/sstream.hpp +++ b/include/boost/typeof/std/sstream.hpp @@ -14,17 +14,25 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringbuf, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringbuf, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istringstream, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istringstream, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostringstream, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostringstream, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringstream, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringstream, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 3) #ifdef BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TYPE(std::stringbuf) diff --git a/include/boost/typeof/std/stack.hpp b/include/boost/typeof/std/stack.hpp index 13b93dc..9414ef3 100755 --- a/include/boost/typeof/std/stack.hpp +++ b/include/boost/typeof/std/stack.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::stack, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 2) #endif//BOOST_TYPEOF_STD_stack_hpp_INCLUDED diff --git a/include/boost/typeof/std/streambuf.hpp b/include/boost/typeof/std/streambuf.hpp index 56df27e..815da33 100755 --- a/include/boost/typeof/std/streambuf.hpp +++ b/include/boost/typeof/std/streambuf.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_streambuf, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 2) #endif//BOOST_TYPEOF_STD_streambuf_hpp_INCLUDED diff --git a/include/boost/typeof/std/string.hpp b/include/boost/typeof/std/string.hpp index 7a67f76..d7b70ed 100755 --- a/include/boost/typeof/std/string.hpp +++ b/include/boost/typeof/std/string.hpp @@ -14,8 +14,10 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() BOOST_TYPEOF_REGISTER_TEMPLATE(std::char_traits, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_string, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_string, 2) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 1) +BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 2) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 3) #ifdef BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TYPE(std::string) diff --git a/include/boost/typeof/std/vector.hpp b/include/boost/typeof/std/vector.hpp index 2a88500..d650532 100755 --- a/include/boost/typeof/std/vector.hpp +++ b/include/boost/typeof/std/vector.hpp @@ -13,7 +13,9 @@ #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::vector, 1) +#ifdef BOOST_TYPEOF_COMPLIANT +BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 1) +#endif//BOOST_TYPEOF_COMPLIANT BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 2) #endif//BOOST_TYPEOF_STD_vector_hpp_INCLUDED diff --git a/include/boost/typeof/template_encoding.hpp b/include/boost/typeof/template_encoding.hpp new file mode 100755 index 0000000..8ebeea7 --- /dev/null +++ b/include/boost/typeof/template_encoding.hpp @@ -0,0 +1,55 @@ +// Copyright (C) 2004 Arkadiy Vertleyb +// Copyright (C) 2005 Peder Holt +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED +#define BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED + +#include +#include +#include + +// The template parameter description, entered by the user, +// is converted into a polymorphic "object" +// that is used to generate the code responsible for +// encoding/decoding the parameter, etc. + +// make sure to cat the sequence first, and only then add the prefix. +#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_CAT(\ + BOOST_TYPEOF_MAKE_OBJ,\ + BOOST_PP_SEQ_CAT((_) BOOST_TYPEOF_TO_SEQ(elem))\ + ) + +#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF + + +// "interface" + +#define BOOST_TYPEOF_PARAM_ENCODE(Param)\ + BOOST_PP_CAT(BOOST_TYPEOF_ENCODE_, BOOST_PP_SEQ_ELEM(0, Param)) + +#define BOOST_TYPEOF_PARAM_DECODE(Param)\ + BOOST_PP_CAT(BOOST_TYPEOF_DECODE_, BOOST_PP_SEQ_ELEM(0, Param)) + +#define BOOST_TYPEOF_PARAM_GETTYPE(Param)\ + BOOST_PP_SEQ_ELEM(1, Param) + +#define BOOST_TYPEOF_PARAM_GETNAME(Param)\ + BOOST_PP_SEQ_ELEM(2, Param) + +#define BOOST_TYPEOF_EXPAND_TYPE(Param)\ + BOOST_PP_CAT(BOOST_TYPEOF_EXPAND_, BOOST_PP_SEQ_ELEM(0, Param))(Param) + +// + +#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\ + BOOST_PP_SEQ_ELEM(0,seq)(z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq))) + +#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\ +BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) + +#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\ +BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) + +#endif//BOOST_TYPEOF_COMPLIANT_TEMPLATE_ENCODING_HPP_INCLUDED diff --git a/include/boost/typeof/type_template_param.hpp b/include/boost/typeof/type_template_param.hpp new file mode 100755 index 0000000..817c9e8 --- /dev/null +++ b/include/boost/typeof/type_template_param.hpp @@ -0,0 +1,19 @@ +// Copyright (C) 2005 Arkadiy Vertleyb +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED +#define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED + +#define BOOST_TYPEOF_class_BOOST_TYPEOF (class) +#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename) + +#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM +#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM + +#define BOOST_TYPEOF_TYPE_PARAM\ + (TYPE_PARAM)\ + (class)\ + (class) + +#endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED diff --git a/include/boost/typeof/vintage/template_encoding.hpp b/include/boost/typeof/vintage/template_encoding.hpp index f04e19e..879a684 100644 --- a/include/boost/typeof/vintage/template_encoding.hpp +++ b/include/boost/typeof/vintage/template_encoding.hpp @@ -16,7 +16,9 @@ #include #include #include -#include +#include +#include +#include // diff --git a/test/compliant/typeof.vcproj b/test/compliant/typeof.vcproj index a442b7b..5a451c0 100755 --- a/test/compliant/typeof.vcproj +++ b/test/compliant/typeof.vcproj @@ -21,6 +21,7 @@ Optimization="0" AdditionalIncludeDirectories="C:\boost\boost_1_32_0;..\..\..\.." PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + GeneratePreprocessedFile="0" MinimalRebuild="TRUE" BasicRuntimeChecks="3" RuntimeLibrary="5" @@ -127,69 +128,91 @@ + + + - - - - - - - - - - - - - - + RelativePath="..\..\..\..\boost\typeof\integral_template_param.hpp"> - - + RelativePath="..\..\..\..\boost\typeof\template_encoding.hpp"> - - - - + RelativePath="..\..\..\..\boost\typeof\type_template_param.hpp"> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class P0,int P1> + struct tt_test {}; + + template + struct C {}; +} + +BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::tt_test,(BOOST_TYPEOF_TEMPLATE( (typename)(unsigned int) ))(int)) +BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE(template_template::C,(typename)(unsigned int)) + + +BOOST_STATIC_ASSERT((typeof_test >::value)); +#endif + #pragma message("modifiers...") BOOST_STATIC_ASSERT(typeof_test::value); @@ -99,22 +117,6 @@ BOOST_TYPEOF_REGISTER_TEMPLATE_X(with_integrals, BOOST_STATIC_ASSERT((typeof_test >::value)); BOOST_STATIC_ASSERT((typeof_test >::value)); -#ifdef BOOST_TYPEOF_COMPLIANT -#pragma message("template template encoding...") - -namespace template_template { - template class P0,int P1> - struct tt_test {}; - - template - struct C {}; -} - -BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::tt_test,(BOOST_TYPEOF_TEMPLATE( (typename)(unsigned int) ))(int)) -BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::C,(typename)(unsigned int)) -BOOST_STATIC_ASSERT((typeof_test >::value)); -#endif - #pragma message("namespace-level function pointers...") BOOST_STATIC_ASSERT(typeof_test::value); BOOST_STATIC_ASSERT(typeof_test::value);