gecko-dev/mfbt/tests/TestRange.cpp
Nathan Froyd 9238cab1b1 Bug 1315352 - enable Range<T> -> Range<const T> conversion; r=Waldo
Since |T*| converts into |const T*|, if we want to rewrite code such as:

  void DoSomething(const T*, size_t);

  void DoSomethingElse(T* x, size_t len)
  {
    ...
    DoSomething(x, len);
  }

to use ranges:

  void DoSomething(Range<const T>);

  void DoSomethingElse(Range<T> x)
  {
    ...
    DoSomething(x);
  }

we need to ensure this conversion works.  gsl::span<T> already provides
something like this as well.
2016-11-07 19:30:34 -04:00

24 lines
788 B
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/Range.h"
#include "mozilla/TypeTraits.h"
using mozilla::IsConvertible;
using mozilla::Range;
static_assert(IsConvertible<Range<int>, Range<const int>>::value,
"Range should convert into const");
static_assert(!IsConvertible<Range<const int>, Range<int>>::value,
"Range should not drop const in conversion");
// We need a proper program so we have someplace to hang the static_asserts.
int
main()
{
return 0;
}