我很好奇,如果有可能編寫這樣的C++模板,它不可能創建一個類/類型它將接受(編譯沒有錯誤)。 如果可能,它可能是什麼?是否可以編寫不接受任何類型的C++模板?
0
A
回答
2
當然。例如:
template <typename T>
struct S {
static_assert(std::is_class<T>::value, "T must be a class");
static_assert(!std::is_class<T>::value, "T must not be a class");
};
但是,這樣的模板會自動形成不規則的NDR。
如果可以 爲模板來產生沒有有效的專門化,並且該模板不會被實例化,是形成不良的模板,不需要診斷 。
([temp.res/8),你可以做到這一點
1
一種方式是隻提供類模板的前向聲明。過去我使用的類模板的一個例子是將類型的大小作爲編譯器錯誤進行打印。
template <size_t> struct PrintSize;
PrintSize<sizeof(int)> a;
當您編譯代碼,你將能夠從編譯器發出錯誤消息告訴int
大小。
相關問題
- 1. 模板成員函數不接受任何類型的參數?
- 2. 我可以在C++中編寫模板類的接口
- 3. 是否可以編寫適用於所有整型的類模板?
- 4. 模板類的內部類是否可以是非模板類?
- 5. 如果不知道模板類型,是否可以指向模板類?
- 6. 編寫一個函數,可以接受值和任何類型的迭代類型
- 7. 如何在c#中以編程方式確定類型是否接受空值?
- 8. 如何編寫可以接受堆棧或隊列的函數模板?
- 9. 是否可以在模板類之外獲取指定的模板類型?
- 10. 是否可以編寫一個接受不同抽象類型參數的單一方法?
- 11. 如何在C#中編寫可以接受參數的程序
- 12. 如何編寫一個搜索類來接受任何類型的參數?
- 13. 是否有任何可以接受SSL的mongodb客戶端
- 14. 模板函數接受類似的任何類型的映射<X, Y>
- 15. 接受模板類的模板函數
- 16. JavaScript類是否可以接受節點模塊?
- 17. 是否可以在C(而不是C++)中編寫node.js擴展?
- 18. 是否可以用C++而不是C編寫OpenCL內核?
- 19. 是否可以在F#中編寫MyGeneration模板?
- 20. 是否可以編寫一個通用重新綁定模板?
- 21. 是否可以爲模板類的成員函數編寫專門化?
- 22. 檢測模板類型本身是否是模板類型
- 23. 是否可以定義「模板函數指針」的類型?
- 24. 是否可以使用MySQL編寫這種類型的查詢?
- 25. 屬性值不可接受的類型,但類型是好的
- 26. 是否可以爲鏈接的數據編寫F#類型的提供程序?
- 27. 如何寫類接受任何...對象?
- 28. 編寫一個可以接受RuntimeException的子類的scala方法
- 29. 如何寫任何類型的接受(一個)參數的C函數
- 30. 是否可以強制模板函數只接受某種數字類型的參數?
爲什麼你想要這樣做? – wallyk
我知道這將是最無用的模板。我只是好奇,如果有可能的話。 – Barteks2x
它在編譯器測試中可能很有用。在編譯識別突變病例之前,它也可能在軟件配置中有用。我想知道你是否在做這樣的事情。 – wallyk