はじめまして、C++メタプログラミングを最近学び始めたものです。  
テンプレートクラスのメンバーの定義の方法（または、フォーマット）についての質問です。  
より具体的には、以下のコードの *** (1) ***
の部分、template<>、が必要かまたはあれば意味が変わるのかということについてです。template<>があってもなくてもコンパイラからエラーが出ないので混乱してしまいました。とても基本的な質問かもしれませんがよろしくお願いします。

```

    template<typename T_Self>
    class FrameClass {
    public:
        bool frameFunc(const T_Self& org, const T_Self& cmp) const override;
    };
    
    class TestClass {
    public:
        using Self = TestClass;
    private:
        bool testfunc(const Self& cmp) const;
        int a = 1;
    };
    
    template<>
    class FrameClass<TestClass> {
    public:
        using Type = TestClass;
        bool frameFunc(const Type& org, const Type& cmp) const override;
    };
    
    template<>  // *** (1) ***
    bool FrameClass<TestClass>::frameFunc(const Type& org, const Type& cmp) const {
        bool diff_flg=false;
        if ( ( diff_flg = org.testfunc(cmp) ) ) {
            return diff_flg;
        }
        return diff_flg;
    }
    
```
CC BY-SA 3.0
2015-09-26T02:07:15.720
16936
2015-09-26T02:07:15.720
12453
question
c++ templates
テンプレートクラスのメンバーの定義の方法