Проверьте бесплатное существование во время компиляцииC++

Программы на C++. Форум разработчиков
Anonymous
Проверьте бесплатное существование во время компиляции

Сообщение Anonymous »

Я пишу функциональную обертку для нашего внутреннего API, который недавно изменился, и я хотел бы, чтобы моя функция поддерживала обе версии, в зависимости от того, какой заголовок был включен, то есть какая версия функции доступна: < /p>

Код: Выделить всё

#include 
#include 
#include 

// /libv1/include/api.h
void apiFoo(){
std::cout 
    if constexpr(g_newApi) {
apiFoo(g_name);
}
else {
apiFoo();
}
< /code>
Но весь этот код не может компилировать с аналогичным сообщением: < /p>
error: too many arguments to function 'void apiFoo()'
31 | template  struct takesArg
Есть ли способ проверить бесплатное существование функции в время компиляции, или мне нужно придерживаться #ifdef ? В настоящее время я ограничен C ++ 17, но если есть решение C ++ 20, мне также было бы интересно.

Подробнее здесь: https://stackoverflow.com/questions/797 ... mpile-time

Вернуться в «C++»