У меня есть шаблон, который я хотел бы условно скомпилировать в зависимости от типа аргумента. Меня интересует только различие между «Простыми старыми данными» (POD), то есть целыми числами и т. Д. Или классами / структурами. Я использую C ++ 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
}}
Я смотрел на библиотеки наддува и вижу, что они, кажется, имеют то, что я хочу. Однако я не понимаю, какой будет правильный синтаксис для оператора #if
.
Любая помощь будет оценена.
Редактировать ---
Прочитав ответы, я вижу, что что-то упустил из своего определения вопроса. Класс foo
является шаблонным классом, которому требуется только экземпляр версии bar
, которая является правильной для class type T
. Я искал решение, которое можно решить во время компиляции. Надеюсь, это решит мою проблему.