从VS2010 C ++编译器中排除特定的标准库函数

时间:2013-01-17 10:42:24

标签: c++

有没有办法在VS2010编译器的C ++中停用标准库的某些功能? 例如,如果我想要一个团队不能使用std :: max或std :: min,如果他们仍然这样做,编译器应该给出一个错误。那可能吗?我怎么能这样做?

谢谢和最诚挚的问候, 本

2 个答案:

答案 0 :(得分:0)

别。没有充分的理由,你的例子(std::max)当然不是。

答案 1 :(得分:-1)

您可以重新定义您不想使用的函数,只要它们在编译器将使用您的std库之前被拉入。然后,您可以使用#error标记在编译期间标记它。

namespace std {
    template <class T> const T& min ( const T& a, const T& b )
    {
        #error("Don't use this")
    }
    template <class T, class Compare>
    const T& min ( const T& a, const T& b, Compare comp )
    {
        #error("Don't use this")
    }
}

#include <algorithm>

int main()
{
    return std::min(5, 4);
}