При получении max var какая разница между использованием функции и макроса

читая код combase.cpp, я нахожу следующее:

/* We have to ensure that we DON'T use a max macro, since these will typically   */                    
/* lead to one of the parameters being evaluated twice.  Since we are worried    */                    
/* about concurrency, we can't afford to access the m_cRef twice since we can't  */                    
/* afford to run the risk that its value having changed between accesses.        */                    

    template<class T> inline static T ourmax( const T & a, const T & b )                                   
    {
        return a > b ? a : b;       
    } 

Я не понимаю, почему "макрокоманда max" приводит к тому, что один из параметров оценивается дважды "?

Ответы на вопрос(2)

Ваш ответ на вопрос