Хорошо, это сложный вопрос.Выполнить код один раз для каждого экземпляра шаблона класса C++
У меня есть шаблон класса C++, который используется несколько раз. Для каждого из этих экземпляров мне нужно выполнить функцию, которая регистрирует некоторые операторы. Это нужно сделать только один раз для экземпляра шаблона до того, как будет использован первый объект этого экземпляра шаблона (что не означает, что он должен быть выполнен при instanciation, который происходит во время компиляции).
До настоящего времени я сделал это вручную. Но это боль. Поэтому я хотел бы выполнить функцию регистрации автоматически.
Моей идеей является вызов защищенного метода регистрации в конструкторе. Однако при каждом экземпляре класса он требует (малых) накладных расходов. Поскольку это делается очень часто, я бы хотел избежать этого.
Я также пытался использовать статический элемент-помощник RAII, но статические члены класса шаблонов не были сконструированы, если они не были активно доступны, поэтому эта попытка не удалась.
Есть ли способ выполнить код при инициализации шаблона класса (с помощью функции или, может быть, с помощью вспомогательного класса RAII) без накладных расходов во время выполнения?
Обычно шаблоны инстанцированный во время компиляции не во время выполнения. Вы уверены, что ваша проблема реальна? – BitTickler
Да, это так. Мне не нужно выполнять код * при * instanciation. Мне нужно выполнить его перед первым использованием объекта. – Silicomancer