如何解决为什么 C++ 中的全局函数外作用域没有 if-constexpr?
if constexpr
不能在函数体外部使用有什么特殊原因吗(为什么它不在 C++ 中实现)?例如在下面的代码中使用 if constexpr
来决定子类的哪些特化:
template <int Size>
struct A {
template <typename T> struct B;
if constexpr(Size >= 32) {
template <> struct B<uint32_t> {};
}
if constexpr(Size == 32) {
using MaxT = uint32_t;
}
if constexpr(Size >= 64) {
template <> struct B<uint64_t> {};
}
if constexpr(Size == 64) {
using MaxT = uint64_t;
}
};
上面的语法比使用 std::enable_if 和 std::conditional_t 以及其他技巧要方便得多。
上面的语法允许根据编译时常量的值生成任何代码。在许多情况下,它可以很好地替代 #ifdef
/#endif
宏。
作为@StoryTeller-UnslanderMonica 的 commented,其他语言中也存在类似的概念,例如 static if in D。
有谁知道是否有关于此语法的任何建议和任何未来计划?如果他们被拒绝了,那为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。