All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
blaze::SubTrait< T1, T2 > Struct Template Reference

Base template for the SubTrait class. More...

#include <SubTrait.h>

Detailed Description

template<typename T1, typename T2>
struct blaze::SubTrait< T1, T2 >

Base template for the SubTrait class.

General

The SubTrait class template offers the possibility to select the resulting data type of a generic subtraction operation between the two given types T1 and T2. SubTrait defines the nested type Type, which represents the resulting data type of the subtraction. In case the two types T1 and T2 cannot be subtracted, the resulting data type Type is set to INVALID_TYPE. Note that const and volatile qualifiers and reference modifiers are generally ignored.

Per default, the SubTrait template provides specializations for the following built-in data types:

Additionally, the Blaze library provides appropriate specializations for the following user-defined arithmetic types:


Creating custom specializations

It is possible to specialize the SubTrait template for additional user-defined data types. The following example shows the according specialization for the subtraction between two dynamic column vectors:

template< typename T1, typename T2 >
struct SubTrait< DynamicVector<T1,columnVector>, DynamicVector<T2,columnVector> >
{
typedef DynamicVector< typename SubTrait<T1,T2>::Type, columnVector > Type;
};


Examples

The following example demonstrates the use of the SubTrait template, where depending on the two given data types the resulting data type is selected:

template< typename T1, typename T2 > // The two generic types
typename SubTrait<T1,T2>::Type // The resulting generic return type
sub( T1 t1, T2 t2 ) //
{ // The function 'sub' returns the
return t1 - t2; // difference of the two given values
} //

The documentation for this struct was generated from the following file: