Как и в заголовке, могут ли шаблоны классов C ++ принимать имена методов в качестве параметров шаблона?
Например,
template <T>
class Foo
{
public:
void T(int bar);
};
0
Решение
К сожалению, основной язык C ++ не имеет никаких средств обработки имена.
Некоторые возможности:
- Обрабатывать имена через препроцессор, т. Е. Некрасивые макросы.
Примечание: библиотека параметров Boost использует некоторые незадокументированный Повысьте хитрость макроса, которая здесь очень актуальна Я использовал это для общие параметры класса вещь однажды. Извините, я не могу много вспомнить об этом, но по сути он поддерживает своего рода вариационные макросы для C ++ 03.
- Сделайте свою собственную предварительную обработку, то есть основанную на сценарии.
- Возьмите бремя на клиентский код программиста, так или иначе.
Для тех, кто интересуется, для чего это нужно? Например, как в классе C ++ с именем библиотеки tuple в C ++, где программист предоставляет имена членов кортежа.
2
Другие решения
Других решений пока нет …