|
Boost Users : |
Subject: Re: [Boost-users] metaprogramming -- does a specialization exist?
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-02-13 14:41:17
AMDG
Peter Foelsche wrote:
> Is there some way to check at compile time whether a particular
> specialization exists?
> E.g. I have a template class with two template arguments which are
> commutative -- means they can be exchanged and the result is the same.
> Can I check whether
>
> type<A, B> exists and if not select type<B, A>?
You can't specializations directly, but if you can change
the primary template you can use:
template<class T, class U>
struct type {
typedef void this_is_the_primary_definition_of_type;
};
and use SFINAE to check for the typedef. There are other
ways to do this like adding a base class. The key is to add
something whose presence can be detected to the primary
template.
In Christ,
Steven Watanabe
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net