从这个link (1056.模板别名,成员定义和当前实例化)我意识到,我们可以在模板中创建别名,例如我们可以如下所示< / p>
template<typename T>
using Vec = std::vector<int>
如何为模板方法创建别名,我在下面尝试但是它会抛出编译错误error: missing template arguments before '.' token
#include <iostream>
using namespace std;
template <class T> struct A
{
float g(T x){return(x*0.01);}
};
template <class T> using B = A<T>;
int main()
{
B.g<int>(10);
// your code goes here
return 0;
}
我不知道如何为模板方法创建别名,请有人详述。
答案 0 :(得分:4)
你的队伍中有很少的错误,正确的应该是:
B<int>().g(10);
即。您创建一个B<int>
对象并调用它的函数g
。
通过使用clang编译代码,它可以提供非常精确的错误消息:
tmpl.cpp:13:5: error: use of class template 'B' requires template arguments
B.g<int>(10);
^
tmpl.cpp:9:20: note: template is declared here
template <class T> using B = A<T>;
~~~~~~~~~~~~~~~~~~ ^
tmpl.cpp:13:6: error: cannot use dot operator on a type
B.g<int>(10);
^