下面的代碼:爲什麼數字10參考整數類型0?
#include <iostream>
#include <limits>
#include <cstdint>
int main()
{
std::cout << std::numeric_limits<std::uint64_t>::digits10 << "\n"
<< std::numeric_limits<std::uint64_t&>::digits10 << "\n";
}
輸出
我希望std::uint64_t&
有相同的值std::uint64_t
:是否有這種差異的一個原因?
'的std :: numeric_limits'不擅長該類型,所以它默認爲0。 – 0x499602D2 2015-04-01 13:59:09
從語言設計的角度來看,不應該默認爲編譯錯誤嗎? – 2015-04-01 14:00:59
沒有具體的原因 - 它只是使參考類型在'numeric_limits'中具有相同的值,因爲非參考需要額外的努力,並且沒有人認爲它會使您方便。如果你關心你,你可以'std :: remove_reference :: type'。 –
milleniumbug
2015-04-01 14:04:30