我正在尝试为仅模板单元测试库编写一些模板函数,特别是针对Qt.
在这个库中,我有一个可变参数模板,它接收可变数量的对象和仿函数(实际上是Qt5信号),总是彼此相邻配对,因为QObject, signal, etc...然后希望接着是可变数量的信号参数.
// implementation.h
template <typename T, typename U, typename... Sargs, typename... Fargs>
void test_signal_daisy_chain(T* t, void(T::*t_signal)(Fargs...),
U* u, void(U::*u_signal)(Fargs...),
Sargs... sargs,
Fargs... fargs) {...}
// client.cpp
test_signal_daisy_chain(object, &Object::signal1,
object, &Object::signal2,
object, &Object::signal3,
1, 2, 3); // where the signals are defined as void(Object::*)(int, int, int)
Run Code Online (Sandbox Code Playgroud)
其中Fargs...对应于无论是在参数t_signal和u_signal以及所述参数传递给该功能用于测试,并Sargs...对应于可变的量QObject和信号成员函数(void(T::*)(Fargs...))以发射用于测试的明确目的.
不出所料,由于"模板参数推断/替换失败",我得到"没有匹配的功能",我的ClangCodeModel插件警告我预期有6个参数,其中8个被给出.
// implementation.h
template <typename... Fargs>
struct wrapper
{
template <typename T, typename …Run Code Online (Sandbox Code Playgroud)