大佬教程收集整理的这篇文章主要介绍了c – 通用的lambda,继承和尾随返回类型:这个有效的代码?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图回复another answer,而在玩羊羔和继承时发现了一些困难.
考虑以下几个最小例子:
template<typename Func> struct Base: Func { Base(Func funC): Func{func} {} template<typename... Args> auto operator()(Args... args) -> decltype(Func::operator()(args...),void()) { Func::operator()(args...); } }; int main() { auto l = [](auto &&) {}; Base<decltype(l)> mixin{l}; mixin(0); }
GCC 6.1 compiles it,clang 4.0 crashes.
注意,使用以下定义,两个编译都很好:
auto l = [](int) {};
这个有效的代码是否正在做标准不允许的事情?
#include <utility> #include <iostream> template <typename F> struct Base : F { Base (F f) : F {f} {} template <typename... Args> decltype(auto) operator () (Args&&... args) { std::cout << "("; F::operator () (std::forWARD<Args> (args)...); std::cout << ")" << std::endl; } }; int main () { auto l = [] (auto && i) { std::cout << i; }; Base<decltype(l)> mixin {l}; mixin (0); return 0; }
以上是大佬教程为你收集整理的c – 通用的lambda,继承和尾随返回类型:这个有效的代码?全部内容,希望文章能够帮你解决c – 通用的lambda,继承和尾随返回类型:这个有效的代码?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。