История изменений
Исправление Siborgium, (текущая версия) :
Если весь тип function заменить на auto, то компилит (c++20):
void test(const auto &task) {
Очень интересный вариант, впервые вижу, чтобы кто-то по константной ссылке функции принимал. Сразу могу сказать, что он поломается даже на
test([x=5](auto...) mutable { ++x; })
не занимайся ерундой с std::function
и константной ссылкой, а почитай про «универсальные» ссылки и пиши
void test(auto && f) {
// ...
}
Но так не хотелось бы, не наглядно.
И явно каждый раз прописывать тип шаблон это много избыточности при многоэтажных типах.
Так тебе ехать или шашечки?
Так же при использовании auto не позволяет сделать параметр со значением по умолчанию
Делай перегрузку по количеству аргументов.
Исправление Siborgium, :
Если весь тип function заменить на auto, то компилит (c++20):
void test(const auto &task) {
Очень интересный вариант. Сразу могу сказать, что он поломается даже на
test([x=5](auto...) mutable { ++x; })
не занимайся ерундой с std::function
и константной ссылкой, а почитай про «универсальные» ссылки и пиши
void test(auto && f) {
// ...
}
Но так не хотелось бы, не наглядно.
И явно каждый раз прописывать тип шаблон это много избыточности при многоэтажных типах.
Так тебе ехать или шашечки?
Так же при использовании auto не позволяет сделать параметр со значением по умолчанию
Делай перегрузку по количеству аргументов.
Исходная версия Siborgium, :
Если весь тип function заменить на auto, то компилит (c++20):
void test(const auto &task) {
Очень интересный вариант. Сразу могу сказать, что он поломается даже на
test([x=5](auto...) mutable { ++x; })
Но так не хотелось бы, не наглядно.
И явно каждый раз прописывать тип шаблон это много избыточности при многоэтажных типах.
Так тебе ехать или шашечки?
Так же при использовании auto не позволяет сделать параметр со значением по умолчанию
Делай перегрузку по количеству аргументов.