Могут ли шаблоны классов C ++ принимать имена методов в качестве параметров шаблона?

Как и в заголовке, могут ли шаблоны классов C ++ принимать имена методов в качестве параметров шаблона?

Например,

template <T>
class Foo
{
public:
void T(int bar);
};

0

Решение

К сожалению, основной язык C ++ не имеет никаких средств обработки имена.

Некоторые возможности:

  • Обрабатывать имена через препроцессор, т. Е. Некрасивые макросы.
    Примечание: библиотека параметров Boost использует некоторые незадокументированный Повысьте хитрость макроса, которая здесь очень актуальна Я использовал это для общие параметры класса вещь однажды. Извините, я не могу много вспомнить об этом, но по сути он поддерживает своего рода вариационные макросы для C ++ 03.
  • Сделайте свою собственную предварительную обработку, то есть основанную на сценарии.
  • Возьмите бремя на клиентский код программиста, так или иначе.

Для тех, кто интересуется, для чего это нужно? Например, как в классе C ++ с именем библиотеки tuple в C ++, где программист предоставляет имена членов кортежа.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]