[c++] как при вызове шаблонной функции указать параметры?
У тебя это функция, а не класс. Должен быть класс, такой что его объекты прикидываются функциями.
У тебя это функция, а не класс. Должен быть класс, такой что его объекты прикидываются функциями.моя твоя не понимает
да у меня функция
как сделать класс это вроде ежу понятно
что значит "должен"? ты хочешь сказать что по стандарту в шаблон нельзя функцию передавать? но ведь оно компиляется и работает
или имеется ввиду что такой шаблон потом нельзя будет явно указать? (кстати есть какиенить правильные слова вместо "явно указать"?)
фигня какая-то, компилятор же раскрывая шаблон всё равно же должен описание его построить...
У меня на g++ 4.4.2 компилируются оба варианта (с опциями -W -Wall никаких специфических warnings нет).
Также компилируется в варианте:
tr
<
std::map<std::string, std::string>::const_iterator,
std::vector<std::string>::iterator,
std::string (*std::pair<const std::string, std::string>)
>
(base.begin base.end result.begin secondUnary<const std::string, std::string> );
Который, кажется, больше подходит.
Оба варианта скомпилировались без ошибок. С /Wall руганулось на сравнение signed и unsigned, а также на заголовок main (плюс несколько ошибок в библиотечных заголовках).
Кстати, комментировать в таких случаях, имхо, лучше с помощью директив
#if 0
#endif
Кстати, комментировать в таких случаях, имхо, лучше с помощью директивпочему?
// - нагляднее
Да, я туплю. Выше правильно написали, тип "указатель на функцию" объявляется как "ret (*nameargs)", или без имени, если анонимный.
У меня на g++ 4.4.2 компилируются оба варианта (с опциями -W -Wall никаких специфических warnings нет).у меня сановский CC не компиляет если раскомментить
а g++ версии 2.95.2 компиляет, но при запуске корка
(*)блин
я тормоз
так заработало
Кстати, комментировать в таких случаях, имхо, лучше с помощью директивой мама
#if 0
#endif
что за ужас?
зачем такое?
у меня даж среда моя (vim и IDEA) такое не поддерживает, а обучать её такому замучаешься
так я выделил блок и нажал ctrl+/
Оба варианта скомпилировались без ошибок.Оххо.
А что за объявление типа 'std::string(std::pair<const std::string, std::string>)' ? Так же ни указатель на функцию не объявить, ни структуру, вообще ничего, по-моему.
Так же ни указатель на функцию не объявить, ни структуру, вообще ничего, по-моему.Это сигнатура функции, которая получает один аргумент типа std::pair<const std::string, std::string> и возвращает std::string
Поддерживается не всеми компиляторами, в частности "Sun WorkShop 6 update 2 C++ 5.3" это не поддерживает.
Оставить комментарий
pitrik2
вот так компиляется и работает:если раскомментировать строчки то перестает компиляться
подозреваю что ошибка в указании третьего парамтра
как это сделать правильно?
и второй вопрос
правильно ли я вообще определил унарную функцию secondUnary?
может это лучше немного по-другому делать?