[英]Ways to get rid of “conditional expression is constant” warning when checking bool template parameter?
使用/ 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
實際上是一個有用的類,其中包含許多圍繞條件的方法和代碼。 我想通過盡可能少的代碼修改來擺脫警告。
我知道的唯一一個技巧是標簽分發。 可以接受,但是有點笨拙,因為我需要聲明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"; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.