Added static sign validation for ALFunction

This commit is contained in:
2019-12-08 23:54:03 +03:00
parent a0859fe44f
commit a6597e269e

View File

@@ -3,14 +3,20 @@
#include <cassert> #include <cassert>
#include <limits>
#include <string> #include <string>
template<class STORAGE, size_t VALUES_COUNT> template<class STORAGE, size_t VALUES_COUNT>
class Function { class Function {
public: public:
Function(): _function_values(0) {} Function(): _function_values(0) {
explicit Function(STORAGE val): _function_values(val) {} static_assert(not std::numeric_limits<STORAGE>::is_signed);
}
explicit Function(STORAGE val): _function_values(val) {
static_assert(not std::numeric_limits<STORAGE>::is_signed);
}
explicit Function(std::string val): _function_values(0) { explicit Function(std::string val): _function_values(0) {
static_assert(not std::numeric_limits<STORAGE>::is_signed);
assert(("bad input string size", val.size() == VALUES_COUNT)); assert(("bad input string size", val.size() == VALUES_COUNT));
STORAGE cur_dig = 1; STORAGE cur_dig = 1;
for (auto it = val.rbegin(); it != val.rend(); ++it) { for (auto it = val.rbegin(); it != val.rend(); ++it) {