Avoid capture of constexpr value

This commit is contained in:
Jason Turner 2017-08-23 16:08:44 -06:00
parent ac8f876347
commit 0d76241f77

View File

@ -23,10 +23,10 @@ namespace chaiscript
void array(const std::string &type, Module& m) void array(const std::string &type, Module& m)
{ {
typedef typename std::remove_extent<T>::type ReturnType; typedef typename std::remove_extent<T>::type ReturnType;
const auto extent = std::extent<T>::value;
m.add(user_type<T>(), type); m.add(user_type<T>(), type);
m.add(fun( m.add(fun(
[extent](T& t, size_t index)->ReturnType &{ [](T& t, size_t index)->ReturnType &{
constexpr const auto extent = std::extent<T>::value;
if (extent > 0 && index >= extent) { if (extent > 0 && index >= extent) {
throw std::range_error("Array index out of range. Received: " + std::to_string(index) + " expected < " + std::to_string(extent)); throw std::range_error("Array index out of range. Received: " + std::to_string(index) + " expected < " + std::to_string(extent));
} else { } else {
@ -37,7 +37,8 @@ namespace chaiscript
); );
m.add(fun( m.add(fun(
[extent](const T &t, size_t index)->const ReturnType &{ [](const T &t, size_t index)->const ReturnType &{
constexpr const auto extent = std::extent<T>::value;
if (extent > 0 && index >= extent) { if (extent > 0 && index >= extent) {
throw std::range_error("Array index out of range. Received: " + std::to_string(index) + " expected < " + std::to_string(extent)); throw std::range_error("Array index out of range. Received: " + std::to_string(index) + " expected < " + std::to_string(extent));
} else { } else {
@ -48,8 +49,8 @@ namespace chaiscript
); );
m.add(fun( m.add(fun(
[extent](const T &) { [](const T &) {
return extent; return std::extent<T>::value;
}), "size"); }), "size");
} }