2012-12-03 17 views
2

我玩弄用戶定義文字(與GCC 4.7)。整數值應該傳遞給浮點用戶定義的文字嗎?

double operator"" _lb(long double n) 
{ 
    return n * 0.453592; // convert pounds to kilos 
} 

傳遞時一個浮點字面也能正常工作(如42.0_lb),但是當我試圖通過一個整數文字(如42_lb)我得到以下錯誤:

error: unable to find numeric literal operator 'operator"" _lb'

不應該我的_lb的定義會導致參數與long double之間的隱式轉換(與常規函數一樣)?

回答

4

不,這種隱式轉換不適用於這種情況。根據[lex.ext] p3,用戶定義的intergal文字只能由採用unsigned long long的文字運算符或原始文字運算符(需要const char*)或文字運算符模板處理。

+0

@Motti [N3337](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf)也有我引用的文字。 (來自[wikipedia]的鏈接(http://en.wikipedia.org/wiki/C%2B%2B11))。 – Angew

+0

謝謝,我現在看到它。 – Motti

相關問題