C++ concepts: NumericType
From cppreference.com
                    
                                        
                    
                    
                                                            
                    Specifies that the type can be used as the template argument of std::valarray
[edit] Requirements
for a type T to be an NumericType:
-  Tcannot be a reference
-  Tcannot be cv-qualified
-  If Tis a class, it
- 
- does not overload operator&
- has no pure virtual member functions (is not abstract)
- has a public default constructor
- has a public copy constructor T::T(const T&)
- has a public destructor
- has a public assignment operator T& T::operator=(const T&) or T& T::operator=(T)
- default constructor followed by assignment has the same effect as copy constructor
- destructor followed by copy constructor has the same effect as assignment
 
-  No operation on Tmay throw exceptions