У меня есть несколько классов-агрегаторов, которые должны агрегироваться по списку переменных, например:
template<class T>
class Min{
public:
T val=0;
void aggregate(T val_){
if(val_ < val){
val = val_;
}
};
Теперь я хочу иметь функцию слияния, которая объединяет два агрегатора.Было бы принято 2 агрегатора, например Min и их тип.
template<class Agg, class T>
Agg<T> merge(Agg<T> agg1, Agg<T> agg2);
И я хочу иметь специализацию шаблона для каждого агрегатора, но абстракцию для внутреннего типа агрегатора.Но я не мог найти синтаксис для этого.Например,
template <> // specialization for Agg
template <class T> // abstraction for Agg's type
Min<T> merge<Min<T>>(Min<T> agg1, Min<T> agg2){...}
генерирует ошибку
error: too many template-parameter-lists
Min<T> merge<Min<T>>(Min<T> agg1, Min<T> agg2){...}
^~~~~~~~~~~~~
Какой тогда правильный синтаксис?