语法帮助。模板函数对象中的模板运算符()
Syntax help. Template operator() in template function object
我需要 运行 我在下面的 main() 中尝试 运行 的正确语法是什么?
#include <iostream>
#include <vector>
template <int... Is>
void foo() {
std::vector<int> v{Is...};
for (int x : v) std::cout << x << ' ';
}
template <int... Is>
struct Foo {
template <typename T, typename... Ts>
void operator()() const {
std::cout << sizeof(T) << ' ' << sizeof...(Ts) << '\n';
foo<Is...>();
}
};
int main() {
// Foo<0,1,2>()<bool, char, long>();
Foo<0,1,2> f;
f<bool, char, long>(); // Won't compile
}
我认为您不能为运算符重载手动指定模板参数。但是,您可以写
f.operator()<bool, char, long>();
我需要 运行 我在下面的 main() 中尝试 运行 的正确语法是什么?
#include <iostream>
#include <vector>
template <int... Is>
void foo() {
std::vector<int> v{Is...};
for (int x : v) std::cout << x << ' ';
}
template <int... Is>
struct Foo {
template <typename T, typename... Ts>
void operator()() const {
std::cout << sizeof(T) << ' ' << sizeof...(Ts) << '\n';
foo<Is...>();
}
};
int main() {
// Foo<0,1,2>()<bool, char, long>();
Foo<0,1,2> f;
f<bool, char, long>(); // Won't compile
}
我认为您不能为运算符重载手动指定模板参数。但是,您可以写
f.operator()<bool, char, long>();