gpt4 book ai didi

c++ - 对具有 3 个通用参数的模板使用 std::enable if

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:21 24 4
gpt4 key购买 nike

我已经找到了一些关于 std::enable_if 主题的线程,但遗憾的是我无法将这些示例应用到我的代码中。

template<class From, class To, class Value>
struct convert
{
static Value apply(Value value)
{
return value;
}
};

我希望只有当 FromTo 相同时才激活它,所以我尝试使用

std::enable_if<std::is_same<From,To>::value>::Value

但这行不通。我该怎么做?

我也有这两个专业,让你更好地了解我的问题:

template<class From, class Value>
struct convert<From, kilometer, Value>
{
static Value apply(Value value)
{
doSomething;
}
};

template<class To, class Value>
struct convertImpl <kilometer, To, Value>
{
static Value apply(Value value)
{
doSomethingElse;
}
};

这就是我的模糊问题的来源。现在我正在 static_asserting FromTo 相同的情况,从而使代码可以编译。但我只想在这两者属于同一类型时返回值。

最佳答案

我不认为你想要 SFINAE 为此,根据你的描述,我认为你只是想要一个特化:

template<class From, class To, class Value>
struct convert
{
static Value apply(Value value)
{
Value somethingElse = ...;
return somethingElse;
}
};

template<class From, class Value>
struct convert<From,From,Value>
{
static Value apply(Value value)
{
return value; // SAME
}
};

我承认老实说我看不出这有什么意义,因为 Value 是一个独立于 FromTo 的类型,但是你可能知道一些我不知道的事情。如果您想要完整的结构专门化,这似乎是您的愿望。 See it live .

祝你好运

关于c++ - 对具有 3 个通用参数的模板使用 std::enable if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25850910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com