#include <iostream>
#define P(x) std::cout<<x<<std::endl
struct A { } ;
struct B { } ;
struct Yoba
{
template < typename ReturnT, typename ParamT>
ReturnT create( ParamT) ;
} ;
template <> inline
A Yoba:: create < A, ParamT> ( ParamT x)
{
return A( ) ;
}
template <> inline
B Yoba:: create < B, ParamT> ( ParamT x)
{
return B( ) ;
}
int main( )
{
Yoba y;
y.create < A> ( 1 ) ;
y.create < B> ( 'a' ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIFAoeCkgc3RkOjpjb3V0PDx4PDxzdGQ6OmVuZGwKCnN0cnVjdCBBIHt9OwpzdHJ1Y3QgQiB7fTsKCnN0cnVjdCBZb2JhCnsKICAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVCwgdHlwZW5hbWUgUGFyYW1UPiAKICAgUmV0dXJuVCBjcmVhdGUoUGFyYW1UKTsKfTsKCnRlbXBsYXRlPD4gaW5saW5lCkEgWW9iYTo6Y3JlYXRlPEEsIFBhcmFtVD4oUGFyYW1UIHgpCnsKICAgcmV0dXJuIEEoKTsKfSAgCgp0ZW1wbGF0ZTw+IGlubGluZQpCIFlvYmE6OmNyZWF0ZTxCLCBQYXJhbVQ+KFBhcmFtVCB4KQp7CiAgIHJldHVybiBCKCk7Cn0gIAoKCmludCBtYWluKCkKewogICBZb2JhIHk7CiAgIHkuY3JlYXRlPEE+KDEpOwogICB5LmNyZWF0ZTxCPignYScpOwp9
compilation info
prog.cpp:14:19: error: use of undeclared identifier 'ParamT'
A Yoba::create<A, ParamT>(ParamT x)
^
prog.cpp:14:9: error: expected unqualified-id
A Yoba::create<A, ParamT>(ParamT x)
^
prog.cpp:14:27: error: unknown type name 'ParamT'
A Yoba::create<A, ParamT>(ParamT x)
^
3 errors generated.
stdout