目前我有两个功能:
template<typename Type> bool f(Type* x);
template<typename... List> bool f(std::tuple<List...>* x);
Run Code Online (Sandbox Code Playgroud)
有没有办法将这两个函数与一个额外的模板参数合并,该参数指示传递的类型是否为元组?
template<typename Type, bool IsTuple = /* SOMETHING */> bool f(Type* x);
Run Code Online (Sandbox Code Playgroud) 我有一个演员这样声明:
template<typename... Coords>
MyClass<T>(vector<T> values, Coords... coords) { /* code */ }
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
template<typename... Coords>
MyClass<T>(Coords... coords, vector<T> values) { /* code */ }
Run Code Online (Sandbox Code Playgroud)
但标准要求可变参数是最后一个。如果我写类似的东西
template<typename... Args>
MyClass<T>(Args... coordsThenValues) { /* code */ }
Run Code Online (Sandbox Code Playgroud)
我将如何拆分coordsThenValues为最后一个参数包Coords... coords和最后一个参数vector<T> values?