mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-27 15:32:10 +08:00
6278690abe
sed -i '' -E -e 's/Copyright (.+) The Crashpad Authors\. All rights reserved\.$/Copyright \1 The Crashpad Authors/' $(git grep -El 'Copyright (.+) The Crashpad Authors\. All rights reserved\.$') Bug: chromium:1098010 Change-Id: I8d6138469ddbe3d281a5d83f64cf918ec2491611 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3878262 Reviewed-by: Joshua Peraza <jperaza@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org>
45 lines
1.7 KiB
C++
45 lines
1.7 KiB
C++
// Copyright 2015 The Crashpad Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef CRASHPAD_UTIL_MISC_IMPLICIT_CAST_H_
|
|
#define CRASHPAD_UTIL_MISC_IMPLICIT_CAST_H_
|
|
|
|
namespace crashpad {
|
|
|
|
// Use implicit_cast as a safe version of static_cast or const_cast
|
|
// for upcasting in the type hierarchy (i.e. casting a pointer to Foo
|
|
// to a pointer to SuperclassOfFoo or casting a pointer to Foo to
|
|
// a const pointer to Foo).
|
|
// When you use implicit_cast, the compiler checks that the cast is safe.
|
|
// Such explicit implicit_casts are necessary in surprisingly many
|
|
// situations where C++ demands an exact type match instead of an
|
|
// argument type convertible to a target type.
|
|
//
|
|
// The From type can be inferred, so the preferred syntax for using
|
|
// implicit_cast is the same as for static_cast etc.:
|
|
//
|
|
// implicit_cast<ToType>(expr)
|
|
//
|
|
// implicit_cast would have been part of the C++ standard library,
|
|
// but the proposal was submitted too late. It will probably make
|
|
// its way into the language in the future.
|
|
template <typename To, typename From>
|
|
constexpr To implicit_cast(From const& f) {
|
|
return f;
|
|
}
|
|
|
|
} // namespace crashpad
|
|
|
|
#endif // CRASHPAD_UTIL_MISC_IMPLICIT_CAST_H_
|