Проверьте бесплатное существование во время компиляции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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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