10.9.2048.0
No, it is not checked.
I apologize, I left out an important reproduction step it seems. The problem is related to templates, and seperating the declaration and implementation of those. I've seen it happen with function templates, but it is not as easy to reproduce, it is very easy with classes. Stick the following in a header file, and then call TestFunc() in a source file. Let me know if you still cannot reproduce, and I will send a project.
template<class t>
struct Test
{
void TestFunc(int a);
};
template<class t>
void Test<t>::TestFunc(int a)
{
}
edit: It works the same without the template parameter.
struct Test
{
void TestFunc(int a);
};
void Test::TestFunc(int a)
{
}