[mpl] calling a function depending on type or instance as argument
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 simple: template <typename T> Foo<T> get_foo_for(T const&) { return Foo<T>; } //... get_foo_for(myObj).doSomethingWithFoo(); 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: Foo<T>().doSomethingWithFoo(); 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@madduck invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver! spamtraps: madduck.bogus@madduck.net "arguments are extremely vulgar, for everyone in good society holds exactly the same opinion." -- oscar wilde
participants (1)
-
martin f krafft