Identity type template to hinder type deduction. More...
#include <types.h>
Identity type template to hinder type deduction.
This
template<typename T> T add(T x, T y) { };
add(23., 1)
will fail as T is deduced to both double and int.
template<typename T> T add(T x, typename IdentityType<T>::type y) { };
add(23., 1)
will not allow type deduction on the second argument and hence force the 1 to be read as double. However, note that this can lead to unintended consequences, i.e.
add(1,23.5)
will deduce T to int and hence cast 23.5 to int.