2
std :: functionとlambdaを比較するにはどうすればよいですか?std :: functionとlambdaの比較
#include <iostream>
#include <functional>
using namespace std;
int main()
{
using Type = void(float, int);
std::function<Type> a;
auto callback = [](float d, int r)
{
cout << d << " " << r << endl;
};
static_assert(std::is_same< Type , decltype(callback) >::value, "Callbacks should be same!");
a(15.7f, 15);
}
ラムダの第parametrの場合にint
されるため - コードは1回の警告でコンパイルだろう。コードを保護する方法は?
こんにちは、ラムダ・キャプチャーこのまたは他のいくつかの変数の場合 - 比較は常にあります偽です。それを修正するには? – rikimaru2013
@ rikimaru2013:キャプチャでは、関数型(それがない)への崩壊を使用することはできません。したがって、一般的な場合には非常に扱いにくくなります。しかし、私が理解しているように、あなたの主な目標は、第一引数のための**変換の縮小**を避けることです。実際の引数は少なくともfloatです。次に、上記のチェックを '(void)sizeof(callback({1.0f}、0)、0);'で置き換えることができます。 –
私は* formal *の引数が少なくともfloatであることを意味しました。ごめんなさい。いくつかの痛み、不明瞭または二重の考え。 –