我有一个模板,我想根据参数的类型进行有条件编译。我只关心区分“普通旧数据”(POD),即整数等或类/结构。我在Windows上使用C++ VS2008。使用Boost类型特征的条件编译
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
即可。我正在寻找可以在编译时解决的解决方案。希望这清除了我的问题。
这将是一个编译错误,一旦类模板实例,'T'是固定的,在这一点上,当您尝试调用'bar'会看到两个定义,它将无法编译其中之一。请注意,这不是SFINAE,因为它不会是替代失败 - 类型在成员的实例化之前是固定的(或者我认为,我不确定这些东西:))。 – 2010-07-29 23:28:19