【发布时间】:2017-08-04 15:35:39
【问题描述】:
我有两个功能
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 (&) []。我该怎么做?
【问题讨论】:
标签: c++ c++14 sfinae variadic-functions enable-if