Удобный способ настройки нестандартных параметров шаблона

Я пишу общую структуру, которая в значительной степени опирается на шаблоны. Внешний скрипт Python считывает файл конфигурации и компилирует платформу с символами препроцессора на основе конфигурации.

Предположим, код:

#include "all_symbols.h" // has a default for MY_TYPE 
#include "config_symbols.h" // may or may not re-define MY_TYPE
template <typename T = MY_TYPE>
struct SomeStruct {...};

Заголовок all_symbols.h выглядит так:

struct None {};
#define MY_TYPE None
... // set to None all the other symbols

Заголовок config_symbols.h создается сценарием для переопределения символов на основе файла конфигурации. Этот заголовок может определять только некоторые символы, поэтому all_symbols.h нужно.

Ключевым свойством этой схемы является то, что если SomeStruct создается без MY_TYPE переопределяется в config_symbols.h, тогда пользователь получит ошибку во время компиляции.

Я ищу способ распространить эту схему на нетиповые параметры шаблона:

template <bool flag = MY_VALUE>
struct SomeStruct {...};

Проблема в том, что указанное выше ключевое свойство не сохраняется. А именно, MY_VALUE должен быть определен в all_symbols.h как либо false или же true, так что пользователь не получит ошибку во время компиляции, если он будет создан SomeStruct, но не может указать MY_VALUE в конфигурации.

Я мог бы обойти эту проблему, заменив нетипичные параметры шаблона типовыми, но это искусственно. Есть ли другой обходной путь?

0 ответов

Другие вопросы по тегам