在最新的模板約束文件中,介紹了一個約束模板參數的新工具集。另外,在C++中提供了14個可變模板。變量模板允許定義類型參數化常量等等。模板約束是否可用於變量模板?
沒有提及這些功能如何交互。使用pi的規範示例,我們可以這樣做:
template<Integral T>
constexpr double pi(3.141592653589793238);
template<Floating_point T>
constexpr T pi(3.1415926535897932384626433832795029L);
這將強制將C/C++數值從整數轉換爲double。它也會阻止用完全不相關的類型進行實例化。 (看着這個,我們可能想用一些需要浮點數的浮點數代替Floating_point來支持複數。)
我錯過了其中一篇論文的東西,或者這是在作品中?也許它是免費的,不值得一提?
重新標記[標籤:C++ 1Y]按照[該元討論](HTTP://元.stackexchange.com /問題/ 177625/C14-或-C1Y)。 – Casey
在第一個例子中,您不使用'Integral'模板類型,並且'double'也不是整數。看起來你正在試圖專注於一個'constexpr'模板。那是你要的嗎?這與約束有什麼關係?你的意思是? Concepts Lite使用C++ 14,但這與您的示例無關。 – cdmh
我正在嘗試專門化整數類型的變量模板以提升爲double(這是庫中的數學函數)。也許我搞砸了語法。我希望Integral派遣到這個專業 - 不要使用它。 – emsr