[libcxx-commits] [PATCH] D140731: [libc++][CI] Fixes robust against ADL for C++03.

Mark de Wever via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Jan 1 08:36:24 PST 2023


Mordante added a comment.

In D140731#4020155 <https://reviews.llvm.org/D140731#4020155>, @philnik wrote:

> Where does this fire? `noexcept(cond)` should never be used in C++03.

`include/__functional/invoke.h` lines 431 and 438 are the only two places

  template <class _Ret, class _Fp, class ..._Args>
  struct __nothrow_invokable_r_imp<true, false, _Ret, _Fp, _Args...>
  {
      typedef __nothrow_invokable_r_imp _ThisT;
    
      template <class _Tp>
      static void __test_noexcept(_Tp) _NOEXCEPT;
    
      static const bool value = noexcept(_ThisT::__test_noexcept<_Ret>(  // 431
          _VSTD::__invoke(declval<_Fp>(), declval<_Args>()...)));
  };    
    
  template <class _Ret, class _Fp, class ..._Args>
  struct __nothrow_invokable_r_imp<true, true, _Ret, _Fp, _Args...>
  {
      static const bool value = noexcept(                                 / 438
          _VSTD::__invoke(declval<_Fp>(), declval<_Args>()...)); 
  };


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140731/new/

https://reviews.llvm.org/D140731



More information about the libcxx-commits mailing list