*
@It0101 sagte in bestimmte Typen von Template ausschließen:
Ich habe es jetzt übrigens hinbekommen, ohne "Concepts" den Typ T zu einzuschränken:
// Ganzzahlige Datentypen und Gleitkomma-Datentypen aber keine Zeichen ( 8Bit )
template <typename T,
typename = std::enable_if_t<(std::is_integral<T>::value ||
std::is_floating_point<T>::value ) &&
!( std::is_same<T, uint8_t>::value || std::is_same<T, int8_t>::value ||
std::is_same<T, unsigned char>::value || std::is_same<T, char>::value ||
std::is_same<T, signed char>::value )>>
void operator>> ( T & );
Ist natürlich ein ganz schöner Hauklotz, aber typsicher
Ab C++17 darfst Du auch _v verwenden und das ::value weglassen.
// Ganzzahlige Datentypen und Gleitkomma-Datentypen aber keine Zeichen ( 8Bit )
template <typename T,
typename = std::enable_if_t<
(std::is_integral_v<T> || std::is_floating_point_v<T>) &&
!(
std::is_same_v<T, uint8_t> || std::is_same_v<T, int8_t> ||
std::is_same_v<T, unsigned char> || std::is_same_v<T, char> ||
std::is_same_v<T, signed char>
)
>
>
void operator>> (T&);