#include <type_traits>
#include <utility>
template < typename T> struct val : T { } ;
// Dependent true type for sfinae purposes
template < typename >
struct sfinae_true : std:: true_type { } ;
template < typename T, typename ... Args >
struct is_list_initializable {
private :
template < typename T1, typename ... Args1 >
static sfinae_true< decltype( T1 { std:: declval < Args1> ( ) ... } ) > test( int ) ;
template < typename , typename ...>
static std:: false_type test( ...) ;
public :
enum { value = val< decltype( test< T, Args...> ( 0 ) ) > :: value } ;
} ;
#include <vector>
struct aggregate { int x; int y; } ;
#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
STATIC_ASSERT( is_list_initializable< std:: vector < int > , int , int > :: value ) ;
STATIC_ASSERT( ! is_list_initializable< std:: vector < int > , int , double > :: value ) ;
STATIC_ASSERT( is_list_initializable< aggregate, int , int > :: value ) ;
int main( ) { }
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8dXRpbGl0eT4KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdmFsIDogVCB7fTsKCi8vIERlcGVuZGVudCB0cnVlIHR5cGUgZm9yIHNmaW5hZSBwdXJwb3Nlcwp0ZW1wbGF0ZSA8dHlwZW5hbWU+CnN0cnVjdCBzZmluYWVfdHJ1ZSA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+CnN0cnVjdCBpc19saXN0X2luaXRpYWxpemFibGUgewpwcml2YXRlOgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZS4uLiBBcmdzMT4KICAgIHN0YXRpYyBzZmluYWVfdHJ1ZTxkZWNsdHlwZShUMSB7IHN0ZDo6ZGVjbHZhbDxBcmdzMT4oKS4uLiB9KT4gdGVzdChpbnQpOwogICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZS4uLj4KICAgIHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgdGVzdCguLi4pOwoKcHVibGljOgogICAgZW51bSB7IHZhbHVlID0gdmFsPGRlY2x0eXBlKHRlc3Q8VCwgQXJncy4uLj4oMCkpPjo6dmFsdWUgfTsKfTsKCiNpbmNsdWRlIDx2ZWN0b3I+CgpzdHJ1Y3QgYWdncmVnYXRlIHsgaW50IHg7IGludCB5OyB9OwoKI2RlZmluZSBTVEFUSUNfQVNTRVJUKC4uLikgc3RhdGljX2Fzc2VydChfX1ZBX0FSR1NfXywgI19fVkFfQVJHU19fKQoKU1RBVElDX0FTU0VSVChpc19saXN0X2luaXRpYWxpemFibGU8c3RkOjp2ZWN0b3I8aW50PiwgaW50LCBpbnQ+Ojp2YWx1ZSk7ClNUQVRJQ19BU1NFUlQoIWlzX2xpc3RfaW5pdGlhbGl6YWJsZTxzdGQ6OnZlY3RvcjxpbnQ+LCBpbnQsIGRvdWJsZT46OnZhbHVlKTsKU1RBVElDX0FTU0VSVChpc19saXN0X2luaXRpYWxpemFibGU8YWdncmVnYXRlLCBpbnQsIGludD46OnZhbHVlKTsKCmludCBtYWluKCkge30K
compilation info
prog.cpp: In instantiation of 'is_list_initializable<std::vector<int>, int, double>':
prog.cpp:29:1: instantiated from here
prog.cpp:14:67: internal compiler error: in cp_tree_equal, at cp/tree.c:2215
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
stdout