簡體   English   中英

使用const char *(nullptr)進行編譯時檢查

[英]compile-time check with const char* (nullptr)

我有一個模板類,它使用字符串文字作為參數。 該代碼工作正常-但我有一個問題,是否可以使用編譯時檢查跳過的發生if (S)else塊體呢? (類似於__if_exists或#if,特征等)。 我知道我可以有一個專門的A<nullptr>來定義一個不同的print()函數,但是還想知道是否還有其他(更簡單的)方法可以做到這一點。 謝謝!

template<char const* S = nullptr>
class A
{
public:
    void print()
    {
        if (S)
            cout << S << endl;
        else
            cout << "nullptr" << endl;
    }
};

在您的情況下,不能將S的默認值設置為“ nullptr”或任何其他常量字符串嗎? 當然,當您實際上不需要S為NULL時,此方法有效,但是它將跳過if檢查。

添加一個功能,

constexpr const char* getStr(){
   return S? S : "null";
}

然后變成

void print(){
   std::cout << getStr() << std::endl;
}

暫無
暫無

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

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