но, насколько мне известно, шаблон metaprogrammign может генерировать только if, что поставит диспетчеризацию boost :: variable при накладных расходах времени выполнения O (n),
Нет: метапрограммирование шаблона if
s оценивается во время компиляции , поэтому, если накладные расходы определяются метапрограммированием шаблона, это будет издержки времени компиляции . В этом случае накладные расходы будут постоянными.
Предостережение: я не знаю, как работает boost::variant
отправка. Но , если реализован с использованием времени компиляции if
, он будет вести себя так, как описано выше.