根据我在预处理程序的层次上定义的变量类型,我想有条件地包含函数(或特别是构造函数),例如,C++预处理程序
#define my_type double
,并在任何时候我可以有条件地包括功能
#if my_type == double
void my_fct();
#endif
工作正常。但是,如果我想将模板类型分配给my_type,我该如何执行此操作。使用复杂的双重例如,我天真地以为大道
#if my_type == complex<double>
会的工作,但似乎预处理来解释过去的“>”作为预处理器级别的运营商。 我没有看到使用typedefs的方法,因为我希望预处理器执行条件包含。 当然,我可以模板我的整个班级,避免使用预处理器来完成这个任务,但我现在非常不愿意。另外,除了类型之外,还可以定义另一个预处理器标志,但这看起来很脏。
你知道,如果你愿意,你可以使一个函数成为一个模板而不是整个类。 – icabod 2014-11-06 12:45:26
我完全不同意你最后的解决方案“看起来很脏”。对类型别名使用typedefs,对条件代码使用预处理器。 – molbdnilo 2014-11-06 12:47:24