Сопоставление вызываемых подписей, запрещающее неявное преобразование параметров.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сопоставление вызываемых подписей, запрещающее неявное преобразование параметров.

Сообщение Anonymous »

Я использую несколько «мета-методов» для обнаружения сигнатур вызовов во время компиляции. Хотя это решение помогает мне, это только из-за моего довольно специфичного выбора подписи. Это решение не является достаточно универсальным, как показано в приведенном ниже коде, неявное преобразование может легко привести к ложному срабатыванию из-за вседозволенности std::is_invocable....

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

#include 
#include 

template 
static constexpr auto canCallWith() {
return std::is_invocable_v;
}

template 
static constexpr auto canRetWith() {
return std::is_same::value;
}

template 
static constexpr auto sigmatch() {
if constexpr (canCallWith()) {
if constexpr (canRetWith()) { return true; }
}
return false;
}

#include 

void foo(int, double = 56) {}

int main() {

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79365439/callable-signature-matching-that-prohibits-implicit-conversion-of-parameters[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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