Sidebar 19: The C++ typename Keyword and ACE_TYPENAME MacroThe C++ typename keyword tells the compiler that a symbol (such as PEER_ADDR) is a type. This keyword is necessary when the qualifier is a template type argument (such as ACCEPTOR) because the compiler won't have a concrete class to examine until templates are instantiated, which could be much later in the build process. Since typename is a relatively recent addition to C++, ACE provides a portable way to specify it. The ACE_TYPENAME macro expands to the typename keyword on C++ compilers that support it and to nothing on compilers that don't.