//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14 // // Make sure that we can use CTAD with operations in #include #include "test_macros.h" int main(int, char**) { { std::plus f; ASSERT_SAME_TYPE(decltype(f), std::plus<>); } { std::minus f; ASSERT_SAME_TYPE(decltype(f), std::minus<>); } { std::multiplies f; ASSERT_SAME_TYPE(decltype(f), std::multiplies<>); } { std::divides f; ASSERT_SAME_TYPE(decltype(f), std::divides<>); } { std::modulus f; ASSERT_SAME_TYPE(decltype(f), std::modulus<>); } { std::negate f; ASSERT_SAME_TYPE(decltype(f), std::negate<>); } { std::bit_and f; ASSERT_SAME_TYPE(decltype(f), std::bit_and<>); } { std::bit_not f; ASSERT_SAME_TYPE(decltype(f), std::bit_not<>); } { std::bit_or f; ASSERT_SAME_TYPE(decltype(f), std::bit_or<>); } { std::bit_xor f; ASSERT_SAME_TYPE(decltype(f), std::bit_xor<>); } { std::equal_to f; ASSERT_SAME_TYPE(decltype(f), std::equal_to<>); } { std::not_equal_to f; ASSERT_SAME_TYPE(decltype(f), std::not_equal_to<>); } { std::less f; ASSERT_SAME_TYPE(decltype(f), std::less<>); } { std::less_equal f; ASSERT_SAME_TYPE(decltype(f), std::less_equal<>); } { std::greater_equal f; ASSERT_SAME_TYPE(decltype(f), std::greater_equal<>); } { std::greater f; ASSERT_SAME_TYPE(decltype(f), std::greater<>); } { std::logical_and f; ASSERT_SAME_TYPE(decltype(f), std::logical_and<>); } { std::logical_not f; ASSERT_SAME_TYPE(decltype(f), std::logical_not<>); } { std::logical_or f; ASSERT_SAME_TYPE(decltype(f), std::logical_or<>); } return 0; }