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

Объясните принцип шаблона Common_type - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Экспорт функции DLL http://www.cyberforum.ru/cpp/thread1849936.html
Вечер добрый. Работаю над проектом, в котором из DLL экспортируются функции для другого проекта. Столкнулся с проблемой, что сначала была VC 2010, и все работало. Потом поставил VС 2015 Community и не работает экспорт, как я понимаю. Вот код DLL: DLLALIVE_API char * GetName(void) { char * temp = "Alive"; char * pName = new char; int i = 0;
C++ Пульсометр выдает рандомные значения Доброго времени суток, я пытаюсь усовершенствовать алгоритм для сенсора пульса (характеристики тут: https://www.maximintegrated.com/en/design/reference-design-center/system-board/6300.html/tb_tab0 ) Предложенный разработчиками алгоритм выдает значения от -999 до 500 при малейшем шевелении пальца, достичь более или менее постоянных значений крайне сложно. Можете подсказать, что нужно... http://www.cyberforum.ru/cpp/thread1849070.html
C++ Вызвать функцию из dll с неопределённым числом параметров
Нужно вызвать из dll функцию с неопределённым числом параметров. пока что работаю с таким вызовом char res; char (*dll) (char* ...); dll = (char (*)(char* ...))GetProcAddress(hlib, "alfa"); res=dll("abc"); cout << res << endl; Функция DLL просто возвращает значение обратно
Вычисление суммы чисел, от параллельных процессов MPI C++
Задача такая, запускаются параллельно 5 процессов, каждый из них генерит рандомное число и отправляет соседнему процессу, нужно вывести сумму всех этих чисел. Вот что получилось #include <mpi.h> #include <stdio.h> #include <iostream> int rank, size; //int spisok1={0}; int *spisok1 = new int;
C++ Не работает рекурсивная функция http://www.cyberforum.ru/cpp/thread1846981.html
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число, означающее, за сколько ходов туда можно добраться из начальных координат. Если в if приписать && n<3, то она работает, но в маленьком радиусе, если больше тройки число поставить, то уже не работает, никак не могу понять, в чем дело. void search(int x, int y, int n) ...
C++ C++ to C converter (OOP C) Всем привет! Не встречал ли кто подобного конвертера, который может код на языке высокого уровня конвертировать в Си-шный код (плохочитаемый, для выкладки в качестве опенсорца для любопытных и для любителей резюме с открытым кодом ). Есть мысль, что кто-то пользуется. Про существование конвертеров C++ to C# (из одного высокоуровневого ООП языка в другой знаю), код получается рабочий, но... подробнее

Показать сообщение отдельно
DrOffset
6931 / 4124 / 942
Регистрация: 30.01.2014
Сообщений: 6,915
15.11.2016, 09:05     Объясните принцип шаблона Common_type
Цитата Сообщение от Archi0 Посмотреть сообщение
В чем отличие от
Во-первых так нельзя. Не скомпилируется. Операндами должны быть объекты. Т.е. так:
C++
1
decltype(_Always_false<_Ty0>::value ? _Ty0() : _Ty1()>)
Хоть на самом деле ни один из объектов не будет создан, но все требования к типам, которые накладывает такая запись, должны быть соблюдены. В частности, эта запись требует наличия конструктора без параметров. Не все типы могут предоставить такой конструктор. Поэтому для получения объекта в выражении используется declval().

Цитата Сообщение от Archi0 Посмотреть сообщение
Для чего используются правые ссылки?
Предположим, что declval() у нас реализован так:
C++
1
2
template <typename T>
T declval();
Если мы используем его с типом, например, int[2], то будет ошибка компиляции, т.к. массивы нельзя возвращать по значению. Также, аргументом шаблона могут быть типы с отсутствующим (удаленным или помещенным в private) конструктором копирования, и это тоже приведет к ошибке компиляции в случае использования такого declval(). Поэтому используется ссылка. Например, благодаря этому, можно вывести общий тип для двух массивов:
C++
1
common_type<int[3], int[4]>::type; // -> int *
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru