January 2020
Intermediate to advanced
454 pages
11h 25m
English
Although adding a function signature to our delegate as the template parameter can be done without the need for C++17, user-defined type deduction in C++17 makes this process simple. The following code snippet shows this:
template< typename T, typename RET, typename... ARGS >delegate(RET(T::*)(ARGS...)) -> delegate<RET(ARGS...)>;
As shown in the preceding code snippet, the user-defined type deduction tells the compiler how to take our delegate constructor and convert it into the template signature that we wish to use. Without this user-defined type deduction guide, the delegate(RET(T::*)(ARGS...)) constructor would result in the delegate being deduced as delegate<RET, ARGS...>, which is not what ...