Aka Tuple
От: Alexey Chen Чили  
Дата: 21.06.05 14:37
Оценка: 149 (15)
Заглянул тут в книжку Вандервурда. Там в главе про Tupple, штука такая есть — val<n>. Удобно конечно, но у меня возникла идея, возможно старая как мир. Но таки приведу её на правах прикола.


#include <string>
#include <iostream>

enum _n_Height  { n_Height };
enum _n_Weight  { n_Weight };
enum _n_Name    { n_Name };

struct Fake_Struct { void operator []( Fake_Struct const& ); };

template < class _Tx, class _Name, class _Super = Fake_Struct >
  struct Struct : _Super
    {
      using _Super::operator[];

      _Tx val_;
      _Tx& operator []( _Name n ) { return val_; }

      Struct() : val_(_Tx()) {}
    };

typedef 
  Struct< int, _n_Height, Struct < float, _n_Weight, Struct < std::string, _n_Name > > >
  MyStruct;


int main()
  {

    MyStruct s;

    s[n_Height]  = 10;
    s[n_Weight]  = 20.3;
    s[n_Name]    = "name";

    std::cout
      << s[n_Height]  << std::endl
      << s[n_Weight]  << std::endl
      << s[n_Name]    << std::endl
      ;

    return 0;

  }


PS:
Выкриков — 'баян' и тухлых помидоров я не боюсь, ибо действительно прикольно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.