Merge pull request #1230 from mandreyel/lambda-unevaluated-context-fix
Move lambda out of unevaluated context
This commit is contained in:
commit
186c747a19
2 changed files with 14 additions and 8 deletions
|
@ -320,15 +320,18 @@ class input_adapter
|
||||||
int>::type = 0>
|
int>::type = 0>
|
||||||
input_adapter(IteratorType first, IteratorType last)
|
input_adapter(IteratorType first, IteratorType last)
|
||||||
{
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
// assertion to check that the iterator range is indeed contiguous,
|
// assertion to check that the iterator range is indeed contiguous,
|
||||||
// see http://stackoverflow.com/a/35008842/266378 for more discussion
|
// see http://stackoverflow.com/a/35008842/266378 for more discussion
|
||||||
assert(std::accumulate(
|
const auto is_contiguous = std::accumulate(
|
||||||
first, last, std::pair<bool, int>(true, 0),
|
first, last, std::pair<bool, int>(true, 0),
|
||||||
[&first](std::pair<bool, int> res, decltype(*first) val)
|
[&first](std::pair<bool, int> res, decltype(*first) val)
|
||||||
{
|
{
|
||||||
res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
|
res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
|
||||||
return res;
|
return res;
|
||||||
}).first);
|
}).first;
|
||||||
|
assert(is_contiguous);
|
||||||
|
#endif
|
||||||
|
|
||||||
// assertion to check that each element is 1 byte long
|
// assertion to check that each element is 1 byte long
|
||||||
static_assert(
|
static_assert(
|
||||||
|
|
|
@ -2184,15 +2184,18 @@ class input_adapter
|
||||||
int>::type = 0>
|
int>::type = 0>
|
||||||
input_adapter(IteratorType first, IteratorType last)
|
input_adapter(IteratorType first, IteratorType last)
|
||||||
{
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
// assertion to check that the iterator range is indeed contiguous,
|
// assertion to check that the iterator range is indeed contiguous,
|
||||||
// see http://stackoverflow.com/a/35008842/266378 for more discussion
|
// see http://stackoverflow.com/a/35008842/266378 for more discussion
|
||||||
assert(std::accumulate(
|
const auto is_contiguous = std::accumulate(
|
||||||
first, last, std::pair<bool, int>(true, 0),
|
first, last, std::pair<bool, int>(true, 0),
|
||||||
[&first](std::pair<bool, int> res, decltype(*first) val)
|
[&first](std::pair<bool, int> res, decltype(*first) val)
|
||||||
{
|
{
|
||||||
res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
|
res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
|
||||||
return res;
|
return res;
|
||||||
}).first);
|
}).first;
|
||||||
|
assert(is_contiguous);
|
||||||
|
#endif
|
||||||
|
|
||||||
// assertion to check that each element is 1 byte long
|
// assertion to check that each element is 1 byte long
|
||||||
static_assert(
|
static_assert(
|
||||||
|
|
Loading…
Reference in a new issue