提问人:mouse_00 提问时间:7/21/2023 更新时间:7/21/2023 访问量:44
定义模板规范时无法推断的模板参数
Template parameters that cannot be deduced when template specification is defined
问:
我正在制作一个模板来指定“好”和“不好”类型。
我想指定模板类模板方法的返回类型很好,但得到错误。
这是我当前的代码(参见 godbolt https://godbolt.org/z/13xbEYYaa):struct
Template parameters that cannot be deduced
#include <iostream>
#include <type_traits>
template <typename T, typename... Args>
struct foo
{
foo(const T&, Args&&...)
{
};
};
template <typename T>
struct bar
{
template <typename... Args>
auto func(Args&&... args)
{
return foo<bar,Args...>(*this, std::forward<Args>(args)...);
}
};
template <typename T, typename... Args>
using bar_func_return_type = decltype(std::declval<bar<T>>().func(std::declval<Args>()...));
template <typename T>
struct is_good_type : std::false_type {};
template <typename T, typename... Args>
struct is_good_type<bar_func_return_type<T, Args...>> : std::true_type {};
int main()
{
static_assert(is_good_type<int, float, double>::value);
return 0;
}
我应该怎么做才能制定所需的规范,而不是为类制定规范,这实际上是方法的返回类型,因为返回类型可以更改?foo<T, Args...>
bar::func
答: 暂无答案
评论
static constexpre bool
if constexpr
bar<T>::func<Args...>
foo
int
is_foo