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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2011, 13:07   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию тип функции

Если в следующем примере определить тип подставляемой функции не через шаблон, то каким он должен быть?

Код:
#include<iostream>
#include<string>

template<class F>
void exec(F f)
{
  f();
}

int main()
{
  std::string a = "nya!!";  
  exec([&a](){ std::cout << a << std::endl; }); 
  return 0;
}
the_deer_one вне форума Ответить с цитированием
Старый 17.06.2011, 13:36   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А в чём необходимость? Насколько я знаю, конкретный тип лямбды указать нельзя, так как они генерируются во время компиляции. Если вы используете gcc, то можете указать тип как для обычной функции, но тогда передаваемая лямбда не должна захватывать переменные извне. А также можно сделать так:
Код:
#include <iostream>
#include <functional>

void exec(std::function<int (int, int)> f) {
  std::cout << f(2, 3);
}

int mul(int x, int y) { return x * y; }

int main() {
  int a = 100;
  exec([](int x, int y) { return x + y; });
  exec(mul);
  exec([&a](int x, int y) { return x + y + a; });
}

Последний раз редактировалось netrino; 17.06.2011 в 13:39.
netrino вне форума Ответить с цитированием
Старый 17.06.2011, 15:26   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

netrino
Цитата:
А в чём необходимость?
Обострение дотошности, я от шарпа отвлекаюсь.

Цитата:
так как они генерируются во время компиляции.
Аааа. Кашмай.

Цитата:
А также можно сделать так:
Чё то не найду, а в чём объявлена std::function<> ?
the_deer_one вне форума Ответить с цитированием
Старый 17.06.2011, 15:51   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

В functional
#include <functional>
netrino вне форума Ответить с цитированием
Старый 17.06.2011, 16:19   #5
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Хм, я наверное слепой.
the_deer_one вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тип функции с++ Эндрю Помощь студентам 1 10.05.2011 14:41
указать возвращаемый тип функции )) vedro-compota Общие вопросы Delphi 4 23.04.2010 09:17
Pascal (тип record, процедуры и функции) 4otenado Помощь студентам 3 23.12.2009 01:00
Помогите определить тип функции RNT Помощь студентам 10 14.06.2009 23:22
Шаблон функции срвнения. Определить тип. Иллидан Общие вопросы C/C++ 3 30.05.2008 00:44