$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2006-01-27 20:08:39
Hmm...
I had the impression that it's impossible to register
default-parameter-versions of forward-declared templates. But this
impression was caused by my experience with STL registration, where all
default parameters are provided in the class definitions, and I was
obviously not able to change this. But it looks possible to specify them in
the declarations (verified with vc71, gcc, and comeau online), so the
following code is compiles:
---------------------------------------------
#define BOOST_TYPEOF_COMPLIANT
#include <boost/typeof/typeof.hpp>
template<class T, class U = T*, class V = U*>
struct x;
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(x, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(x, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(x, 3)
template<class T, class U, class V>
struct x
{};
typedef BOOST_TYPEOF(x<int>()) type1;
typedef BOOST_TYPEOF((x<int, short>())) type2;
typedef BOOST_TYPEOF((x<int, short, char>())) type3;
int main()
{}
---------------------------------------------
If this code is portable, I would say it definitely seems more preferable
for default parameter registrations than anything we discussed so far.
Regards,
Arkadiy