[llvm-bugs] [Bug 37407] New: std::invoke fails to call noexcept marked function
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu May 10 06:15:46 PDT 2018
https://bugs.llvm.org/show_bug.cgi?id=37407
Bug ID: 37407
Summary: std::invoke fails to call noexcept marked function
Product: libc++
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: All Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: blitzrakete at gmail.com
CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com
std::invoke wrongly takes the partial specialization for objects instead for
functions for functions marked with noexcept. I'm on r331914.
#include <functional>
void func() noexcept {}
int main() { std::invoke(func); }
Here's the full error message:
In file included from main.cpp:1:
In file included from /usr/local/bin/../include/c++/v1/functional:484:
/usr/local/bin/../include/c++/v1/type_traits:4196:19: error: invalid
application of 'sizeof' to a function type
static_assert(sizeof(_Tp) > 0, Type must be complete.);
^~~~~~~~~~~
/usr/local/bin/../include/c++/v1/type_traits:4201:15: note: in instantiation of
template class 'std::__1::__check_complete<void () noexcept>' requested here
: private __check_complete<_Tp>
^
/usr/local/bin/../include/c++/v1/type_traits:4494:15: note: in instantiation of
template class 'std::__1::__check_complete<void (&)() noexcept>' requested here
: private __check_complete<_Fp>
^
/usr/local/bin/../include/c++/v1/type_traits:4557:9: note: in instantiation of
template class 'std::__1::__invokable_r<void, void (&)() noexcept>' requested
here
__invokable<_Fp, _Args...>::value,
^
/usr/local/bin/../include/c++/v1/type_traits:4566:14: note: in instantiation of
template class 'std::__1::__invoke_of<void (&)() noexcept>' requested here
: public __invoke_of<_Fp, _Args...>
^
/usr/local/bin/../include/c++/v1/type_traits:4571:22: note: in instantiation of
template class 'std::__1::result_of<void (&())() noexcept>' requested here
template <class _Tp> using result_of_t = typename result_of<_Tp>::type;
^
/usr/local/bin/../include/c++/v1/functional:2346:1: note: in instantiation of
template type alias 'result_of_t' requested here
result_of_t<_Fn&&(_Args&&...)>
^
main.cpp:5:14: note: while substituting deduced template arguments into
function template 'invoke' [with _Fn = void (&)() noexcept, _Args = <>]
int main() { std::invoke(func); }
^
1 error generated.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180510/9656495f/attachment.html>
More information about the llvm-bugs
mailing list