mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 18:08:58 +00:00
9238cab1b1
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.
24 lines
788 B
C++
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;
|
|
}
|