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

Непонятен синтаксис шаблонов из кода boost для вычисления факториала - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написание програмы по полёту ракеты http://www.cyberforum.ru/cpp-beginners/thread1798523.html
Очень надеюсь, что найдётся человек, которому не лень помочь. Просто я сильно провтыкался с дэдлайном в ВУЗе и сейчас в форсированом режиме делаю курсовую, так-как бедный студент приобрести не могу, но если появятся деньги могу отблагодарить за помощь. Курсовая довольно-таки обширная и програма это лишь малая часть, но с ней проблем у меня с головой, ведь языки програмирования знаю очень слабо,...
C++ Вектор выходит за диапазон Здравствуйте. :) Как сделать так чтобы вектор не выходил за диапазон? #include <iostream> #include <vector> using namespace std; int main() { int k; http://www.cyberforum.ru/cpp-beginners/thread1798512.html
C++ Com port и С++
Хочу отослать данные по ком порту на контроллер.Вот только беда,не отсылается всё сообщение,а только один символ.Как это исправить? LPCTSTR sPortName = L"COM4"; CString ed=L"asdasd"; CString q=L"k"; hSerial = ::CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); ed=ed+q; char buffer;
Сформировать массив неповторяющихся элементов исходного массива C++
Сформировать массив из неповторяющихся элементов исходного массива. Например : Из массива A = {2,5,2,6,8,5,1,9,4,3 } нужно получить массив B ={6,8,1,9,4,3,0,0,0,0}. Или B={6,8,1,9,4,3) что даже лучше. Цифры могут быть любыми как и размер исходного массива. Мой код: #include <iostream> #include <clocale> using namespace std; void main() { int A = { 2,5,2,6,8,5,1,9,4,3 }, B = { 0 },...
C++ Функция strlen перед вызовом моей функции портит строку в конфигурации Release MS Visual C++ 2013 http://www.cyberforum.ru/cpp-beginners/thread1798377.html
Написал функцию RemoveChars, которая убирает символы перевода строки в строке. Если в конфигурации проекта Visual C++ в Microsoft Visual Studio 2013 установлено Debug, проблем нет. Если перед вызовом функции RemoveChars вызывается функция strlen, а после нее RemoveChars, в конфигурации Release RemoveChars выдает пустую строку или короткую строку с мусором. RemoveChars(str1) выдает нормальную...
C++ Сгенерировать заголовочный файл для .lib (созданной в Maple) Доброго, форумчане! у меня нет опыта в кодинге на с++ и это мой первый пост) хочется подключить lib файл (созданный в maple) к .net проекту. Основываюсь на этой статье для начало реализовал на vs2010 пример из статьи и открыл в хекс редакторе и обнаружил некоторую закономерность в результате которого я смог написать заголовочный файл к простенькому примеру но с lib от maple все иначе... подробнее

Показать сообщение отдельно
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
26.08.2016, 09:01     Непонятен синтаксис шаблонов из кода boost для вычисления факториала
Цитата Сообщение от cyberk20 Посмотреть сообщение
Скажите в чем разница между указателем на функцию и просто типом функция?
Вот допустим есть такая функция
C++
1
void test(int x) {}
Выражение test имеет тип void(int), выражение &test имеет тип void(*)(int). Логика видна?
Тип функции - абстракция. Программист не может создать объект типа "функция" (наряду с ссылками, и void). Хотя сами определения функций можно условно считать такими объектами. Поэтому в выражениях, где требуется объект, тип функции продвигается до указателя. Следовательно, выражения void (*p)(int) = &test; и void (*p)(int) = test; эквивалентны. В языке С++ есть еще один тип, который ведет себя похожим образом - это массив, его объекты можно создавать, но их нельзя непосредственно копировать, в этом случае они также продвигаются до указателя.
Таким образом тип функция может быть применен только для выражений на этапе компиляции, в частности для специализаций и шаблонной дедукции. Можно конечно для этих же целей использовать указатель на функцию, но тип функции позволит получить более общую нотацию для функций-членов и свободных функций (как, например, это сделано в std::function).
 
Текущее время: 00:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru