【发布时间】:2017-10-26 18:49:42
【问题描述】:
我有这个代码:
const float foo = 5.0F;
static_assert(foo > 0.0F, "foo must be greater than 0.");
但是在visual-studio-2010 我得到了错误:
错误 C2057:预期的常量表达式
我实际上做得正确,visual-studio-2010 只是没有正确实施static_assert,对吧?在 visual-studio-2017 中,它按预期工作。
关于const 和constexpr 之间的差异有一些评论。我理解这种差异,但是许多编译器支持 static_assert 的这种使用,所以我再问一遍,这是否合法代码?我不关心哪个编译器支持它,我关心它是否在C++标准下定义。
【问题讨论】:
-
static_assert需要 C+11 请参阅:en.cppreference.com/w/cpp/language/static_assert 您需要更新编译器才能使用它。 -
@RichardCritten Visual Studio 2010 支持它:msdn.microsoft.com/en-us/library/dd293588(v=vs.100).aspx
-
投票结束。在你的特殊问题中,一个 const 可以在运行时初始化,而 constexpr 应该在编译时初始化
-
@Amadeus 对于常量全局变量,需要对此做出裁决,它们是否可以是
static_asserted,您链接的问题不能回答该问题。这不是重复的。
标签: visual-studio-2010 visual-studio-2010 visual-studio-2017 c++ visual-studio-2010 global-variables constants static-assert