簡體   English   中英

檢查布爾模板參數時擺脫“條件表達式為常數”警告的方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM