Интересно, могли бы мы иметь такой класс (псевдокод):
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
};
И если бы мы могли автоматически генерировать функцию для каждого предоставленного типа аргумента во время компиляции, используя, например, определения, чтобы получить что-то вроде (псевдокод):
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
// for each Arg we want to create a function like
ArgMT my_class_function(std::string name)
{
if(name == ArgM_name)
return ArgM;
}
};
Возможна ли такая / или немного похожая вещь в современном C ++ и как ее создать?
Я пытаюсь сказать следующее: я хочу генерировать функции для каждого типа класса, предоставляемого конструктору из некоторого шаблона функции. И интересно, как это сделать? Здесь показано как повторить , но как повторить предоставленные аргументы класса и типы?
Я имел в виду, что если бы мы знали количество аргументов шаблонов классов (N
), мы могли бы создать N
переменных разных типов (по одной на каждый аргумент) и N
строк (все частные), и поэтому мы может создать N
функции для установщиков и получателей этого (строки + переменные) (которые мы бы назвали в конструкторе). Основная проблема здесь - как решить времена, когда вы получаете одни и те же типы дважды или больше, как получить количество аргументов из процессора boost.pre, как фильтровать одинаковые типы?