Code: Select all
#include
using FunctionPtr = void (*)();
// Primary template
template
void demo() = delete;
// The common code default implementation
template
void demo() { };
// Detect if a specialization exists
template
concept has_demo = requires { demo(); };
static_assert(has_demo);
static_assert(!has_demo); // False - no user-provided specialization.
< /code>
Ich muss schließlich den tatsächlichen aufgelösten Funktionszeiger in einer Vulkan -Versandtabelle speichern. Ich versuche also, eine Auflösungsfunktion zu schreiben, die die Spezialisierung zurückgibt, wenn sie vorhanden ist, und nicht anders: < /p>
constexpr FunctionPtr getPointer(void)
{
if constexpr(has_demo)
{
return demo;
}
return demo;
}