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