I'm searching a way to check function arguments in compile-time if it's possible to do for compiler.
To be more specific:
assume that we have some class Matrix.
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.
}
So, can I check or differentiate behavior (function overloading?) in case of static (source-encoded) values passed to function?
If value isn't static:
std::cin >> size;
Matrix d(size, size);
we're only able to do runtime checks. But if values are encoded in source? Can I make compile-time check in this case?
EDIT: I think this can be possible with constexpr constructor, but anyway overloading with and without constexpr isn't allowed. So problem can't be resolved in way I suppose.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…