Аннотации в С++
От: TarasKo Голландия  
Дата: 27.12.12 21:06
Оценка:
А есть ли библиотеки реализующие аннотации к полям класса хоть в каком-нибудь виде?

В с++11 зарезервировали синтаксис [annotation]], но пользоваться им по своему усмотрению нельзя, как я понимаю

Наверно хочется что-то такое


class A 
{
public:
   DECLARE_AND_ANNOTATE(
      int, int_field_
      (int_annotation = 42)
      (string_annotation = "Privet")
   )
};


И что б можно было обращаться к аннотациям явно и зная поле


Вариант 1. Псевдокод
A a;
boost::fusion::vector<int, string> annotations = annotation<A>::get(&a.int_field_)
// или get(&A::int_field_)

Вариант 2. Тоже псевдокод :)
boost::fusion::vector<int, string> annotations = annotation<A>::for_int_field_();



Если пытаться реализовать самому, то не очень понятно как увязать поле с его аннотацией в варианте 1. Наверно с каждой аннотацией должен лежать порядковый номер поля, но не очень понимаю как это сделать.
Re: Аннотации в С++
От: Garrrrr  
Дата: 28.12.12 05:24
Оценка:
Здравствуйте, TarasKo, Вы писали:

TK>А есть ли библиотеки реализующие аннотации к полям класса хоть в каком-нибудь виде?

Есть библиотека cpgf -- free C++ open source library for reflection, serialization, script binding, callbacks, в которой аннотации реализованы как часть метаинформации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.