if-constexpr相关内容

如何正确运用概念?

目前我正在学习C++,决定还是从C++20开始吧。但是,这些代码快把我逼疯了,因为我认为结果没有任何意义。 以下代码将打印句子Valid array.。我上面的意思是,这是不对的。它根本不应该打印句子,因为我在参数中插入的类型与概念不匹配。 使用最新的GCC和C++2A(GNU)参数在VS2022预览版3和an online compiler上进行测试,生成相同的结果。 #inclu ..
发布时间:2022-05-16 14:06:45 C/C++开发

如果有一个if-constexpr,那为什么没有switch-constexpr?

在C ++ 17中, if constexpr 被介绍;但是,似乎没有 switch constexpr (请参见这里).这是为什么?也就是说,如果编译器支持 if constexpr ,那么支持 switch constexpr 也是一件很琐碎的事情(最糟糕的是,如果是if-then-else-if-etc.链或多个if(带有一些标志来控制失败率)? 解决方案 if constexpr ..
发布时间:2021-04-20 18:58:55 C/C++开发

在C ++中进行N阶编译时间的3种不同/相同方式

我正在尝试使用模板元编程,constexpr和constexpr(如果使用constexpr),并想出了3种不同的方法来进行N递归/N因子运算. 这三个示例都是我在SO上或通过网上搜索找到的一些示例,然后对其进行了修改,因此它们也是如此 第一个示例使用模板元编程:示例1 template struct NGenerator { static const in ..

Constexpr运算符new

是否有可能将new运算符重载为constexpr函数?像这样: constexpr void * operator new( std::size_t count ); 之所以要在重载的运算符主体中执行constexpr函数,其中count参数值将是输入数据...运算符是由以下方式调用的: SomeClass * foo = new SomeClass(); 数据类型的大小在编 ..
发布时间:2020-07-23 06:22:05 C/C++开发

constexpr-if-else主体可以在constexpr自动功能中返回不同的类型吗?

我正在尝试编写一个函数,该函数根据枚举的运行时值将值的枚举映射到一组类型.我意识到您不能基于枚举的运行时值返回不同的类型,因为编译器不知道要分配多少堆栈空间.但是,我正在尝试使用新的if-constexpr功能将其编写为constexpr函数. 我从clang收到错误消息,抱怨我使用的是非法指定的模板参数.有人看到如何实现这一点吗? edit:这是一个更易于理解的版本,更简洁地演示了我 ..
发布时间:2020-07-23 06:22:00 C/C++开发

是"if constexpr"在模板之外有用吗?

我正试图完全理解if constexpr. 我了解,如果在模板中使用if constexpr(expr)且expr依赖于模板参数,那么在实例化期间,将仅实例化then/else分支之一,而另一个将被实例化被丢弃. 我有两个问题: 是真的吗?如果expr不依赖于模板参数,那么if constexpr(expr)的任何分支都不会被丢弃?如果是,那么标准在哪里说呢?我看不出该标准在哪里 ..
发布时间:2020-07-23 06:20:57 C/C++开发

如果constexpr(condition)作为编译时条件

我想使用constexpr bool(在下面的示例中为useF)来启用以下代码中的功能.在这里,调用A::f().另外,在关闭功能的情况下,我希望成为别名模板(a)为void. 我试图使用constexpr if语句,但是主体仍在实例化,这会导致编译错误.如果我使用包装器模板(X),则将按我的预期丢弃该主体,但是对我来说,这似乎很丑陋.还有其他方法吗? constexpr bool u ..
发布时间:2020-07-23 06:20:50 C/C++开发