Wednesday 22 November 2017

Storing C++ template function definitions in a .CPP file

itemprop="text">

I have some template code that I would
prefer to have stored in a CPP file instead of inline in the header. I know this can be
done as long as you know which template types will be used. For
example:



.h
file



class
foo
{
public:
template T>

void do(const T&
t);
};


.cpp
file



template

void foo::do(const T& t)
{
// Do
something with t

}

template void
foo::do(const int&);
template void
foo::do(const
std::string&);


Note
the last two lines - the foo::do template function is only used with ints and
std::strings, so those definitions mean the app will
link.



My question is - is this a nasty hack or
will this work with other compilers/linkers? I am only using this code with VS2008 at
the moment but will be wanting to port to other environments.



Answer





The problem you describe can be
solved by defining the template in the header, or via the approach you describe
above.



I recommend reading the following points
from the C++ FAQ
Lite
:





They go
into a lot of detail about these (and other) template issues.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...