Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2022, 04:15   #1
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию Функция возвращающая тип в качестве аргумента шаблона/Передать функцию в шаблон

Есть такой код.
Код:
template <int a>
struct __char{char arr_[a];};
template <int Z =0,template <int> class K=__char >
class pass{
 
public: typedef typename std::conditional<(Z==1),decltype(tpl.set<Z>()),K<Z+1>>::type alt;
typename alt Det(){alt el=this;
ret el;
 
}};
 
template<int C,int Z,/*функция*/>
class lass{
 
typedef typename lass<C-1,Z + 1,/*вызов функции*/>::Result Tail;
 
public:
    typedef Typelist</*вызов функции*/,Tail> Result;
};
 
template <int Z,/*функция*/>
class lass<0,Z,/*вызов функции*/>
{
public:
    typedef NullType Result;
};
Объект tpl построен на коде https://programmersforum.ru/showthread.php?t=337101 .Идея состоит в том чтобы запустить схему в рекурсию, и в момент сборки метофункции, функция будет возвращать нужный тип, возможно ли такое?
Loksiin12 вне форума Ответить с цитированием
Старый 24.11.2022, 08:38   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Функция не может возвращать тип - она должна вернуть значение этого типа, а из этого можно вычислить сам тип с помощью decltype.
Код:
decltype(GetSomeIntegerValue()) int_variable = 123;
Функция при этом НЕ вызывается.
waleri вне форума Ответить с цитированием
Старый 24.11.2022, 21:07   #3
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Функция не может возвращать тип
this возвращает тип(не совсем чистый правда), если его поместить в typeid то можно получить тип. Можно взять к примеру вот этот код.
Код:
    template <unsigned int Index>
    typename TypeAt<ElementsList, Index>::Result & get() 
    {
        TupleElement<typename TypeAt<ElementsList, Index>::Result, Index>  el = this;
        return el;
    }
Но честно говоря такое себе. Это действительно сложная задача раз никто не знает.
Loksiin12 вне форума Ответить с цитированием
Старый 24.11.2022, 22:13   #4
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Это действительно сложная задача раз никто не знает.
Вы слышали душетрепещущую историю про Неуловимого Джо?
Valick вне форума Ответить с цитированием
Старый 24.11.2022, 23:34   #5
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
Вы слышали душетрепещущую историю про Неуловимого Джо?
Тут не до историй хочеться реализовать задумку, но видимо всему своё место.
Loksiin12 вне форума Ответить с цитированием
Старый 26.11.2022, 23:09   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
this возвращает тип
this != тип.
У вас в голове каша.
waleri вне форума Ответить с цитированием
Старый 26.11.2022, 23:18   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Можно взять к примеру вот этот код.
Берем:
Код:
TupleElement<typename TypeAt<ElementsList, Index>::Result, Index>  el = this;
Где здесь this вернул тип? el что такое? С таким подходом и 2+2 возвращает тип.
p51x вне форума Ответить с цитированием
Старый 27.11.2022, 00:15   #8
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
У вас в голове каша
Да каша много захотел.
Loksiin12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция принимающая два аргумента - массив строк и возвращающая массив целых чисел IzIFRag C# (си шарп) 9 08.02.2017 16:02
Как передать результат одной функции в качестве аргумента другой Ka2R Помощь студентам 3 11.03.2015 17:55
функция возвращает максимальное из 2 целых чисел, полученных в качестве аргумента C++ визуальный режим (есть код) carrie bradshaw Помощь студентам 3 30.01.2014 21:23
Как массив передать в качестве аргумента функции Mixim C# (си шарп) 7 10.03.2011 09:53