Merge "Base: assume and use C++11 in libbase"
This commit is contained in:
commit
43824e72c7
2 changed files with 7 additions and 25 deletions
|
|
@ -265,7 +265,7 @@ static constexpr bool kEnableDChecks = true;
|
||||||
// MakeEagerEvaluator to infer the types of LHS and RHS.
|
// MakeEagerEvaluator to infer the types of LHS and RHS.
|
||||||
template <typename LHS, typename RHS>
|
template <typename LHS, typename RHS>
|
||||||
struct EagerEvaluator {
|
struct EagerEvaluator {
|
||||||
EagerEvaluator(LHS l, RHS r) : lhs(l), rhs(r) {
|
constexpr EagerEvaluator(LHS l, RHS r) : lhs(l), rhs(r) {
|
||||||
}
|
}
|
||||||
LHS lhs;
|
LHS lhs;
|
||||||
RHS rhs;
|
RHS rhs;
|
||||||
|
|
@ -273,7 +273,7 @@ struct EagerEvaluator {
|
||||||
|
|
||||||
// Helper function for CHECK_xx.
|
// Helper function for CHECK_xx.
|
||||||
template <typename LHS, typename RHS>
|
template <typename LHS, typename RHS>
|
||||||
static inline EagerEvaluator<LHS, RHS> MakeEagerEvaluator(LHS lhs, RHS rhs) {
|
constexpr EagerEvaluator<LHS, RHS> MakeEagerEvaluator(LHS lhs, RHS rhs) {
|
||||||
return EagerEvaluator<LHS, RHS>(lhs, rhs);
|
return EagerEvaluator<LHS, RHS>(lhs, rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,18 +41,9 @@
|
||||||
// Note, that most uses of DISALLOW_ASSIGN and DISALLOW_COPY are broken
|
// Note, that most uses of DISALLOW_ASSIGN and DISALLOW_COPY are broken
|
||||||
// semantically, one should either use disallow both or neither. Try to
|
// semantically, one should either use disallow both or neither. Try to
|
||||||
// avoid these in new code.
|
// avoid these in new code.
|
||||||
//
|
|
||||||
// When building with C++11 toolchains, just use the language support
|
|
||||||
// for explicitly deleted methods.
|
|
||||||
#if __cplusplus >= 201103L
|
|
||||||
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
|
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
|
||||||
TypeName(const TypeName&) = delete; \
|
TypeName(const TypeName&) = delete; \
|
||||||
void operator=(const TypeName&) = delete
|
void operator=(const TypeName&) = delete
|
||||||
#else
|
|
||||||
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
|
|
||||||
TypeName(const TypeName&); \
|
|
||||||
void operator=(const TypeName&)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// A macro to disallow all the implicit constructors, namely the
|
// A macro to disallow all the implicit constructors, namely the
|
||||||
// default constructor, copy constructor and operator= functions.
|
// default constructor, copy constructor and operator= functions.
|
||||||
|
|
@ -60,18 +51,9 @@
|
||||||
// This should be used in the private: declarations for a class
|
// This should be used in the private: declarations for a class
|
||||||
// that wants to prevent anyone from instantiating it. This is
|
// that wants to prevent anyone from instantiating it. This is
|
||||||
// especially useful for classes containing only static methods.
|
// especially useful for classes containing only static methods.
|
||||||
//
|
|
||||||
// When building with C++11 toolchains, just use the language support
|
|
||||||
// for explicitly deleted methods.
|
|
||||||
#if __cplusplus >= 201103L
|
|
||||||
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
|
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
|
||||||
TypeName() = delete; \
|
TypeName() = delete; \
|
||||||
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
||||||
#else
|
|
||||||
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
|
|
||||||
TypeName(); \
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The arraysize(arr) macro returns the # of elements in an array arr.
|
// The arraysize(arr) macro returns the # of elements in an array arr.
|
||||||
// The expression is a compile-time constant, and therefore can be
|
// The expression is a compile-time constant, and therefore can be
|
||||||
|
|
@ -174,10 +156,10 @@ void UNUSED(const T&...) {
|
||||||
// only if there are no statements on the execution path between it and the
|
// only if there are no statements on the execution path between it and the
|
||||||
// next switch label.
|
// next switch label.
|
||||||
//
|
//
|
||||||
// When compiled with clang in C++11 mode, the FALLTHROUGH_INTENDED macro is
|
// When compiled with clang, the FALLTHROUGH_INTENDED macro is expanded to
|
||||||
// expanded to [[clang::fallthrough]] attribute, which is analysed when
|
// [[clang::fallthrough]] attribute, which is analysed when performing switch
|
||||||
// performing switch labels fall-through diagnostic ('-Wimplicit-fallthrough').
|
// labels fall-through diagnostic ('-Wimplicit-fallthrough'). See clang
|
||||||
// See clang documentation on language extensions for details:
|
// documentation on language extensions for details:
|
||||||
// http://clang.llvm.org/docs/LanguageExtensions.html#clang__fallthrough
|
// http://clang.llvm.org/docs/LanguageExtensions.html#clang__fallthrough
|
||||||
//
|
//
|
||||||
// When used with unsupported compilers, the FALLTHROUGH_INTENDED macro has no
|
// When used with unsupported compilers, the FALLTHROUGH_INTENDED macro has no
|
||||||
|
|
@ -185,7 +167,7 @@ void UNUSED(const T&...) {
|
||||||
//
|
//
|
||||||
// In either case this macro has no effect on runtime behavior and performance
|
// In either case this macro has no effect on runtime behavior and performance
|
||||||
// of code.
|
// of code.
|
||||||
#if defined(__clang__) && __cplusplus >= 201103L && defined(__has_warning)
|
#if defined(__clang__) && defined(__has_warning)
|
||||||
#if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
|
#if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
|
||||||
#define FALLTHROUGH_INTENDED [[clang::fallthrough]] // NOLINT
|
#define FALLTHROUGH_INTENDED [[clang::fallthrough]] // NOLINT
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue