Boost logo

Boost Users :

From: martin f krafft (madduck_at_[hidden])
Date: 2005-05-14 09:25:58

Dear all,

another MPL question (at least I think it's the domain of MPL):

I have a templated class Foo and need to make an instance based on
the type of an instance at various points in the code, which is
  template <typename T>
    Foo<T> get_foo_for(T const&) { return Foo<T>; }

At times, I don't have an instance of an object, just the typename.
I do not want to assume that all types are default constructible
(which could be expensive anyway), so I have to do:


I am hiding these two behind two separate macros which I would like
to unify. The situation is actually more complex but boils down to
the following question:

How can I create a macro (#define) such that its definition does
different things when passed an instance or a typename.
Something like:

  if is_type(Arg) do_this();
  else do_that();

Again, I cannot figure this out from the MPL docs. There is
enable_if and if_c, but both seem to deal with the definition of
symbols and/or types, not with the selection of functions to call.

I appreciate any hint.

martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net_at_madduck
invalid/expired pgp subkeys? use as keyserver!
spamtraps: madduck.bogus_at_[hidden]
"arguments are extremely vulgar,
 for everyone in good society
 holds exactly the same opinion."
                                                        -- oscar wilde

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at