У меня есть шаблон, который вызывает функцию-член. Как мне проверить с помощью static_assert
, что метод существует?
struct A {
};
struct B {
int foo() { return 42; } };
template <typename T> struct D {
static_assert(/* T has foo */, "T needs foo for reasons");
int bar() {
return t.foo();
}
T t; };
int main() {
D<A> d;
std::cout << d.bar() << std::endl;
return 0; }
Я знаю, что это просто сгенерирует ошибку компилятора, что у A нет foo, но я хотел бы проверить и дать лучший вывод ошибок, используя static_assert
.