У меня есть шаблон, который я бы хотел условно скомпилировать в зависимости от типа аргумента. Меня интересует только различие между "Обычными старыми данными" (POD), т.е. Целыми числами и т.д. Или классами/структурами. Я использую С++ VS2008 в Windows.
template<T>
class foo
{
void bar(T do_something){
#if IS_POD<T>
do something for simple types
#else
do something for classes/structs
#endif
}}
Я смотрю на библиотеку boost, и я вижу, что у них, похоже, есть то, что я хочу. Однако я не понимаю, какой будет правильный синтаксис для оператора #if
.
Любая помощь будет оценена.
Изменить ---
Прочитав ответы, я вижу, что в своем определении вопроса я забыл что-то. Класс foo
- это шаблонный класс, для которого требуется только экземпляр версии bar
, которая верна для class type T
. Я искал решение, которое может быть разрешено во время компиляции. Надеюсь, это очистит мою проблему.