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

Итераторы, как параметры лябда-функций в шаблонном классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм поиска в ширину http://www.cyberforum.ru/cpp-beginners/thread917887.html
Подскажите, пожалуйста, алгоритм поиска в ширину в неориентированном графе
C++ Указатели. Найти количество элементов, стоящих на четных местах, удовлетворяющих условию Доброго времени суток! Помогите пожалуйста написать программу! В массиве t(30), сформированном случайным образом, найти количество элементов, стоящих на четных местах, удовлетворяющих условию a<ti<b, где a и b - заданные числа.Указатель. Заранее большое спасибо! http://www.cyberforum.ru/cpp-beginners/thread917881.html
C++ Перегрузка оператора ввода ,вывода
Вообщем проблема такая есть класс в нем приват поля и перегружены 2 дружественных оператора ввода вывода, все хорошо, но дружественный оператор не может получить доступ к закрытым полям класса,помогите в моем недопонимании. вот "куски кода". private : int real; int image; .... public : ....
C++ В массиве, сформированном случайным образом, найти количество элементов, стоящих на четных местах
Помогите сделать указатель. В массиве t(30), сформированном случайным образом, найти количество элементов, стоящих на четных местах, удовлетворяющих условию a<ti<b, где a и b - заданные числа.
C++ Приложение, работающее с фискальным аппаратом http://www.cyberforum.ru/cpp-beginners/thread917856.html
Здравствуйте, обращаюсь к вам за помощью! Возникла острая необходимость написания приложения, работающего с аппаратом для печати чеков. В чем суть: //////// Сложная часть //////// Имеется фискальный аппарат(для печати чеков), подключаемый через COM-порт, причем порт довольно часто изменяется(перетыкается и т.д) Необходимо написать софтину, которая с заданным интервалом времени(5000ms)...
C++ Программа которая открывает текстовый файл и сообщает количество символов в файле Напишите программу, которая открывает текстовый файл, читает его символ за символом до самого конца и сообщает количество символов в файле. Что-то здесь надо поправить,дописать, буду благодарен за помощь. #include <iostream> #include <fstream> #include <cstdlib> int main() { подробнее

Показать сообщение отдельно
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76

Итераторы, как параметры лябда-функций в шаблонном классе - C++

04.07.2013, 23:38. Просмотров 995. Ответов 14
Метки (Все метки)

Доброго здоровья!

Есть такой код (упрощенный вариант для наглядного описания ситуации):
Код
template<typename Type>
struct A
{
    std::function<Type(typename std::vector<Type>::iterator)> f1 =
    [&](typename std::vector<Type>::iterator arg)
    {
        return *arg ; 
    };
};

int main()
{
    std::vector<float> inp={1};
   
    A<float> obj;
    auto a = inp.begin();
    std::cout<<obj.f1(a);
}
Вылетает такая простыня ошибок при компиляции:
Код
g++-4.7    -c -g -std=c++11 -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
main.cpp:38:52: ошибка: несоответствия типа/значения в аргументе 1 в списке параметров шаблона для «template<class _Signature> class std::function»
main.cpp:38:52: ошибка:   ожидался тип, обнаружено «(Type)(std::vector<_RealType>::iterator)»
main.cpp: In constructor «constexpr A<float>::A()»:
main.cpp:36:8: ошибка: invalid user-defined conversion from «<lambda(std::vector<float, std::allocator<float> >::iterator)>» to «int» [-fpermissive]
main.cpp:39:49: замечание: candidate is: <lambda(std::vector<float, std::allocator<float> >::iterator)>::operator double (*)(std::vector<float, std::allocator<float> >::iterator)() const <near match>
main.cpp:39:49: замечание:   no known conversion for implicit «this» parameter from «double (*)(std::vector<float, std::allocator<float> >::iterator) {aka double (*)(__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >)}» to «int»
main.cpp: В функции «int main()»:
main.cpp:53:14: замечание: synthesized method «constexpr A<float>::A()» first required here 
main.cpp:54:14: ошибка: нет декларации «inp» в этой области видимости
main.cpp:54:24: ошибка: unable to deduce «auto» from «<expression error>»
main.cpp:55:24: ошибка: «obj.A<float>::f1» нельзя использовать как функцию
Если не делать struct A шаблонной и, соответственно, заменить Type конкретно на float, то все норм. Подскажите, как сдесь правильно заюзать шаблоны?

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