【发布时间】:2015-11-02 05:23:47
【问题描述】:
我正在尝试编写一个模板,该模板将从 AliasSeq 的函数返回 AliasSeq 的返回类型。但是在我的代码中,当我尝试编译它时,它告诉我Error: type (...) has no value
这是我到目前为止的代码:
template ReturnTypesFromFunctions(Functions...)
{
auto ReturnTypesFromFunctions()
{
alias functions = AliasSeq!();
foreach(fn; Functions)
{
functions = AliasSeq!(functions, ReturnType!fn);
}
return functions;
}
}
基本上我想要做的是从这个自动生成一个AliasSeq 数组:
int a();
bool b();
double c();
alias functions = AliasSeq!(a, b, c);
alias returnTypes = ReturnTypesFromFunctions!functions;
// returnTypes -> AliasSeq [int, bool, double]
但是使用当前代码会导致这些错误:
Error: type (int) has no value
Error: type (bool) has no value
Error: type (double) has no value
Error: type () has no value
这可能与auto 有关,因为编译器无法从函数别名中找到类型。但是没有可以代表 AliasSeq 的类型,因为该函数本身用于查找类型,因此我可以在其他地方使用它。
【问题讨论】: