Once I saw a statement that “separately compiled C++ templates” is a standard feature that none of available C++ compilers support.
What are those “separately compiled templates” and why are they ignored?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
C++98 introduced the
exportkeyword which allowed you to have the definition of a function template in another translation unit, with only its declaration needed to compile code that uses it. (See here if you are hazy on what’s a definition vs. a declaration. Basically, you could have the function templates implementation in another translation unit.) That’s just as it is with other functions.However, only compilers using EDG’s compiler front end ever supported it, and not all of them even did officially. In fact, the only compiler I know that officially supported it was Comeau C++. That’s why the keyword, unfortunately, got removed from C++11.
I think it’s safe to say that it is expected that a proper module system would cure C++ from many of its shortcomings that surround the whole compilation model, but, again unfortunately, a module system was not considered something that could be tackled in a reasonable amount of time for C++11. We will have to hope for the next version of the standard.