1

私は以下をコンパイルしようとしています:

#include <vector>
#include <array>

template <typename T>
void sort(T &container) {}

template <typename F, typename T, typename ...Tail>
void sort_containers(F sort_func, T &container, Tail &...tail) {
    sort_func(container);
    sort_containers(sort_func, tail...);
}

template <typename F, typename T>
void sort_containers(F sort_func, T &container) {
    sort_func(container);
}

int main() {
    std::vector<int> x = {1,2,3};
    std::vector<double> y = {1.0, 2.0, 3.0};
    std::array<char, 3> z = {{'d' , 'b', 'c'}};
    sort_containers(sort, x, y, z);
}

これにより、g++4.8 で次のコンパイラ エラーが発生します。

error: no matching function for call to 
‘sort_containers(<unresolved overloaded function type>, 
std::vector<int>&, std::vector<double>&, std::array<char, 3u>&)’

sortに渡すときにテンプレート パラメータを指定する必要があることは理解していますsort_containersが、可変個引数テンプレート関数が存在する場合にこれがどのように機能するかはわかりません。

4

1 に答える 1