EDIT 1: It seems that I have been looking for the concept of "reflection", which I was not aware of prior to this. It also seems that there is no reflection system built-into C++. So, I'll probably just go with the OpenGL style and have the user specify the layout. Bummer, but it is what it is!