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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Экспорт функции DLL http://www.cyberforum.ru/cpp/thread1849936.html
Вечер добрый. Работаю над проектом, в котором из DLL экспортируются функции для другого проекта. Столкнулся с проблемой, что сначала была VC 2010, и все работало. Потом поставил VС 2015 Community и...
C++ Пульсометр выдает рандомные значения Доброго времени суток, я пытаюсь усовершенствовать алгоритм для сенсора пульса (характеристики тут: https://www.maximintegrated.com/en/design/reference-design-center/system-board/6300.html/tb_tab0 )... http://www.cyberforum.ru/cpp/thread1849070.html
C++ Вызвать функцию из dll с неопределённым числом параметров
Нужно вызвать из dll функцию с неопределённым числом параметров. пока что работаю с таким вызовом char res; char (*dll) (char* ...); dll = (char (*)(char* ...))GetProcAddress(hlib, "alfa"); ...
Вычисление суммы чисел, от параллельных процессов MPI C++
Задача такая, запускаются параллельно 5 процессов, каждый из них генерит рандомное число и отправляет соседнему процессу, нужно вывести сумму всех этих чисел. Вот что получилось #include <mpi.h>...
C++ Не работает рекурсивная функция http://www.cyberforum.ru/cpp/thread1846981.html
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число, означающее, за сколько ходов туда можно добраться из начальных...
C++ C++ to C converter (OOP C) Всем привет! Не встречал ли кто подобного конвертера, который может код на языке высокого уровня конвертировать в Си-шный код (плохочитаемый, для выкладки в качестве опенсорца для любопытных и для... подробнее

Показать сообщение отдельно
DrOffset
7134 / 4275 / 963
Регистрация: 30.01.2014
Сообщений: 7,064
15.11.2016, 09:05
Цитата Сообщение от 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 *
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru