簡體   English   中英

是否需要nullptr_t類型的對象?

[英]Are objects of type nullptr_t ever needed?

引用C ++ 11:(18.2 / 9)

nullptr_t定義如下:

 namespace std { typedef decltype(nullptr) nullptr_t; } 

nullptr_t是同義詞的類型具有3.9.1和4.10中描述的特征。 [注意:雖然無法獲取nullptr的地址,但可以采用另一個作為左值的nullptr_t對象的地址 - 尾注]

我們是否需要nullptr_t類型的nullptr_t (除了nullptr )?

在這個例子中它很有用,這對我來說足夠好了:

#include <cstddef>
#include <iostream>
#include <limits>

int bonus(int){return std::numeric_limits<int>::max();}
int bonus(std::nullptr_t){return 0;}

int main()
{
    std::nullptr_t bar;
    std::cout << bonus(0) << "\n";
    std::cout << bonus(nullptr) << "\n";
    std::cout << bonus(bar) << "\n";
}

C ++是一種通用語言,如果與nullptr相關聯的類型不是重載解析系統的一部分,那將會很煩人。

nullptr是一個prvalue,所以你不能拿它的地址。 (這不是一個對象。)說明是指這樣的情況:

nullptr_t n;

然后, nnullptr_t類型的普通對象,因此您可以獲取其地址。 這似乎沒有任何用處,但在通用代碼中,此功能可能以某種方式出現。

暫無
暫無

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

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