Просто чтобы быть абсолютно уверенным, что Армен не сумасшедший:
#include <type_traits>
int main()
{
static_assert( std::is_same<void(int ), void(const int )>::value, "...");
static_assert(!std::is_same<void(int&), void(const int&)>::value, "...");
}
Это должно прекрасно скомпилироваться на любом стандартном компиляторе с минимальной поддержкой C ++ 0x.Если это не так, компилятор не работает.Например, g ++ 4.5.1 прекрасно принимает этот код.
И, кстати, ваша настоящая проблема в том, что вы определяете Foo
, но вызываете foo
(обратите внимание на другой случай).