Определение функции с другой подписью

Сегодня я обнаружил, что можно объявить функцию в заголовке с одной подписью и реализовать ее в исходном файле с другой (похожей) подписью. Например, вот так:

// 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 Я компилирую с педантичным и максимально возможным уровнем предупреждений, но все равно не получаю предупреждения или ошибки.

5
задан BЈовић 18 November 2010 в 08:36
поделиться