関数が呼び出されるたびに新しい型を生成できますか? は、私はそれぞれのラムダは、独自のユニークなタイプを持っていることを読んだので、私は試してみた:C++で関数が呼び出されるたびに新しい型を生成する
template<class T, class F> struct Tag { };
template<class T>
auto func(const T &t) -> auto
{
auto f = []() {};
return Tag<T, decltype(f)>();
}
static_assert(!std::is_same_v<decltype(func(0)), decltype(func(1))>, "type should be different.");
しかし、static_assertが失敗しました。
func()
は、タイプT
と値t
に関係なくfunc()が呼び出されるたびに異なるタイプの値を返すことができますか?