Reference documentation for deal.II version 9.0.0
|
#include <deal.II/base/template_constraints.h>
A template class that simply exports its template argument as a local typedef. This class, while at first appearing useless, makes sense in the following context: if you have a function template as follows:
then it can't be called in an expression like f(1, 3.141)
because the type T
of the template can not be deduced in a unique way from the types of the arguments. However, if the template is written as
then the call becomes valid: the type T
is not deducible from the second argument to the function, so only the first argument participates in template type resolution.
The context for this feature is as follows: consider
This code fails to compile because the compiler can't decide whether the template type A
should be double
(from the signature of the function given as first argument to forward_call
, or int
because the expression 1
has that type. Of course, what we would like the compiler to do is simply cast the 1
to double
. We can achieve this by writing the code as follows:
Definition at line 211 of file template_constraints.h.