Dependent Origination

C++: Want a string literal as a template parameter?

Posted on: June 2, 2012

You’ve come to the right place!

template<typename T, string& url, int port> void your_function(param1_type param1 ….);

Then declare your strings in the global scope:

string prod_url = “your string literal”;

then instantiate:

your_function<T, prod_url, 443>(param1, param2, param3,…);

The compiler will be happy!

Note:

1. no amount of const, constexpr, static can make the compiler happy so the literals have to be declared in the global scope — the compiler apparently just wants it to be there, to be there, to be there.

2. i couldn’t make const char* work (instead of a string&) as a template parameter type.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

June 2012
M T W T F S S
« May   Jul »
 123
45678910
11121314151617
18192021222324
252627282930  

Twitter

Flickr Photos

%d bloggers like this: