
C++ 速查手冊
10.3 - 樣板別名
C++11 中,可用關鍵字 using 替樣板取別名 (alias) ,舉例如下
#include <iostream>
template <typename T> class Demo {
public:
    Demo(const T& a, const T& b) {
        this->a = a;
        this->b = b;
    }
    T do_something() {
        return a + b;
    }
private:
    T a;
    T b;
};
template <typename T> using D = Demo<T>;
int main() {
    D<int> d1(20, 25);
    std::cout << d1.do_something() << std::endl;
    D<double> d2(5.2, 3.95);
    std::cout << d2.do_something() << std::endl;
    D<char> d3('1', '2');
    std::cout << d3.do_something()<< std::endl;
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u1003.cpp
   功能:示範 C++ 的樣板
   作者:張凱慶*/第 19 行,使用 using 將 Demo 取別名 D
template <typename T> using D = Demo<T>;因此在 main() 是用 D 而非 Demo
D<int> d1(20, 25);
std::cout << d1.do_something() << std::endl;
D<double> d2(5.2, 3.95);
std::cout << d2.do_something() << std::endl;
D<char> d3('1', '2');
std::cout << d3.do_something()<< std::endl;編譯執行,結果如下
| $ g++ u1003.cpp -std=c++0x | 
| $ ./a.out | 
| 45 | 
| 9.15 | 
| c | 
| $ | 
