2
可変テンプレート引数が与えられたものと同じテンプレートベースのクラスを作成したいとします。std::function
エラーC2061:構文エラー:識別子 'ArgsCopy' をstd :: functionからテンプレート引数をコピーする
using cb_test = std::function<void(int, float, std::string)>;
Forwarder<cb_test> fwd;
fwd(5, 3.2, "hello");
Visual Studioは、コンパイル・エラーがスローされます、次のように例
template <typename T>
struct function_traits : public function_traits<decltype(&T::operator())> {};
template <typename ClassType, typename ReturnType, typename... Args>
struct function_traits<ReturnType(ClassType::*)(Args...) const> {
template <template<typename... TArgs> class T>
using ArgsCopy = T<Args...>;
};
template <typename... Args>
class _forwarder {
public:
using cb = std::function<void(Args...)>;
void operator()(Args... args) {
my_cb(args...);
}
private:
cb my_cb;
};
template <typename T>
using Forwarder = function_traits<T>::ArgsCopy<_forwarder>;
のために私は、このクラスを使用します。これをどうやって解決するのですか?
'テンプレート Forwarder = function_traitsを使用して ::テンプレートArgsCopy <_forwarder>; ' –
aschepler