2008/9/24 Peng Yu <pengyu.ut@gmail.com>
Hi,

I want to test if template argument is of some form like in the
following code. I could define some helper class to do such test. But
I'm wondering if there is any easy to do it with boost? The
type_traits's is_same does not work in this case. I'm wondering if
there could be some generalization of it.

template <T>
void f() {
//For example, I want to test if T is of the
// form of std::complex<S>

}

Thanks,
Peng

Take a look at boost::lambda::is_instance_of (boost/lambda/detail/is_instance_of.hpp).

template <class T>
void f() {
  if (boost::lambda::is_instance_of<T, std::complex>::value)
    std::cout << "T is an instance of std::complex" << std::endl;
  else
    std::cout << "T is not an instance of std::complex" << std::endl;
}

Note: code resides in the detail directory meaning that it's not part of the public interface.

Roman Perepelitsa.