D>а вот есть 10.3.2 (текст приводить не буду, только код), который говорит что зря они это делают
уффф, этот-то пункт как относится к исходному примеру?
D>D>struct a{
D> virtual void f();
D>};
D>struct b : virtual public a{
D> virtual void f();
D>};
D>struct c : b, virtual a{
D> using a::f;
D>};
D>int main()
D>{
D> using namespace std;
D> с d;
D> d.f(); //b по стандарту
D> vector<с> v;
D> for_each(v.begin(), v.end(), mem_fun_ref(&с::f));//угадайте какая?
D>}
D>
а::f. а ты как думаешь?
D>ладно. спорить можем до бесконечности всё равно ни к чему не приведёт. как выясняется у разработчиков компилеров тоже нет единого мнения.
Даже у VS нет единого мнения, как он должен себя вести. Например, если в исходном примере заменить все статическими функциями-членами, то &Derived::test ему не нравится, тогда как Derived::test() уже нормально.
Да, к тому же мы по-разному читаем стандарт.