У меня проблемы с std::is_member_function_pointer
.Насколько я могу судить, это не работает, если дана noexcept
функция-член.Я не могу найти ничего в стандарте, заявляя, что он не работает для noexcept
квалифицированных функций-членов.Пример проблемы:
#include <type_traits>
class A {
public:
void member() noexcept { }
};
int main()
{
// fails at compile time if A::member is a data member and not a function
static_assert(std::is_member_function_pointer<decltype(&A::member)>::value,
"A::member is not a member function.");
}
Это дает мне следующую ошибку:
member.cpp: 11: 5: ошибка: статическая ошибка не выполнена из-за требования 'std :: is_member_function_pointer:: value '"A :: member не является функцией-членом."static_assert (std :: is_member_function_pointer :: value, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 генерируется ошибка.
Если я удаляю квалификацию noexcept
, она компилируется так, как должна.
Это было протестировано на Debian Stretch с использованием clang 6.0 и libstdc ++ 6.3.0 Я что-то здесь упускаю? Из того, что я могу прочитать, этот должен работать.