我有两个函数。
template <typename... Args>
void foo(Args&&... args) { /* ... */ }
template <typename... Args>
void foo(const std::string& name, Args&&... args) { /* ... */ }
目前,所有调用类似于foo("bar", /* arguments */)
的函数都会尝试先执行第一个函数而不是第二个函数。我想重新排列这些函数,以便SFINAE在第一个函数之前找到第二个函数。我无法使用std::enable_if
来检查字符数组/字符串,因为Args...
包可能包含std::string&
或const char (&) []
。我该怎么做?
void foo()
重载来匹配空参数列表的调用。 - cdhowie