簡體   English   中英

將參數隱式轉換為布爾

[英]Implicitly cast parameter to bool

前提:由於宏的潛在問題,我試圖創建一個未使用宏實現的定義范圍。 這是我最初的嘗試

//version for if not defined
bool Defined()
{
    return false
}

//version for if defined
bool Defined(bool anything)
{
    return true;
}

還有一個用例示例

if(Defined(_DEBUG))
{
    Stuff...
}

它將取代

#ifdef _DEBUG
    Stuff...
#endif

要么

#define Defined()         false
#define Defined(Anything) true

優點:
語法更清晰,范圍更廣,

該代碼不是有條件的,因此編譯器將能夠輕松地優化代碼段。

問題
此過程存在一些問題,第一個是發布此帖子的原因。

題:
您不能傳遞任何無法隱式轉換為布爾值的內容。 有沒有一種方法可以將任何對象,數字,指針等隱式轉換為布爾值? 我不相信那里,但是我想確定一下,然后再繼續。

您可以使用通用模板:

template<class T>
bool Defined(T &&) { return true; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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