namespace NodeListTraits
{
template< typename TNodeType, typename TDataype >
void AddHead( TDataype data, TNodeType node )
{
// Общая реализация.
};
template< typename TNodeType >
void AddHead( Storage_device* data, TNodeType node )
{
// Спецификация для `Storage_device`.
};
};
template< typename TNodeType, typename TDataype >
void List<TNodeType, TDataype>::AddHead( TDataype data )
{
// ...
// Черты лучше вызывать только через ADL.
NodeListTraits::AddHead( data, node );
}using CheckingPred = bool (Entity::*)();auto my_entity = this;
return std::all_of(
predicates.begin(), predicates.end(),
[my_entity]( CheckingPred stored_pred ) -> bool
{
return (my_entity->*stored_pred)();
}
);
en.cppreference.com/w/cpp/string/char_traits
Это шаблон класса, созданный непосредственно для частного инстанцирования и определения набора статических функций, которыми пользуется основной шаблон (для тебя это будет класс List).