Я не понимаю, почему это было бы плохо.Я думаю, что я предпочел бы называть свои функции-члены в соответствии с хорошими именами, чем придумывать трудно запоминающиеся искусственные имена для их устранения неоднозначности.
Некоторые руководства по кодированию написаны так, что этого не может произойти.Вынуждая типы начинаться с буквы верхнего регистра, а функции - с буквы нижнего регистра и тому подобное.
Вы должны избегать вызова функций-членов в соответствии с общими именами шаблонов.Следующая программа некорректна в соответствии с текущим стандартом C ++, хотя некоторые компиляторы склонны (к лучшему) игнорировать эту ошибку.Clang и Comeau дают предупреждение
#include <vector>
using namespace std;
struct A {
template<typename T>
T vector();
};
int main() {
A a;
a.vector<int>(); // ill-formed!
}
"ComeauTest.c", line 11: warning: ambiguous class member reference -- function
template "A::vector" (declared at line 6) used in preference to
class template "std::vector" (declared at line 163 of
"stl_vector.h")
a.vector(); // ill-formed!
^
Было предложено , чтобы избавиться от этого.