新しいVS2012で遊んでいるところですが、おそらく新しいC++11で問題が発生しています。プロジェクト設定でプラットフォームツールセットをVS2010(v100)に設定すると、このコードのピースは完全に機能します。
.h:
typedef std::multimap<unsigned, unsigned> SizeMap;
typedef std::map<unsigned, unsigned> OffsetMap;
private:
inline void _RemoveBlockL(SizeMap::iterator sizeI);
inline void _RemoveBlockL(OffsetMap::iterator offsetI);
.cpp:
inline void Foo::_RemoveBlockL(SizeMap::iterator sizeI)
{
// impementation
}
inline void Foo::_RemoveBlockL(OffsetMap::iterator offsetI)
{
// impementation
}
しかし、VS2012(v110)でこれを変更すると、次のエラーが発生します。
Error 61 error C2535: 'void
Boo::system::Foo::_RemoveBlockL(std::_Tree_iterator<_Mytree>)' : member function already
defined or declared D:\_work\wp-test\boo\system\foo.h
VC ++ 11でオーバーロードが機能しないのはなぜですか?