#include <type_traits>
#include <string>
#include <sstream>
#include <map>
#include <functional>
#include <stdexcept>
#include <memory>
#include <set>
#include <algorithm>
#include <fstream>
#include <algorithm>
#include <iostream>
#include <array>
#include <iterator>
#include <clocale>
#include <iostream>
#include <ostream>
template < typename T, typename V>
decltype( new T( * ( ( V* ) 0 ) ) ) create_( V param, int ) {
std:: cout << "T(1)\n " ;
return new T( param) ;
}
template < typename T, typename V>
T * create_( V...) {
std:: cout << "T\n " ;
return new T( ) ;
}
template < typename T, typename V>
T* create( V param)
{
return create_< T> ( param, 7 ) ;
}
struct S{
S( char c) {
std:: cout << "char: " << c << "\n " ;
}
S( ) { }
} ;
struct G
{
} ;
int main( )
{
create< S> ( 'd' ) ;
create< G> ( 'b' ) ;
}
CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGNsb2NhbGU+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG9zdHJlYW0+CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+CmRlY2x0eXBlKG5ldyBUKCooKFYqKTApKSkgY3JlYXRlXyhWIHBhcmFtLCBpbnQpIHsgCiAgICBzdGQ6OmNvdXQgPDwgIlQoMSlcbiI7CiAgICByZXR1cm4gbmV3IFQocGFyYW0pOyAKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+ClQgKiBjcmVhdGVfKFYuLi4pIHsgCiAgICBzdGQ6OmNvdXQgPDwgIlRcbiI7CiAgICByZXR1cm4gbmV3IFQoKTsgCn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgpUKiBjcmVhdGUoViBwYXJhbSkKewogICAgcmV0dXJuIGNyZWF0ZV88VD4ocGFyYW0sIDcpOwp9CgpzdHJ1Y3QgU3sKICAgIFMoY2hhciBjKXsKICAgICAgICBzdGQ6OmNvdXQgPDwgImNoYXI6ICIgPDwgYyA8PCJcbiI7CiAgICB9CiAgICBTKCl7fQp9OwoKc3RydWN0IEcKewoKfTsgIAoKaW50IG1haW4oKQp7CiAgICBjcmVhdGU8Uz4oJ2QnKTsKICAgIGNyZWF0ZTxHPignYicpOwp9
compilation info
prog.cpp: In instantiation of 'decltype (new T) create_(V, int) [with T = S, V = char, decltype (new T) = S*]':
prog.cpp:36:31: instantiated from 'T* create(V) [with T = S, V = char]'
prog.cpp:53:18: instantiated from here
prog.cpp:22:27: sorry, unimplemented: mangling new-expression
stdout