Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: C++
Expertise: Beginner
Sep 11, 2000



Application Security Testing: An Integral Part of DevOps

Template Function Error

Consider the code:

template  class TestClass {
 T testFunc(T*);

TestClass::testFunc(T* p1){
 return sadfs; //actually, here I could
               //write anything I want

The problem is that VC++6 compiler doesn't track any errors in the body of the testFunc (even if it's within the declaration of the TestClass).

When the compiler compiles template's code, it performs only rudimentary syntax checking; it doesn't perform a full-blown semantic analysis as it does with ordinary functions and classes. Therefore, only flagrant syntax errors such as omitting a semicolon after a statement are detected.

Note that this behavior is compliant with the Standard's requirements that a template need not be compilable as long as you don't create an instance thereof. However, it seems like your compiler is still too lenient in this regard because it allows you to omit the return type from the definition of testFunc(). Obviously, this error should be detected and reported. To test your template thoroughly, you should instantiate various specializations, e.g.,

int n; // int specialization
TestClass < int > ti;

std::string s; // string specialization
TestClass < std::string > ts;

And observe the compilation errors that your compiler issues when it instantiates these templates as well as their member functions.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date