Obsługa różnych typów danych w jednej strukturze

Muszę wysłać pewne informacje w kolejce komunikatów VxWorks. Informacje do wysłania są określane w czasie wykonywania i mogą być różnych typów danych. Używam do tego struktury -

struct structData
{
  char m_chType;    // variable to indicate the data type - long, float or string
  long m_lData;     // variable to hold long value
  float m_fData;    // variable to hold float value
  string m_strData; // variable to hold string value
};

Obecnie wysyłam tablicę structData przez kolejkę komunikatów.

structData arrStruct[MAX_SIZE];

Problem polega na tym, że tylko jedna zmienna w strukturze jest przydatna na raz, pozostałe dwie są bezużyteczne. Kolejka komunikatów jest zatem niepotrzebnie przeciążana. Nie mogę używać związków, ponieważ typ danych i wartość są wymagane. Próbowałem użyć szablonów, ale nie rozwiązuje problemu. Mogę wysyłać tylko tablicę struktur jednego typu danych naraz.

template <typename T>
struct structData
{
  char m_chType;
  T m_Data;
}

structData<int> arrStruct[MAX_SIZE];

Czy istnieje standardowy sposób przechowywania takich informacji?