August 2017
Intermediate to advanced
438 pages
14h 19m
English
Many good features were added to C++11 to simplify the metaprogramming. One such feature is the alternative function syntax. It allows deducing the result type of a template function. Here is an example:
template <class T1, class T2>auto my_function_cpp11(const T1& v1, const T2& v2) -> decltype(v1 + v2){ return v1 + v2;}
It allows us to write generic functions more easily:
#include <cassert>struct s1 {};struct s2 {};struct s3 {};inline s3 operator + (const s1& /*v1*/, const s2& /*v2*/) { return s3();}inline s3 operator + (const s2& /*v1*/, const s1& /*v2*/) { return s3();} int main() { s1 v1; s2 v2; s3 res0 = my_function_cpp11(v1, v2); assert(my_function_cpp11('\0', 1) == 1);}
But, Boost has ...
Read now
Unlock full access