[all-commits] [llvm/llvm-project] 07a0b0: [libc++] Properly handle specializations of std::i...

Quuxplusone via All-commits all-commits at lists.llvm.org
Mon Jan 10 09:39:27 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 07a0b0ee94880cc193f3c63ebe3c4662c3123606
      https://github.com/llvm/llvm-project/commit/07a0b0ee94880cc193f3c63ebe3c4662c3123606
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2022-01-10 (Mon, 10 Jan 2022)

  Changed paths:
    M libcxx/include/__functional/bind.h
    M libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp
    R libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp
    A libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp
    A libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/is_placeholder.pass.cpp
    A libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp

  Log Message:
  -----------
  [libc++] Properly handle specializations of std::is_placeholder.

Before this patch, the user needed to specialize both of
`is_placeholder<MyType>` and `is_placeholder<const MyType>`.
After this patch, only the former is needed (although the
latter is harmless if provided).

The new tests don't actually fail unless return type deduction
is used, which is a C++14 feature. Specializing `is_placeholder`
is still allowed in C++11, though.

Fixes #51095.

Differential Revision: https://reviews.llvm.org/D116388




More information about the All-commits mailing list