我正在尋找一種方法來檢查函數參數在編譯時,如果它可以做編譯器。C++編譯時檢查函數參數
更具體地說: 假設我們有一些類矩陣。
class Matrix
{
int x_size;
int y_size;
public:
Matrix(int width, int height):
x_size{width},
y_size{height}
{}
Matrix():
Matrix(0, 0)
{}
};
int main()
{
Matrix a; // good.
Matrix b(1, 10); // good.
Matrix c(0, 4); // bad, I want compilation error here.
}
所以,我可以檢查或在靜態的情況下,區分行爲(函數重載?)(來源編碼)傳遞給函數的值?
如果值不是靜態的:
std::cin >> size;
Matrix d(size, size);
我們唯一能夠做到的運行時檢查。但是,如果值在源代碼中編碼?在這種情況下,我可以進行編譯時檢查嗎?
編輯:我認爲這可能與constexpr constructor可能,但無論如何超載與無constexpr是不允許的。所以問題不能按我想的方式解決。
我不認爲如果有人通過錯誤的參數是可以打破編譯。正常的方法是拋出錯誤值的異常 –