By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,904 Members | 1,302 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,904 IT Pros & Developers. It's quick & easy.

Template to remove reference.

P: n/a
Hi,

I need a template that will remove references from a type. Suppose the
template I need is named Drop_ref. I'd like to do something like this
.. . .

Drop_ref<SomeClass &>::type InstanceOfSomeClass;

would be equivalent to

SomeClass InstanceOfSomeClass;
Unfortunately, it must work with a C++ compiler that does not have
partial template specialization. Microsoft has yet to bring Embedded
Visual C++ up to ISO standards. If someone could post a work around
I'd be very appreciative.

Oct 28 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
je***********@hotmail.com wrote:
Hi,

I need a template that will remove references from a type. Suppose the
template I need is named Drop_ref. I'd like to do something like this
. . .

Drop_ref<SomeClass &>::type InstanceOfSomeClass;

would be equivalent to

SomeClass InstanceOfSomeClass;
Unfortunately, it must work with a C++ compiler that does not have
partial template specialization. Microsoft has yet to bring Embedded
Visual C++ up to ISO standards. If someone could post a work around
I'd be very appreciative.


See the implementations in Boost.TypeTraits (http://boost.org) and Loki
(http://sourceforge.net/projects/loki-lib/). They both have some tricks
to make it work with VC++ 6.

Cheers! --M

Oct 28 '05 #2

P: n/a
mlimber wrote:
je***********@hotmail.com wrote:
[...request that could be easily satisfied with partial specialisation...]
Unfortunately, it must work with a C++ compiler that does not have
partial template specialization. Microsoft has yet to bring Embedded
Visual C++ up to ISO standards. If someone could post a work around
I'd be very appreciative.

See the implementations in Boost.TypeTraits (http://boost.org) and Loki
(http://sourceforge.net/projects/loki-lib/). They both have some tricks
to make it work with VC++ 6.


VC++ 6 is actually more advanced than Embedded VC++, or so I heard.
Oct 28 '05 #3

P: n/a
I'd already checked out Boost. Unfortunately, it looks like it is not
possible to remove a reference with boost unless the compiler supports
partial template specialization. Or, a macro is used to setup type
traits for user defined types.

http://www.boost.org/doc/html/boost_...r_workarounds_

At your suggestion I looked at Loki. Unfortunately, it doesn't look
like the TypeTraits<T>::ReferredType is implemented in the VC6 version
of Loki.

In fact, when I grepped the VC6 Loki header files for ReferredType, I
found this comment:

//TODOSGB None of the parameter types are defined inside of TypeTraits,
e.g. PointeeType, ReferredType, etc...

I will probably implement a solution similar to Boost's "broken
compiler work around" where I use a macro to setup a type trait for all
my UDTs.

I look forward to the day when I no longer have to worry about how
complete my compiler's template support is.

Oct 28 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.