如何解决C ++模板函数在使用和不使用constexpr的情况下均返回不同的值
我有一个模板函数array_size
,该函数通过引用获取C样式的数组并返回其大小:
template <typename T,std::size_t N>
constexpr std::size_t array_size(T (&)[N]) noexcept {
return N;
}
使用此功能,可以达到预期的效果:
int main() {
int a1[]{1,2,3}; // a1's size is 3
int a2[array_size(a1)]; // a2'2 size is also 3
}
但是,如果我在模板函数声明中删除了constexpr
,则a2
的大小将变为4295032832
。该次数在多次运行之间也不会改变。
我的问题:如果我省略constexpr
关键字怎么办?
我正在Ubuntu上使用gcc 9.3.0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。