// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/template_util.h" #include #include #include #include "base/containers/flat_tree.h" #include "base/test/move_only_int.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { namespace { enum SimpleEnum { SIMPLE_ENUM }; enum EnumWithExplicitType : uint64_t { ENUM_WITH_EXPLICIT_TYPE }; enum class ScopedEnum { SCOPED_ENUM }; struct SimpleStruct {}; struct StructWithToString { std::string ToString() const { return ""; } }; // .ToString() support on structs. static_assert(!internal::SupportsToString::value, "simple struct value doesn't support .ToString()"); static_assert(!internal::SupportsToString::value, "simple struct const ref doesn't support .ToString()"); static_assert(internal::SupportsToString::value, "struct with .ToString() should be printable by value"); static_assert(internal::SupportsToString::value, "struct with .ToString() should be printable by const ref"); // is_scoped_enum TEST(TemplateUtil, IsScopedEnum) { static_assert(!is_scoped_enum::value, ""); static_assert(!is_scoped_enum::value, ""); static_assert(!is_scoped_enum::value, ""); static_assert(is_scoped_enum::value, ""); } TEST(TemplateUtil, RemoveCvRefT) { static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert( std::is_same>::value, ""); static_assert(std::is_same>::value, ""); // Test references and pointers to arrays. static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); // Test references and pointers to functions. static_assert(std::is_same>::value, ""); static_assert(std::is_same>::value, ""); static_assert( std::is_same>::value, ""); } } // namespace } // namespace base