C ++: скрытие некоторых функций

Я переопределил некоторые математические функции (так, чтобы они были быстрее, т. Е. Менее точными, или использовать шаблоны). Я помещаю эти функции в пространство имен, и они работают нормально.

Однако часто случается, что я забываю вызывать функции из своего пространства имен (т.е. внизу моего файла математического заголовка, но это решение не кажется таким уж хорошим: оно полностью нарушает цель пространств имен; Я бы предпочел явным образом сказать, использовать ли функцию из mymath или из std , чтобы я был вынужден выбирать между более точной или более точной функцией без риска забыть об этом.


РЕДАКТИРОВАТЬ :

Многие ответы говорят, что если я использую cos из глобального пространства имен (без использования std или mymath ) , и включить cmath (а не math.h ), компиляция должна завершиться ошибкой.

Я не знаю, что об этом говорится в стандарте, но:

#include <cmath>
int main( ) {
    cos( M_PI );
    return 0;
}

компилируется нормально с GNU GCC ( g ++ ) 4.5.1 (и более ранними версиями).

8
задан peoro 11 December 2010 в 11:36
поделиться