Я недавно просматривал исходный код для SGI STL и нашел много мест, где он использовал операторы вызовов, которые я не мог понять, например:
typedef typename _type_traits<T1>::is_POD_type is_POD;
_uninitialized_fill_aux(first, last, v, is_POD());
В конце есть операция вызова (is_POD ()).
Я знаю, is_POD
это тип, и он определяется следующим образом:
struct _true_type{};
struct _false_type{};
template <class T>
struct _type_traits{
...
...
typedef _false_type is_POD_type;
};
Как я вижу, is_POD
это тип, но он не перегружен()
, как он может звонить ()
?
Что означает функция вызова в этом месте?
Большое спасибо!