Информация об изменениях

Сообщение Re: имя переменной в компайл-тайм от 12.03.2018 17:43

Изменено 12.03.2018 17:45 Маркуша Шулин

Re: имя переменной в компайл-тайм
Здравствуйте, niXman, Вы писали:

X>привет!


X>подскажите, плиз, планируется ли сабж в каком-то из будущих стандартов?


X>спасибо.

вообще хотелось бы итеративное поведение, что и подразумевается рефлексией ..
struct my_struct
{
  inline void my_func(int arg1, int arg2);
};

template <typename C, typename R, typename ...Args>
auto std::bind(R C::*fptr func) 
{
#   pragma message (get_identifier<1, decltype(func)>())
    return bind_impl(func);
}

и вообще возможность получать compile expressions

template <typename Arg>
inline auto foo (Arg arg)
{
   expr_of<decltype(arg)>::type 
    expr;

   do_something_with_expression<decltype(arg)>();

   return expr(1, 2, 3);
}

void foomain() {
   int x0 = 0, x1 = 1, x2 = 2;
   foo(x0 * (x2 + x1));          
}

в таком ключе итерационность по переменным — это значительный профит

Сейчас во всяких эйгенах и компайлтайм аджинтах \ и прочих template time expressions это делается через треш, и мало что с ним можно делать.
Re: имя переменной в компайл-тайм
Здравствуйте, niXman, Вы писали:

X>привет!


X>подскажите, плиз, планируется ли сабж в каком-то из будущих стандартов?


X>спасибо.

вообще хотелось бы итеративное поведение, что и подразумевается рефлексией ..
struct my_struct
{
  inline void my_func(int arg1, int arg2);
};

template <typename C, typename R, typename ...Args>
auto std::bind(R C::*fptr func) 
{
#   pragma message (get_arg_identifier<1, decltype(func)>())
    return bind_impl(func);
}

и вообще возможность получать compile expressions

template <typename Arg>
inline auto foo (Arg arg)
{
   expr_of<decltype(arg)>::type 
    expr;

   do_something_with_expression<decltype(arg)>();

   return expr(1, 2, 3);
}

void foomain() {
   int x0 = 0, x1 = 1, x2 = 2;
   foo(x0 * (x2 + x1));          
}

в таком ключе итерационность по переменным — это значительный профит

Сейчас во всяких эйгенах и компайлтайм аджинтах \ и прочих template time expressions это делается через треш, и мало что с ним можно делать.