Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

c++ compile-time check function arguments

Tags:

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.