是c++ (03) SFINAE方面编译器独立的

Is C++ (03) SFINAE aspect compiler independent?

本文关键字:方面 编译器 独立 SFINAE c++      更新时间:2023-10-16

我有一个文件,其功能在很大程度上依赖于SFINAE的成功。在目前的g++ 4.6中,它按预期工作。我是否应该假设,我的代码将以相同的方式无缝地运行所有编译器 (c++ 03编译器)?

我发现这是一个问题,因为如果有些东西不同,它不会导致编译器错误,并且会默默地改变代码流。

是的,您可以依赖SFINAE来存在并正常运行。

如果你有一个编译器失败了,那么它最终是不符合的,无论如何,所有的赌都输了。

由于它取决于SFINAE的成功,您应该使用static_assert(或BOOST_STATIC_ASSERT)来确保SFINAE成功通过。

我不知道你的代码是否能在所有编译器上工作,但是如果特定的编译器不能为特定的SFINAE产生预期的输出,那么静态断言将导致编译失败。