模板结构成员的模板参数数量错误(1 应该是 3)

Wrong number of template arguments for member of template struct (1 should be 3)

我有一个这样的结构

namespace Binning_ {   
    template <typename data_type, uint32_t number_of_bins, bool uses_integrals>
    struct Binner {
        void setup();
    /* ... */

现在我要实现它。当然我希望我必须以某种方式实现它

namespace Binning_ {  
    template <typename data_type, uint32_t number_of_bins, bool uses_integrals>
    void Binner<typename data_type, uint32_t number_of_bins, bool uses_integrals>::setup() { 
        /* ... */
    }

编译器一直告诉我模板参数的数量错误。

/home/udo/dev/libraries/dcf77/dcf77.cpp:305:81: error: wrong number of template arguments (1, should be 3)
     void Binner<typename data_type, uint32_t number_of_bins, bool uses_integrals>::setup() {
                                                                                 ^
/home/udo/dev/libraries/dcf77/dcf77.cpp:259:12: error: provided for 'template<class data_type, long unsigned int number_of_bins, bool uses_integrals> struct Binning_::Binner'
     struct Binner {
            ^

但是我不明白。当然,我必须传递 3 个模板参数。但是为什么编译器只计数1?

您不能重复 Binner 的参数列表中的类型:

template <typename data_type, uint32_t number_of_bins, bool uses_integrals>
  void Binner<data_type, number_of_bins, uses_integrals>::setup() { 
        /* ... */
}

应该可以。