Сегодня я обнаружил, что можно объявить функцию в заголовке с одной подписью и реализовать ее в исходном файле с другой (похожей) подписью. Например, вот так:
// 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 Я компилирую с педантичным и максимально возможным уровнем предупреждений, но все равно не получаю предупреждения или ошибки.