У меня есть класс черты, которые, как предполагается предоставить только одну информацию о других типах (в виде строки):Какой самый дешевый способ специализироваться члена черты
template<typename T>
struct some_traits {
static const char* const some_string;
};
Мне нужно предусмотреть специальные экземпляры some_string
для каждого типа. Распространенный способ я знаю, как сделать это только объявить some_traits
, а затем написать специализации:
template<typename T>
struct some_traits;
template<>
struct some_traits<blah> {
static const char* const some_string;
};
const char* const some_traits<blah>::some_string = "blah string";
Это, однако, много кода, когда все, что мне нужно, это специализированная some_string
. Есть ли способ упростить это?
Я пытался возиться с явными специализациями, но не смог придумать синтаксис, который не заставил компилятор высказывать ядовитые сообщения об ошибках.
Примечания:
- Я знаю, что могу скрыть это за макросом. Мне все еще интересно.
- Необходимо выполнить компиляцию на встроенной платформе с помощью GCC 4.1. Итак, C++ 03 - это все, что у нас есть. (Boost в порядке, но для ограниченной поддержки Posix мы застряли с 1.52, если это имеет значение.)
Вам нужны только полные специализации? http://coliru.stacked-crooked.com/a/d47849e14289149b – dyp
сколько специализаций вам нужно? –
@ dyp: Да, это было бы так. Я думал, вы не можете специализировать членов шаблона шаблона? – sbi