相关疑难解决方法(0)

"参数"与"参数"

可能重复:
参数或参数?

我得到了参数参数类型的混合,并没有真正注意何时使用一个以及何时使用另一个.

你能告诉我吗?

language-agnostic parameters arguments terminology function

541
推荐指数
1
解决办法
28万
查看次数

如何确定可调用对象的函数签名?

在C++中有没有办法确定可调用对象的函数签名?

考虑以下:

template< typename F >
void fun(F f)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

让我们假设fun只用可调用的"东西"来调用它.

在里面fun我想知道什么是功能的签名f.这应该适用于函数指针,引用,包装器,lambdas,绑定,函数对象(假设它们只有一个operator ())等等.我受限于Visual Studio 2010 SP 1,但即使不使用该编译器,我也对标准解决方案感兴趣.

(函数签名Return_Type ([Arg1_Type [, Arg2_Type [, ... ] ] ]);与std::function/ boost::function.相同)

知道至少返回值的部分解决方案具有f一定的价值.(我已经尝试std::result_of但无论如何都无法让它工作.)

c++ metaprogramming

17
推荐指数
1
解决办法
5302
查看次数

C ++编译时检查可以使用某种类型的参数调用重载函数

考虑重载函数

void f(int);
void f(long);
void f(double);
void f(MyClass);
Run Code Online (Sandbox Code Playgroud)

以及未知参数类型的模板类中的方法

template <class T>
struct C {
  void method(T arg) { ... }
};
Run Code Online (Sandbox Code Playgroud)

我想在编译时检查是否有一个版本f可以arg作为参数。

template <class T>
struct C {
  void method(T arg) { 
    if constexpr (CAN_BE_CALLED(f, arg)) {
      f(arg);
    } else {
      g();
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

有可能这样做吗?我想这个这个,但编译器抱怨没有得到解决重载函数类型

c++

5
推荐指数
1
解决办法
540
查看次数

C++ 11静态断言的相等类型?

如何static_assert在C++ 11中使用EqualityComparable概念模板类型?

c++ templates equality static-assert c++11

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