lvalue ссылки
я есть следующая функция шаблона со специализацией:
// Pass the argument through ...
template<typename T, typename U=T>
U convert(T&& t) {
return std::forward<T>(t);
}
// ... but convert std::strings
const char* convert(std::string s) {
return s.c_str();
}
Если у меня тогда есть функция шаблона variadic как:
template<typename ... Args>
void doSomething(Args ... args) {
// Convert parameter pack using convert function above
// and call any other variadic templated function with
// the converted args.
}
Есть ли способ конвертировать пакет параметров с помощью функции convert, как в комментарии?
Моя первоначальная цель состояла в том, чтобы иметь возможность передавать std :: string в '% s' в функции, похожей на printf, без необходимости вручную вызывать .c_str () для строки s. Но я также заинтересован в целом, если это можно сделать простым способом, мои попытки пока не увенчались успехом.