That would use the copy constructor. In this case there is no actual need for a copy, so you might just use get_word_count(s1).
And yes, it would work for all kinds of constructors:
Code:
string s("hello");
get_word_count(string()); //default constructor (empty string)
get_word_count(string(s)); //using copy constructor
get_word_count(string("Hello")); //from const char*
get_word_count(string("hello", 3)); //first three characters of "hello"
get_word_count(string(5, 'a')); //= "aaaaa"
get_word_count(string(s.begin(), s.begin() + 2)); //from range = "he"
get_word_count(string(s, 1, 3)); //substring of s = "elo"