C ++(03)SFINAE方面编译器是独立的吗?

时间:2011-11-09 10:22:44

标签: c++ templates compiler-construction sfinae

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

我发现这是一个问题,因为如果某些内容不同,将不会导致编译器错误,并且会默默地更改代码流。

2 个答案:

答案 0 :(得分:4)

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

如果您的编译器失败了,那么它最终不符合要求,并且所有投注都是关闭的。

答案 1 :(得分:0)

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

我不知道您的代码是否适用于所有编译器,但如果特定编译器无法为特定SFINAE生成预期输出,静态断言将无法编译。