Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Шаблонное вычисление типов и Variadic Templates - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить номер строки квадратной матрицы с максимальной суммой элементов http://www.cyberforum.ru/cpp-beginners/thread1609713.html
Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой максимальна.
C++ Поднять asmx-сервер и клиентом на C++ достучаться до методов сервака (как добавить ссылку на веб-сервис?) Всем доброго времени суток! Стоит задача поднять asmx сервис (сервер) и клиентом на с++ достучаться до методов сервака. Если писать клиент на шарпе, проблем нет, т.к. там есть возможность... http://www.cyberforum.ru/cpp-beginners/thread1609709.html
C++ Распечатать координаты вектора
Распечатать координаты вектора, равного разности двух векторов a и b размерностью n=10 и найти его модуль.
Как собрать программу ?(Заранее прошу прощения, у администрации если что то нарушил) C++
Подскажите пожалуйста как собрать вот этот код? : #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused WINAPI...
C++ Запросить у пользователя массив из 10 строк и вывести на экран наименьшую http://www.cyberforum.ru/cpp-beginners/thread1609676.html
3) Запросить у пользователя массив из 10 строк и вывести на экран наименьшую
C++ Объединить две строки 2) Объявить заранее проинициализированную строку из 10 символов, и еще одну из 5. В третью строку длиной 13 символов добавить сначала первую, потом вторую, не превышая размер. подробнее

Показать сообщение отдельно
DrOffset
7310 / 4406 / 998
Регистрация: 30.01.2014
Сообщений: 7,242
11.12.2015, 18:30
Цитата Сообщение от Mirmik Посмотреть сообщение
Согласен, не очень эстетично, но вполне функционально.
Эстетика зависит от конкретной задачи в комплексе. А то, что я тебе показал, это фактически паттерн.
А вообще rebind - это старый трюк. В стандартной библиотеке его использовали для получения правильного типа аллокатора для хранимого элемента в std::list. Здесь есть еще.

Добавлено через 30 секунд

Не по теме:

Цитата Сообщение от Mirmik Посмотреть сообщение
Ну, это вы меня всё-таки обманываете.
Какой я нехороший. Ай-ай-ай.



Добавлено через 10 минут
Цитата Сообщение от Mirmik Посмотреть сообщение
чтобы задать типы для tuple, который, после раскрытия, будет передан этой функции в качестве параметра
Ну а с tuple ничего и городить не надо.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <cstdio>
#include <tuple>
 
template <typename T>
struct mtd_parser;
 
template <typename R, typename T, typename ...V>
struct mtd_parser<R(T::*)(V...)>
{
    using tuple_type = std::tuple<V...> ;
};
template <typename R, typename ...V>
struct mtd_parser<R(*)(V...)>
{
    using tuple_type = std::tuple<V...>;
};
/*************************/
 
template <typename T>
void print()
{
    printf("%s\n", __PRETTY_FUNCTION__);
}
 
struct C {};
 
int main()
{
    void* (*ptr)(int, double);
    void* (C::*ptr1)(int, double);
 
    void * (*ptr2)(mtd_parser<decltype(ptr)>::tuple_type);
    void * (*ptr3)(mtd_parser<decltype(ptr1)>::tuple_type);
    
    print<decltype(ptr2)>();
    print<decltype(ptr3)>();
}
http://rextester.com/AKYR85980

Еще можно упаковать аргументы в спец. тип. И передавать его в нужный контекст, а потом раскрывать его, где нужно. Но это вариация на тему.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru