[问题] template argumet deduction fail

楼主: notBeing (read and be read)   2016-09-30 00:33:26
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
g++, C++98
问题(Question):
function template无法从传入的argument推导出对应的parameter type
程式码(Code):(请善用置底文网页, 记得排版)
/* Header.h */
class A
{
public:
enum E_A
{
eNone,
//...
};
typedef enum E_A E;
};
class GG
{
public:
template <class L>
bool Foo(typename L::E eLE)
{
//...
}
};
/* Main.cpp */
#include "Header.h"
int main()
{
GG objGG;
objGG.Foo<A>(A::eNone); // ok
objGG.Foo(A::eNone); // fail
return 0;
}
补充说明(Supplement):Compiler Info
1. no matching function for call to ‘GG::Foo(A::E_A)’
2. template argument deduction/substitution failed:
3. couldn't deduce template parameter ‘L’
请问deduction的机制中,是否在文件上有特别指明A::eNone这种形式的argument,
无法deduce出A的描述?谢谢
作者: CoNsTaR ((const *))   2016-09-30 07:10:00
E_A 不在 GG 的 scope 中啊

Links booklink

Contact Us: admin [ a t ] ucptt.com