2016-03-24 3 views
0

Я создал следующую структуру шаблонов, где вторым параметром шаблона является параметр шаблона шаблона. Я хотел бы использовать его как возвращаемый тип функции внезапной структуры.Использовать шаблонный шаблон в качестве возвращаемого типа функции класса

template<typename T, template<typename /*T*/, typename /*U*/> typename V> 
struct MyStruct 
{ 
    V myFunction(); 
} 

Я попытался возвращение V, но это, очевидно, не работает. Затем я попытался вернуть V<T, U>, но он тоже не работает. Должен ли я объявлять параметр U в качестве третьего параметра шаблона MyStruct или есть ли другой способ сделать то, что я хочу сделать?

ответ

1

Вам не хватает списка аргументов V. Однако вы не можете использовать V<T, U> myFunction();, как вы сказали. Если вы хотите использовать U или что-то еще, что вам нужно добавить. Например:

template<typename T, template<typename /*T*/, typename /*U*/> typename V, typename P> 
struct MyStruct { 
    V<T, P> myFunction(); 
};