функции Foo, которая должна принимать класс А<Т> при любом Т. Я сделал это так:
template<typename T, template <typename> class U>
enable_if_t<is_same_v<A<T>, U<T>>, U<T> Foo(string s){}
Теперь я вызываю функцию в другой шаблонной функции:
template<typename T>
auto Bar(string arg){
return Foo<T>(arg);
}
но так оно не работает. Вообщем в сумме нужна перегрузка на класс типов A<T> где Т это параметр, а А это конкретный класс, и при этом чтобы в другой функции некий параметр U, дедуктировался как А<int> например, и следовательно Foo<U>, где U = A<int> выбирало соответствующую перегрузку?
Нет, MyClass<T>, только Т параметр. Я ниже пример привел
т.е. нужно выцепить из A<T> то самое T и пробросить в MyClass?
Я коряво объяснил, А это и есть MyClass. Нужно чтобы перегрузка принимала MyClass<Т> для любого Т, и при этом можно было сделать вызов Foo<U> где U = MyClass<int> или MyClass<float> и тп – это шаблонный параметр переданный в другую функуию
угу, насчет того что нужна перегрузка Foo которая умеет работать только с MyClass<T> все ясно. А какой тип возвращаемого значения должен быть у Foo? Из вашего изначального кода непонятно
MyClass<T>
https://godbolt.org/z/Px3rEocWo так?
да, на вид так, спасибо) сейчас разберусь как сделано
Обсуждают сегодня