Zostało to zasugerowane w rozwoju C ++, a Stroustrup omawia to w swoim „Design and Evolution of C ++”, na stronach 153 i następnych. Propozycja była dobrze sformułowana i opierała się na wcześniejszych doświadczeniach z Adą. Nie został przyjęty.
Najważniejszym powodem było to, że nikt nie chciał zachęcać do funkcji o dużej liczbie parametrów. Każda dodatkowa funkcja w języku kosztuje coś, a nie było potrzeby dodawania funkcji ułatwiającej pisanie złych programów.
Pojawiły się także pytania o to, jakie były kanoniczne nazwy parametrów, szczególnie w zwykłej konwencji plików nagłówkowych i kodowych. Niektóre organizacje miały dłuższe i bardziej opisowe nazwy parametrów w pliku .h oraz krótsze i łatwiejsze do wpisania nazwy w pliku .cpp (sufiksy plików zastępczych według potrzeb). Wymaganie, aby były takie same, wiązałoby się z dodatkowymi kosztami kompilacji, a pomieszanie nazw między plikami źródłowymi może powodować subtelne błędy.
Można to również obsłużyć, używając obiektów zamiast wywołań funkcji. Zamiast wywołania GetWindow z tuzinem parametrów, utwórz klasę Window z tuzinem prywatnych zmiennych i dodaj settery w razie potrzeby. Łącząc setery, można napisać coś takiego my_window.SetColor(green).SetBorder(true).SetBorderSize(3);. Możliwe jest również posiadanie różnych funkcji z różnymi ustawieniami domyślnymi, które wywołują funkcję, która faktycznie działa.
Jeśli martwisz się tylko efektem dokumentacji contentFetcher.DownloadNote(note, manual : true);, zawsze możesz napisać coś takiego contentFetcher.DownloadNote(note, /* manual */ true);, więc nie jest to nawet bardzo pomocne w dokumentacji.