我有以下代码:
template <typename T> void f1( T t ) { std::cout << "f1( " << t << " ) called." << endl; } template <typename T> void f2( T t ) { std::cout << "f2( " << t << " ) called." << endl; } template <typename F,typename T> void call( F && f,T t ) { f( t ); } template <typename T> void foo( T t ) { call( f1<T>,t ); // Why is <T> necessary? // f1(t) is a valid expression! call( f2<T>,t ); } void bar() { foo( 1 ); }
在函数foo()中,我需要指定模板参数,即使f1(t)是一个有效的表达式.这有点破坏了我的代码中的一些可能性.我的问题:
>为什么我需要指定模板参数?
>我如何解决这个限制? (允许C 11或C 14).
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。