【发布时间】:2010-09-23 14:31:39
【问题描述】:
__if_exists 是微软特定的关键字,用于在编译时测试标识符的存在性:
它可以非常方便地用于“伪造”模板特化,因为在某些情况下,它提供了一种比“真实”特化或重载等其他方法更简单、更易读且性能更好的方法。
但是现在我必须将一个大项目移植到 gnu c++,如果我不得不为我使用它的(诚然少数)场合找到其他方法,我想我会开始有点哭泣
【问题讨论】:
-
在同一个地方看到“
__if_exists”和“模板”有点令人不安。无论如何,如果只有少数地方使用它,那么你最好只修改那几段代码。 -
不,它与#ifdef 与#ifdef 不同,您只能测试预编译器定义而不是例如班级成员
-
@kaptnole:当您依赖供应商特定的好东西时,这始终是问题:当您必须使用不同的供应商时,您已经忘记了如何编写没有这些的代码。我建议您在此处显示询问如何在没有它的情况下执行您需要的操作。
标签: c++ visual-c++ gcc