我有以下
template <typename F, typename A0>
struct ResultOf {
typedef typename decltype(boost::declval<F>()(boost::declval<A0>())) Type;
};
编写该文件是为了使VS2010可以具有适用于特定用例的 result_of 。它可以在vs2015,vs2013和vs2010下运行,但是在gcc下会出现编译错误
error: expected nested-name-specifier before ‘decltype’
typedef typename decltype(boost::declval<F>()(boost::declval<A0>())) Type;
这里是否有明显的小解决方案?
答案 0 :(得分:2)
typename
关键字。当编译器无法确定T::value_type
是否为类型时,它尤其用于表示从属类型,例如value_type
。当前没有依赖类型。
答案 1 :(得分:2)
删除typename
适用于clang,gcc和现代msvc: