Описание тега function-call-operator

В C++ оператор вызова функции - это конструкция, которая позволяет использовать объект, как функцию. Эта функция обычно называется функциональным объектом (функтором).
3 ответа

Почему лямбда-оператор вызова неявно const?

У меня есть небольшое "лямбда-выражение" в функции ниже: int main() { int x = 10; auto lambda = [=] () { return x + 3; }; } Ниже приведен "класс анонимного замыкания", сгенерированный для вышеуказанного лямбда-выражения. int main() { int x = 10; cla…
23 ноя '18 в 11:27
4 ответа

Что делает void Classname::operator()(){ .... }?

Я пробираюсь через некоторый код C++ и наткнулся на следующее void Classname::operator()() { //other code here } Я предполагаю, что это как-то связано с перегрузкой конструктора, но кто-то может уточнить это?
2 ответа

При вызове функции, что такое оператор и каковы операнды?

Я пытаюсь понять некоторые основы языка программирования Си на языке CRC. Вызов функции - это постфиксное выражение, называемое указателем функции, за которым следуют круглые скобки, содержащие возможно пустой, разделенный запятыми список выражений …
2 ответа

Оператор вызова функции

Возможные дубликаты: Функторы С ++ - и их использование. Зачем переопределять оператор ()? Я видел использование operator() на контейнерах STL, но что это и когда вы используете?
2 ответа

Перегрузка оператора вызова функции и типа возврата

Я проектирую небольшую математическую библиотеку. У меня есть классы, которые представляют классы функций, например, полиномиальные. Когда они создаются, предоставляются необходимые параметры (a1, a2, a3), так что объект фактически представляет опре…
1 ответ

C++ - Перегрузка оператора вызова шаблонной функции - Ошибка C2064

Я пытаюсь перегрузить оператор вызова функции в C++, и я получил эту ошибку компиляции, которую я не могу устранить (Visual Studio 2010). Ошибка в строке act(4); #include <stdio.h> #include <iostream> void Test(int i); template <class…
12 ответов

Зачем переопределять оператор ()?

В библиотеке Boost Signals они перегружают оператор (). Это соглашение в C++? Для обратных вызовов и т. Д.? Я видел это в коде сотрудника (который является большим фанатом Boost). Из всего Буста, это привело меня в замешательство. Любое понимание пр…
2 ответа

Перегрузка и оператор круглых скобок в C++

Я хочу определить класс myVector, который поддерживает оба назначения operator= и доступ к скобкам, например myclass(1) = 0.5, Смотрите пример фиктивного ниже class myVector { public: vector<double> _v; myVector(unsigned int size) : _v(size, 0…
30 мар '12 в 21:06
1 ответ

Как я могу использовать `Function Call Operator` для загрузки типов`rvalue` в мой объект?

У меня есть такой класс: template<typename T> class MyClass { public: // ... T && operator()(uint64_t i, uint64_t j); // I want to add a member function like this. T & operator()(uint64_t i, uint64_t j); const T & operator()(ui…
15 ответов

Что такое функторы С ++ и их использование?

Я много слышу о функторах в C++. Может ли кто-нибудь дать мне представление о том, кто они и в каких случаях они будут полезны?
4 ответа

Как использовать одну функцию для вызова другой функции с помощью оператора if/case?

Кто-нибудь знает, что я сделал опечатку, потому что мой редактор, и я не могу заставить его работать number=5; switch (number) { case 5: box.onclick = function1; break; case 50: box.onclick = function2; break; } Я также попытался сделать это в выклю…
2 ответа

Как неявно вызвать оператор вызова функции?

Как неявно вызвать оператор вызова шаблонной функции объекта класса? class User_Type { public: template< typename T > T operator()() const; }; void function() { User_Type user_var; int int_var_0 = user_var.operator()< int >(); // explici…
11 ноя '14 в 17:17
3 ответа

Реализовать Fn Trait (оператор вызова) для разных типов аргументов

Например, у меня есть простой классификатор struct Clf { x: f64 } Классификатор возвращает 0, если наблюдаемое значение меньше x, и 1, если больше x. Теперь я хочу реализовать оператор вызова для этого классификатора. Однако функция должна иметь воз…
2 ответа

Передача ссылки на шаблон перегрузки оператора вызова функции

У меня есть класс, который перегружает оператор вызова функции с помощью функции шаблона, например, так: class Test { public: template<class T> void operator()(T t) { std::cout<<(&t)<<std::endl; }; }; Я хотел бы вызвать его с п…
1 ответ

Как объявить default-функцию для класса?

Оператор вызова функции в C++ позволяет классу действовать как функция. Я использовал его в классе журналирования, где-то вроде этого: logger.setFileName("./debug.log"); logger.log("Log this message"); превращается в это: logger.setFileName("./debu…
1 ответ

Проверьте, есть ли в классе возможно перегруженный оператор вызова функции

Мне интересно, можно ли реализовать черту в C++20 чтобы проверить, есть ли тип T таков, что он имеет возможно перегруженный / возможно шаблонный оператор вызова функции: operator(). // Declaration template <class T> struct has_function_call_op…
2 ответа

ошибка доступа к окружающей переменной в лямбда-функции

... unordered_map<string ,int> map; for (const auto& str : words) { map[str]++; } auto cmp = [map](string s1, string s2){ if (map[s1] == map[s2]) return s1 < s2; return map[s1] > map[s2]; }; ... Это дает мне no viable overloaded oper…
06 май '20 в 04:55
1 ответ

Есть ли способ создать std::thread, используя объект и его оператор вызова непустого списка аргументов?

Я новичок в std::threadи C++11 в целом. Пытаясь поиграть с примерами из https://en.cppreference.com/w/cpp/thread/thread/thread, я пытаюсь проверить, смогу ли я создать std::thread используя оператор вызова функции-члена класса с непустым списком арг…
0 ответов

Как перегрузить оператор вызова функции в зависимости от того, вызывается ли она слева или справа

Можно ли перегрузить оператор вызова функции, чтобы: когда вызывающая сторона находится в левой части выражения, всегда вызывается непостоянная версия когда вызывающая сторона находится в правой части выражения, всегда вызывается константная версия …
1 ответ

Передача статического оператора() как типа удаления

Законен ли следующий фрагмент кода в C++23? #include <memory> #include <cstdio> int main() { struct custom_deleter { static void operator()(int* const ptr) { delete ptr; std::fputs( "Deleted\n", stdout ); } }; auto ptr { std::unique_ptr&…
02 июн '23 в 00:56