通常在使用模板时,你最终会得到这样的东西:
这是很多相同的内容,复制到许多不同的模板类中。创建像这样的东西是否值得?
template <T>
class the_class
{
public:
// types
typedef T value_type;
typedef const value_type const_value_type;
typedef value_type& reference;
typedef const_value_type& const_reference;
typedef value_type* pointer;
typedef const_value_type* const_pointer;
...
};
这是很多相同的内容,复制到许多不同的模板类中。创建像这样的东西是否值得?
// template_types.h
#define TEMPLATE_TYPES(T) \
typedef T value_type; \
typedef const value_type const_value_type; \
typedef value_type& reference; \
typedef const_value_type& const_reference; \
typedef value_type* pointer; \
typedef const_value_type* const_pointer;
所以我的类现在变成了:
#include "template_types.h"
template <typename T>
class the_class
{
public:
TEMPLATE_TYPES(T)
...
};
这样做看起来更加简洁,而且当我创建其他模板类时避免了重复。这是一个好的做法吗?还是应该避免这样做,只需复制和粘贴typedefs?