А есть ли библиотеки реализующие аннотации к полям класса хоть в каком-нибудь виде?
В с++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. Наверно с каждой аннотацией должен лежать порядковый номер поля, но не очень понимаю как это сделать.
Здравствуйте, TarasKo, Вы писали:
TK>А есть ли библиотеки реализующие аннотации к полям класса хоть в каком-нибудь виде?
Есть библиотека
cpgf -- free C++ open source library for reflection, serialization, script binding, callbacks, в которой аннотации реализованы как часть метаинформации.