| metaprogramming/conditional-declaration/point.h - Class Point header file - where move is only enabled for floating point types. | Lecture 6 - slide 36 : 40 Program 1 |
// Point<C> where move is only enabled for floating point types.
#include <type_traits>
// One of the usual syntactical embellishments, here of enable_if.
template <bool B, typename T>
using Enable_if = typename std::enable_if<B,T>::type;
template<typename C>class Point {
private:
C x, y;
public:
Point(C, C);
Point();
C getx () const;
C gety () const;
Enable_if<std::is_floating_point<C>::value, Point<C>>& move(C, C); // if C is not a floating point type,
// the move function is not present.
double distance_to(Point);
};
template<class C> std::ostream& operator<< (std::ostream&, const Point<C>&);