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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2022, 21:08   #91
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
sizeof(Tail)
А можно ли элементы из этого списка
Код:
template < 
    typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
    typename T4 = NullType, typename T5 = NullType
>
class MakeList
{
    typedef typename MakeList< T2, T3, T4, T5 >::Result Tail;
 
public:
    typedef Typelist<T1, Tail> Result;
};
по 1ому прочитать? Результат можно сохранять в константу выводить её никуда не нужно хочу просто понять как это делается.
Loksiin12 вне форума Ответить с цитированием
Старый 14.11.2022, 22:29   #92
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
инстанс экземпляра шаблонного класса
Ещё такой вопрос внутри MakeList объявлена закрытая переменная Tail она построена на базе/типе MakeList< T2, T3, T4, T5 >, я так понимаю Tail может иметь какой угодно тип чтобы рекурсия запустилась(если конечно логика построена правильно, шаблон же можно как угодно использовать)?
Loksiin12 вне форума Ответить с цитированием
Старый 15.11.2022, 22:53   #93
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Шаблоны
Всё что находится в <>проходится неразрывно, например MakeList< T2, T3, T4, T5 >, или неизвестно как это происходит?
Loksiin12 вне форума Ответить с цитированием
Старый 28.11.2022, 22:40   #94
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
вот, пробуй тут https://godbolt.org/
как отключить оптимизатор чтобы все коды там переводились на Ассэмблер?
Loksiin12 вне форума Ответить с цитированием
Старый 28.11.2022, 23:10   #95
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

На хабре https://habr.com/ru/post/339962/ человек написал что можно использовать в комментариях -O0 .
Изображения
Тип файла: png Отключаем оптимизатор на godbolt.org.png (48.9 Кб, 0 просмотров)
Loksiin12 вне форума Ответить с цитированием
Старый 29.11.2022, 07:15   #96
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 966
По умолчанию

Loksiin12, да, есть такой момент. Только это не комментарии, а параметры компилятора

-O0 - без оптимизации
-O2 - с некой оптимизацией
-O3 - с хорошей оптимизацией
-O4 - если не ошибаюсь, это максимальная оптимизация. Если ошибаюсь, тогда максимальная это -O3
Алексей1153 вне форума Ответить с цитированием
Старый 29.11.2022, 09:41   #97
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
да, есть такой момент.
там ещё слева можно компиляторы выбирать, правда их там слишком много. Поэтому использовать эти резкие настройки что вы описали будет проще и более заметно как меняется код.
Loksiin12 вне форума Ответить с цитированием
Старый 03.02.2023, 18:55   #98
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Шаблоны - это метапрограммирование,
скажите а передача функции operator, которая находится внутри структуры CoutPrinter по примеру
Код:
TupleForEeach(tpl, CoutPrinter());
это передача по указателю ссылке, как это работает что это за способ передачи функции в качестве аргумента в другую функцию?
Loksiin12 вне форума Ответить с цитированием
Старый 03.02.2023, 20:10   #99
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 966
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
TupleForEeach(tpl, CoutPrinter());
это создание экземпляра класса CoutPrinter, используется конструктор по умолчанию. Созданный экземпляр передаётся в функцию (передаётся его копия).
Алексей1153 вне форума Ответить с цитированием
Старый 03.02.2023, 20:38   #100
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
это создание экземпляра класса CoutPrinter
тем самым и происходит вызов можно сказать анонимной функции f? А как применить шаблон к функции f, у меня работает только такая запись.
Код:
#define TuplFor tpl1.template set<I-1>()
template<class P,unsigned char E,typename F>//функция для работы с 1им объектом
static P run_t(Types&tpl1,F f,const unsigned char i1,char*point){
ret i1==I-1?
f.operator()<P,I-1,decltype(TuplFor)>(TuplFor,I-1,point):
TupleFor__1<Types,Structes,I-1>::run_t<P,I-1>(tpl1,f,i1,point);
}//ret 0;
};
Писали что с помощью Тэга можно но у меня не работает.
Код:
template <typename T> struct Tag {};
 
//..........
 
cout << "f " << f(tpl.template get<(I)>(), Tag<int>()) << endl;
 
//.............
 
struct CoutPrinter {
    template <class P, typename T>
    P operator()(T const & v, Tag<P>) const
    {
        std::cout << sizeof(v) << ' ';
        return sizeof(v);
    }
};
Loksiin12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разобраться с кодом Boris2 Помощь студентам 1 15.07.2013 15:58
С++ разобраться с кодом marina12 Помощь студентам 2 21.05.2013 23:22
разобраться с кодом iris_ka Помощь студентам 0 16.05.2012 17:19
Разобраться с кодом. Vlero PHP 2 20.01.2011 12:46
проблемка с кодом, результат получается немного не такой как надо hen Помощь студентам 3 24.04.2009 15:11