相关疑难解决方法(0)

是否可以编写模板来检查函数的存在?

是否可以编写一个模板来改变行为,具体取决于是否在类上定义了某个成员函数?

这是我想写的一个简单例子:

template<class T>
std::string optionalToString(T* obj)
{
    if (FUNCTION_EXISTS(T->toString))
        return obj->toString();
    else
        return "toString not defined";
}
Run Code Online (Sandbox Code Playgroud)

所以,如果class T已经toString()确定的话,就使用它; 否则,它没有.我不知道怎么做的神奇部分是"FUNCTION_EXISTS"部分.

c++ templates sfinae template-meta-programming

458
推荐指数
20
解决办法
14万
查看次数

是否可以编写c ++模板/宏来检查两个函数是否具有相同的签名

是否可以编写c ++模板/宏来检查两个函数是否具有相同的签名(返回类型和参数列表)?

这是一个我想如何使用它的简单示例:

int foo(const std::string& s) {...}
int bar(const std::string& s) {...}

if (SAME_SIGNATURES(foo, bar))
{
    // do something useful... make Qt signal-slot connection for example...
}
else
{
    // signatures mismatch.. report a problem or something...
}
Run Code Online (Sandbox Code Playgroud)

那么它有可能或者只是一个白日梦吗?

PS其实我对c ++ 2003标准感兴趣.

c++ templates sfinae c-preprocessor

4
推荐指数
1
解决办法
894
查看次数