У меня есть некоторое количество характеристик типов. Чтобы сделать работу с ними поинтереснее(?), я подумал, что можно делать так:
struct TraitA {};
struct TraitB {};
template <class type, class trait>
struct Trait;
//это вместо
template <class type> //template <class type>
struct Trait<type, TraitA> //struct TraitA
{ //{
typedef ... result; // typedef ... result;
}; //};
Стоит ли так делать?
Здравствуйте, Seriously Serious, Вы писали:
SS>Стоит ли так делать?
Даже незнаю. Может Вы раскажите нам поподробнее, чтобы нам тоже стало интереснее.
Эээ...
Ну во-первых можно делать характеристики характеристик:
template<>
struct Trait<TraitA, TraitB> {...};
Во-вторых можно устанавливать значения по умолчанию для некоторой группы характеристик. Можно сделать обработку автоматом const и volatile случаи, если они совпадают с не const и volatile:
template <class type, class trait>
struct Trait<const type, trait>
{
typedef typename Trait<type, trait>::result result;
};
(Можно сделать характеристику характеристики, определяющую, верно ли это для данной характеристики)