brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 98a4a99 Raw
40 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_TYPETRAITS_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_TYPETRAITS_H11 12#include "clang/AST/ASTContext.h"13#include "clang/AST/Type.h"14#include <optional>15 16namespace clang::tidy::utils::type_traits {17 18/// Returns `true` if `Type` is expensive to copy.19std::optional<bool> isExpensiveToCopy(QualType Type, const ASTContext &Context);20 21/// Returns `true` if `Type` is trivially default constructible.22bool isTriviallyDefaultConstructible(QualType Type, const ASTContext &Context);23 24/// Returns `true` if `RecordDecl` is trivially default constructible.25bool recordIsTriviallyDefaultConstructible(const RecordDecl &RecordDecl,26                                           const ASTContext &Context);27 28/// Returns `true` if `Type` is trivially destructible.29bool isTriviallyDestructible(QualType Type);30 31/// Returns true if `Type` has a non-trivial move constructor.32bool hasNonTrivialMoveConstructor(QualType Type);33 34/// Return true if `Type` has a non-trivial move assignment operator.35bool hasNonTrivialMoveAssignment(QualType Type);36 37} // namespace clang::tidy::utils::type_traits38 39#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_TYPETRAITS_H40