|
Boost : |
From: Tom Brinkman (reportbase_at_[hidden])
Date: 2008-03-18 23:47:56
As you know, you can't pass a string as a template parameter.
Nevertheless, I have found
that I often need to do just that.
This small utility allows you to pass a string as a parameter. I call
it "static_string".
This could possibly given to one of the google students as an easy
project. Otherwise,
here an example of what I do to solve this problem.
typedef static_string<'H','E','L','P'> help_t;
std::string help = help_t();
BOOST_CHECK(help == "help");
template <typename T>
void foo()
{
std::string str = T();
BOOST_CHECK(str == "help");
}
foo<help_t>();
template <char a=' ',
char b=' ',
char c=' ',
char d=' ',
char e=' ',
char f=' ',
char g=' ',
char h=' '>
char i=' '>
char j=' '>
char k=' '>
char l=' '>
struct static_string
{
operator std::string()
{
char ch[7];
sprintf(ch,"%c%c%c%c%c%c%c%c%c%c%c%c",
a,b,c,d,e,f,g,h,i,h,k,l);
std::string str = ch;
boost::trim(str);
return str;
}
};
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk