هیچ مشکلی ایجاد نمی کرد و هنگام فراخوانی کلاس Derived::some_func تابعی که در کلاس پایه تعریف شده است برخلاف انتظار برنامه نویس فراخوانی نخواهد شد و به صورت یک سربار گذاری در نظر گرفته خواهد شد.

که در استاندارد جدید این مشکل برطرف گردیده 

struct Base {
    virtual void some_func(float);
};
 
struct Derived : Base {
    virtual void some_func(int) override; // ill-formed - doesn't override a base class method
};

Lambda

این نوع توابع که در اکثر زبان های مدرن امروزی موجود هستند می توانند ابزار جالبی برای برنامه  نویسی و ایجاد توابع دم دستی باشد .در استاندارد جدید این نوع  توابع که از نوع std::function هستند را می توان مورد استفاده قرار داد .

در مثال زیر یک تابع برای بدست اوردن سری فیبوناپی به این روش تعریف شده است 

std::function<int(int)> lfib = [&lfib](int n) {return n < 2 ? 1 : lfib(n-1) + lfib(n-2);};

شیوه کلی تعریف به این صورت است 

[capture](parameters)->return-type {body}

capture : مشخص کننده نام مورد نظر است

parameters : پارامتر های ورودی

return type:  نوع بازگشتی

و دستورات بدنه نیز در داخل {} جای خواهند گرفت

مثال زیر نحوه استفاده از این نوع توابع را بازگو می کند که کل عناصر یک آرایه را به شکل بزرگ آن تبدیل می کند

int main()
{
   char s[]="Hello World!";
   int Uppercase = 0; //modified by the lambda
   for_each(s, s+sizeof(s), [&Uppercase] (char c) {
    if (isupper(c))
     Uppercase++;
    });
 cout<< Uppercase<<" uppercase letters in: "<< s<<endl;
}