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

问题描述 投票:0回答:2

我有一个header文件,其功能很大程度上依赖于SFINAE的success。目前

g++ 4.6
它按预期工作。我是否应该假设,我的代码对于所有编译器(C++03 编译器)都会以相同的方式无缝运行?

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

c++ templates sfinae
2个回答
4
投票

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

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


0
投票

因为这取决于SFINAE的成功,所以您应该使用

static_assert
(或
BOOST_STATIC_ASSERT
)来确保SFINAE成功通过。

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

© www.soinside.com 2019 - 2024. All rights reserved.