假设我有一个 type F
。我知道那F
是空的,但F
没有默认构造函数,所以我不能F()
用来构造它。有没有办法获得类型的有效对象F
?我似乎记得提到过,有一种方法可以神秘地使用联合。理想情况下,这将是constexpr
友好的。
这很有用,因为无捕获 lambda 仅在 C++20 中获得了默认构造函数。在 C++17 中,如果我想“将 lambda 传递给模板”并在没有它的实例的情况下调用该 lambda,我需要能够从类型中重建它。
auto const f = [](int x) { return x; };
using F = decltype(f);
static_assert(std::is_empty_v<F>);
static_assert(!std::is_default_constructible_v<F>);
magically-construct-an-F(42);