让我们说我们有
template <typename T>
struct Foo
{};
Run Code Online (Sandbox Code Playgroud)
和
struct Bar
{
template <typename T>
operator Foo<T>() const { return Foo<T>(); }
};
Run Code Online (Sandbox Code Playgroud)
和
template <typename T>
Foo<T> Baz(T const&) { return Foo<T>(); }
Run Code Online (Sandbox Code Playgroud)
然后,因为可以转换为true ? Bar() : Baz(some_expr_of_type_double)类型.此技巧用于查询类型而不进行评估.Foo<double>BarFoo<double>some_expr_of_type_double
确定类型的规则是a ? b : c什么?我很欣赏标准的相关部分(我没有副本).有没有" typeof(b)必须可以转换为typeof(c),反之亦然,毫不含糊"?
c++ ×1