#include <iostream>
using namespace std;
template < class K> struct MyPoint { } ;
template < class K> struct MyLine { } ;
template < class K> struct MyConstruct { } ;
template < class K> struct MyLess { } ;
struct Kernel {
typedef MyPoint< Kernel> Point_2;
typedef MyLine< Kernel> Line_2;
typedef MyConstruct< Kernel> Construct_line_2;
typedef MyLess< Kernel> Less_xy_2;
} ;
// Generate new Kernel
template < class K> struct NewPoint { } ;
template < class K> struct MyLeftTurn { } ;
struct New_kernel : public Kernel {
typedef NewPoint< New_kernel> Point_2;
typedef MyLeftTurn< New_kernel> Left_turn_2;
} ;
int main( )
{
New_kernel:: Point_2 p, q;
New_kernel:: Construct_line_2 construct_line_2;
New_kernel:: Line_2 l = construct_line_2( p, q) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzIEs+IHN0cnVjdCBNeVBvaW50IHsgfTsKdGVtcGxhdGUgPGNsYXNzIEs+IHN0cnVjdCBNeUxpbmUgeyB9Owp0ZW1wbGF0ZSA8Y2xhc3MgSz4gc3RydWN0IE15Q29uc3RydWN0IHsgfTsKdGVtcGxhdGUgPGNsYXNzIEs+IHN0cnVjdCBNeUxlc3MgeyB9OwoKc3RydWN0IEtlcm5lbCB7CiAgICB0eXBlZGVmIE15UG9pbnQ8S2VybmVsPiBQb2ludF8yOwogICAgdHlwZWRlZiBNeUxpbmU8S2VybmVsPiBMaW5lXzI7CiAgICB0eXBlZGVmIE15Q29uc3RydWN0PEtlcm5lbD4gQ29uc3RydWN0X2xpbmVfMjsKICAgIHR5cGVkZWYgTXlMZXNzPEtlcm5lbD4gTGVzc194eV8yOwp9OwoKLy8gR2VuZXJhdGUgbmV3IEtlcm5lbAp0ZW1wbGF0ZSA8Y2xhc3MgSz4gc3RydWN0IE5ld1BvaW50IHsgfTsKdGVtcGxhdGUgPGNsYXNzIEs+IHN0cnVjdCBNeUxlZnRUdXJuIHsgfTsKc3RydWN0IE5ld19rZXJuZWwgOiBwdWJsaWMgS2VybmVsIHsKICAgIHR5cGVkZWYgTmV3UG9pbnQ8TmV3X2tlcm5lbD4gUG9pbnRfMjsKICAgIHR5cGVkZWYgTXlMZWZ0VHVybjxOZXdfa2VybmVsPiBMZWZ0X3R1cm5fMjsKfTsKCmludCBtYWluKCkKewogICAgTmV3X2tlcm5lbDo6UG9pbnRfMiBwLCBxOwogICAgTmV3X2tlcm5lbDo6Q29uc3RydWN0X2xpbmVfMiBjb25zdHJ1Y3RfbGluZV8yOwogICAgTmV3X2tlcm5lbDo6TGluZV8yIGwgPSBjb25zdHJ1Y3RfbGluZV8yKHAsIHEpOwogICAgcmV0dXJuIDA7Cn0=
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:28:49: error: no match for call to ‘(Kernel::Construct_line_2 {aka MyConstruct<Kernel>}) (New_kernel::Point_2&, New_kernel::Point_2&)’
New_kernel::Line_2 l = construct_line_2(p, q);
^
stdout