Как вызвать ошибку времени компиляции, когда вызывающая сторона передает тип bool функции, принимающей тип float в GCC/CC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как вызвать ошибку времени компиляции, когда вызывающая сторона передает тип bool функции, принимающей тип float в GCC/C

Сообщение Anonymous »

Вопрос:
Какие изменения в приведенном ниже коде можно внести, чтобы вызвать ошибку времени компиляции, если тип bool передается функции, принимающей число с плавающей запятой со следующими ограничениями:
  • Без изменения типа аргумента функции на тип bool, поскольку предполагаемый тип должен быть тип с плавающей запятой, а не bool.
  • Без необходимости использования инструментов статического анализа, таких как Coverity.
  • Без необходимости каких-либо изменений со стороны вызывающей стороны, например перемещения static_assert в вызывающую сторону, просто над местом вызова, включая все другие подобные изменения в месте вызова или над ним.
Однако изменение сигнатуры функции (т. е. обычно выполняемое в заголовочный файл) для функции допустимо.
Если это абсолютно невозможно сделать, укажите причины, сославшись на онлайн-спецификации или другой справочный материал.
Подробнее:
Для следующего кода C++:

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

#include 
#include  // For std::is_same

// Function that only accepts a float
void processFloat(float value) {
// Failed attempt of using a static assertion to ensure the input is of type float:
static_assert(std::is_same::value,
"Error: Function processFloat can only accept float arguments.");
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79362309/how-to-produce-a-compile-time-error-when-caller-passes-a-bool-type-to-a-function[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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