sigx++  2.0.1
Public Types
sigx::volatile_trait< T_type & > Struct Template Reference

Specialization for references to non-volatile types. More...

#include <volatile_trait.h>

Public Types

typedef volatile T_type & add
 
typedef T_type & remove
 

Detailed Description

template<typename T_type>
struct sigx::volatile_trait< T_type & >

Specialization for references to non-volatile types.

Specializations for references do not consider a reference as a "top level" type qualifer unlike pointers; therefore, they add or remove the volatileness to/from the referenced type: volatile_trait<int&>::add -> volatile int& volatile_trait<int&>::remove -> int& volatile_trait<volatile int&>::add -> volatile int& volatile_trait<volatile int&>::remove -> int&

( a different placing of the qualifier, same type: volatile_trait<int&>::add -> int volatile& volatile_trait<int&>::remove -> int& volatile_trait<int volatile&>::add -> int volatile& volatile_trait<int volatile&>::remove -> int& )

whereas pointers themselves are treated like "top level" type qualifiers. Hence, they add or remove the volatileness from the pointer type qualifier: volatile_trait<int*>::add -> volatile int* volatile_trait<int*>::remove -> int* volatile_trait<volatile int*>::add -> volatile int* volatile_trait<volatile int*>::remove -> int* volatile_trait<int* volatile>::add -> int* volatile volatile_trait<int* volatile>::remove -> int*

( a different placing of the qualifier, same type: volatile_trait<int*>::add -> int volatile* volatile_trait<int*>::remove -> int* volatile_trait<int volatile*>::add -> int volatile* volatile_trait<int volatile*>::remove -> int* volatile_trait<int* volatile>::add -> int* volatile volatile_trait<int* volatile>::remove -> int* )

This is a major difference to boost::type_traits that consider a reference as a top level type qualifier

Member Typedef Documentation

template<typename T_type >
typedef volatile T_type& sigx::volatile_trait< T_type & >::add
template<typename T_type >
typedef T_type& sigx::volatile_trait< T_type & >::remove

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