102得票2回答
"if constexpr()" 和 "if()" 的区别

if constexpr()和if()之间有什么区别? 我可以在哪里和什么时候使用它们?

79得票1回答
我需要在else-if后面加上constexpr吗?

受这个答案的启发,我尝试复制并粘贴(并在main()中添加测试)此代码: template<typename T> std::tuple<int, double> foo(T a) { if constexpr (std::is_same_v<int, ...

72得票3回答
针对constexpr if的等效三元运算符是什么?

也许我错过了什么,但我找不到任何提示:在C++17中是否有等同于constexpr-if的constexpr三元运算符?template<typename Mode> class BusAddress { public: explicit constexpr BusAddr...

52得票5回答
如果条件为真,如何仅实例化函数模板的一部分

在C++中,根据模板的类型,只构建代码的一部分是否可能?这将是类似于以下内容: #include <iostream> using namespace std; template<typename T> void printType(T param) { ...

42得票1回答
"constexpr if"与带优化的"if" - 为什么需要"constexpr"?

C++1z将引入"constexpr if" - 一种基于条件将其中一个分支删除的if语句。看起来合理且有用。然而,是否不需要使用constexpr关键字也能实现呢?我认为在编译过程中,编译器应该知道条件在编译时是否已知。如果是这样,即使是最基本的优化级别也应该删除不必要的分支。例如(在god...

40得票2回答
如何在if-constexpr中使用概念?

如何在 if constexpr 中使用概念? 给定以下示例,如果 T 满足 integral 的要求,则将什么提供给 if constexpr 以返回 1,否则返回 0? template<typename T> concept integral = std::is_inte...

39得票3回答
C++检查if语句是否能够被constexpr计算

是否有一种方法可以决定某个东西是否可以进行constexpr评估,并将结果用作constexpr布尔值? 我的简化用例如下: 有没有办法判断一个东西是否能够被 constexpr 评估, 并且把结果用作 constexpr 布尔值呢?我的简单应用场景如下: template <...

38得票4回答
为什么在C++17中,这个“未定义的外部变量”没有导致链接错误?

我已经在C++17编译器(Coliru)中编译并运行了以下程序。在程序中,我声明了一个extern变量,但是没有定义它。然而,编译器并没有给出链接器错误。#include <iostream> extern int i; // Only declaration int func...

31得票3回答
为什么if constexpr不能消除这个核心常量表达式错误?

参考这个问题。用于初始化constexpr变量y的核心常量表达式是不合法的,这是确定的。 但是如果我尝试将if转换为if constexpr:template <typename T> void foo() { constexpr int x = -1; if co...

30得票5回答
C++17中的"If constexpr"在非模板函数中无法工作

我尝试使用C++17标准,并使用了其中一个特性if constexpr, 但是遇到了问题...请查看以下代码。这段代码可以编译通过。在下面的代码中,我尝试使用if constexpr来检查它是否是指针。 #include <iostream> #include <type_...