Сегодня я обнаружил, что можно объявить функцию в заголовке с одной сигнатурой и реализовать ее в исходном файле с другой (аналогичной) сигнатурой. Например, например:Определение функции с различной подписью
// THE HEADER example.hpp
#ifndef EXAMPLE_HPP
#define EXAMPLE_HPP
int foo(const int v);
#endif
// THE SOURCE FILE example.cpp
#include "example.hpp"
int foo(int v) // missing const
{
return ++v;
}
Это разрешено? Или это расширение компилятора (я использую g ++ 4.3.0)?
EDIT Я собираю с педантичным и максимально возможным уровнем предупреждения, и я до сих пор не получаю предупреждение или ошибку.
Вы прочитали стандарт? – Abyx