-1
爲了避免傳遞給8位系統上的許多常量,但仍然保持代碼模塊化,我使用了非類型模板)接收這些常量的參數。只要我只傳遞參數對象「一層」,就可以毫無問題地工作。模板:如何將非類型參數對象作爲非類型參數傳遞給另一個模板
如果我嘗試使用這種模板對象作爲非類型參數到另一個模板時,編譯器拒絕我的企圖,甚至宣佈這樣的模板:
struct Params {constexpr Params(int i){}};
extern constexpr Params const p(1);
// This compiles fine
template <Params const &p> class A { };
A<p> a;
// This does not compile
template <A<Params const &> &a> class B { };
B<a> b;
所以我的問題是:是否有人知道如何定義一個接收另一個(非類型)模板的對象作爲參數的模板?
感謝您的回答,這明顯地解決了問題中描述的問題。唯一的缺點是通過指定'p'兩次產生的冗餘 - 儘管編譯器可以檢查它。 – kandid
@kandid是的,我也不太高興。但我想不出這種情況下的解決方法。當你有一個類型參數時,它是不同的,因爲那樣你就可以使用專門化了。 – Brian