gpt4 book ai didi

c++ - 检查 bool 模板参数时如何摆脱 "conditional expression is constant"警告?

转载 作者:行者123 更新时间:2023-11-30 01:49:50 25 4
gpt4 key购买 nike

此代码模板在使用/W4 (MSVC 2013) 编译时会产生“条件表达式是常量”警告:

#include <iostream>

template <bool condition>
struct Conditional
{
static void f()
{
if (condition)
std::cout << "true";
else
std::cout << "false";
}
};

void main()
{
Conditional<false>::f();
}

现在,假设 Conditional 实际上是一个有用的类,有很多方法和很多围绕条件的代码。我想通过尽可能少的代码修改来消除警告。

我知道的唯一一招是标签分派(dispatch)。这是可以接受的,但有点笨拙,因为我需要声明 2 个额外的方法并在那里提取条件代码。还有其他方法吗?

最佳答案

你可以使用特化:

template <bool condition>
struct Conditional
{
static void f();
};

template <>
void Conditional<true>::f() { std::cout << "true"; }

template <>
void Conditional<false>::f() { std::cout << "false"; }

Live example

关于c++ - 检查 bool 模板参数时如何摆脱 "conditional expression is constant"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com