#include <iostream>
using namespace std;

namespace std_msgs {

  template <class T>
  struct ColorRGBA_ {
    typedef ColorRGBA_<T> Type;

    ColorRGBA_(): r(0.0), g(0.0), b(0.0), a(0.0)  { }
    //ColorRGBA_(const ContainerAllocator& _alloc) : r(0.0), g(0.0) , b(0.0), a(0.0)  {  }

    typedef float _r_type;
    _r_type r;
    typedef float _g_type;
    _g_type g;
    typedef float _b_type;
    _b_type b;
    typedef float _a_type;
    _a_type a;

    /*typedef boost::shared_ptr< ::std_msgs::ColorRGBA_<ContainerAllocator> > Ptr;
    typedef boost::shared_ptr< ::std_msgs::ColorRGBA_<ContainerAllocator> const> ConstPtr;
    boost::shared_ptr<std::map<std::string, std::string> > __connection_header;*/

  };

  typedef ColorRGBA_<float> ColorRGBA;

}

class A {
public:
  static std_msgs::ColorRGBA white; // struct with 4 float members;
};

// std_msgs::ColorRGBA A::white = {1,1,1,1}; // Just works for aggregates


std_msgs::ColorRGBA initializeMe() {
  std_msgs::ColorRGBA obj;
  obj.r = 22.0f;
  // ..
  return obj;
}

std_msgs::ColorRGBA A::white = initializeMe();

int main()
{
  cout << A::white.r;
}