Talk:cpp/utility/apply

http&#58;//dbj.org (talk) 01:21, 5 October 2017 (PDT)

Regarding the example code in http://en.cppreference.com/w/cpp/utility/apply

By using generic lambda it is possible to have generic addition in this snippet.

/* dbj.org */


 * 1) include
 * 2) include

/*   following of course does not work. this is because .... ? */ template T adder(T first, T second) {   return first + second; } /*  following generic lambda is the solution auto adder = [](auto first, auto second){return first + second; }; int main {   std::cout << std::apply(adder, std::make_pair(1,2)) << '\n'; std::cout << std::apply(adder, std::make_tuple(2.0f,3.0f)) << '\n'; }

Thanks Cubbi for accepting.

http&#58;//dbj.org (talk) 01:21, 5 October 2017 (PDT)


 * the example isn't a problem to solve.. but it's a fair point, edited to show how a lambda works. --Cubbi (talk) 06:32, 5 October 2017 (PDT)

noexcept specification of std::apply
when noexcept(apply(f, args...)) == true ? or it's always false?


 * the function template std::apply does not have a noexcept specification. --Cubbi (talk) 06:32, 5 October 2017 (PDT)

Reason for problem with template type deduction
What is the reason behind the problem with deduction for template functions and not for lambda?

// Will compile just fine std::cout << std::apply(add_generic, std::pair(2.0f, 3.0f)) << '\n';

// Error: can't deduce the function type std::cout << std::apply(add_generic, std::pair(2.0f, 3.0f)) << '\n';

217.67.201.162 03:19, 24 November 2022 (PST)jarzyn