Hej.
Chciałbym dodać wiadomość błędu w przypadku, gdy warunek requires nie będzie spełniony - coś jak static_cast robi.
Na przykład mam taki kod:
template<typename T>
concept Nameable = requires()
{
T::NAME;
};
struct WithName
{
static constexpr const auto NAME = "testName";
};
struct WithoutName
{
};
////////////////////////////////////
template<class T>
requires Nameable<T>
class ErrorIfNotNameable
{
public:
ErrorIfNotNameable()
{
cout << "ErrorIfNotNameable(nameable)" << endl;
}
};
int main()
{
ErrorIfNotNameable<WithName>{};
//ErrorIfNotNameable<WithoutName>{}; /// Error
return 0;
}
Ten fragment kodu działa tak jak tego oczekuję, czyli nie można stworzyć obiektu klasy ErrorIfNotNameable podając mu argument, który nie jest Nameable.
Ja dodatkowo chciałbym wyświetlić konkretną wiadomość błędu np. "Sorry, ale musisz podać Name, bo <powód>".
Jakieś pomysły?