我有一个
templateclass MyClass { public: typedef std::function ...; };
在我尝试使用MyClass
在这种情况下,编译器将typedef扩展为
typedef std::function...;
而且不想合作.
如果void用作R参数,我希望typedef的行为如下:
typedef std::function...;
由于类非常大,我更喜欢type_traits和enable_if-like,而不是为void创建特化.
如评论中所述,您可以使用帮助程序类:
templatestruct MyClassHelper { using function_type = std::function ; }; template <> struct MyClassHelper { using function_type = std::function ; };
然后,在 MyClass
templateclass MyClass { public: using function_type = typename MyClassHelper ::function_type; };