Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Template typedefs - What's your work around?

C++ 0x has template aliases (sometimes referred to as template typedefs). See here. Current spec of C++ does not.

What do you like to use as work around ? Container objects or Macros ? Do you feel its worth it ?

like image 637
George Godik Avatar asked Aug 25 '08 14:08

George Godik


1 Answers

What do you like to use as work around ? Container objects or Macros ? Do you feel its worth it ?

The canonical way is to use a metafunction like thus:

template <typename T> struct my_string_map {     typedef std::map<std::string, T> type; };  // Invoke:  my_string_map<int>::type my_str_int_map; 

This is also used in the STL (allocator::rebind<U>) and in many libraries including Boost. We use it extensively in a bioinformatical library.

It's bloated, but it's the best alternative 99% of the time. Using macros here is not worth the many downsides.

(EDIT: I've amended the code to reflect Boost/STL conventions as pointed out by Daniel in his comment.)

like image 127
Konrad Rudolph Avatar answered Oct 13 '22 17:10

Konrad Rudolph