У меня есть шаблон, который я хочу позвонить с соответствующим типом объекта без необходимости разобрать строку идентификатора/перечислимую/typeid.name() и т.д.Объявляет тип переменной, используя строку
То есть, вместо чем:
switch(varType)
{
case TYPE_ONE:
templateFunction<TYPE_ONE>();
break;
case TYPE_TWO:
templateFunction<TYPE_TWO>();
break;
...
etc...
}
Я предпочел бы использовать:
templateFunction<GetTypeFromEnum(MyEnum::INT)>();
или еще лучше:
templateFunction<GetTypeFromString("int")>();
Что-то вроде обратного типа?
Я на самом деле удалось сделать это в VBA один раз, так что я предполагаю, что это должно быть выполнимо в C++ ...
Вы пытаетесь переописать 'повысить :: variant'? – kennytm
boost: реализация посетителя варианта варианта, безусловно, будет работать, но не означает вызов моей шаблонной функции из допустимой перегрузки operator(). Все в порядке, я полагаю. Это немного усложняется, хотя, если у меня есть несколько шаблонных функций, которые я, возможно, захочу назвать (и я). Я могу видеть использование boost :: variant, если это действительно единственный вариант ... Может быть, это лучший вариант, чем кажется ...? –
Я беру это назад (немного). Если я передаю указатель на функцию и ссылку на объект перед посетителем, прежде чем вызывать его, это несколько упростит реализацию посетителя ... Тем не менее, я нахожусь в курсе изучения C++, поэтому меня все еще интересуют любые альтернативные методы. В противном случае, похоже, что boost :: variant может быть способом. –