如何为模板方法创建别名

时间:2016-06-29 06:54:07

标签: c++ c++11 visual-c++ c++14

从这个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;
}

我不知道如何为模板方法创建别名,请有人详述。

1 个答案:

答案 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);
     ^