#include <iostream>
#include <type_traits>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
struct StringificationOptions
{
std:: string delimiter;
} ;
#define DEFAULT_OPTIONS {}
template < typename T, template < typename , class = std:: allocator < T> > class ContainerT,
class = typename std:: enable_if < std:: is_arithmetic < T> :: value > :: type >
std:: string js_stringify( std:: string const & name, ContainerT < T> values, StringificationOptions = DEFAULT_OPTIONS)
{
std:: stringstream sstr;
sstr << '"'
<< name
<< "\" :["
;
if ( ! values.empty ( ) )
{
auto bte = values.end ( ) ;
bte-- ;
std:: copy ( values.begin ( ) , bte, std:: ostream_iterator < T> ( sstr, "," ) ) ;
sstr << values.back ( ) ;
}
sstr << ']' ;
return sstr.str ( ) ;
}
std:: string js_stringify( std:: string const & name, std:: string const & value, StringificationOptions = DEFAULT_OPTIONS, bool as_array = false )
{
if ( as_array)
return js_stringify( name, std:: vector < std:: string :: value_type > { value.begin ( ) , value.end ( ) } ) ;
std:: stringstream sstr;
sstr << "\" "
<< name
<< "\" :\" "
<< value
<< "\" "
;
return sstr.str ( ) ;
}
int main( ) {
std:: vector < int > c = { 1 , 2 , 3 } ;
std:: cout << js_stringify( "c" , c) << "\n " ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+CgpzdHJ1Y3QgU3RyaW5naWZpY2F0aW9uT3B0aW9ucwp7CiAgICBzdGQ6OnN0cmluZyBkZWxpbWl0ZXI7Cn07CgojZGVmaW5lIERFRkFVTFRfT1BUSU9OUyB7fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHRlbXBsYXRlIDx0eXBlbmFtZSwgY2xhc3MgPSBzdGQ6OmFsbG9jYXRvciA8VD4gPiBjbGFzcyBDb250YWluZXJULAogICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPjo6dHlwZSA+CnN0ZDo6c3RyaW5nIGpzX3N0cmluZ2lmeShzdGQ6OnN0cmluZyBjb25zdCYgbmFtZSwgQ29udGFpbmVyVCA8VD4gdmFsdWVzLCBTdHJpbmdpZmljYXRpb25PcHRpb25zID0gREVGQVVMVF9PUFRJT05TKQp7CiAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzc3RyOwogICAgc3N0ciA8PCAnIicKICAgICAgICA8PCBuYW1lCiAgICAgICAgPDwgIlwiOlsiCiAgICA7CiAgICBpZiAoIXZhbHVlcy5lbXB0eSgpKQogICAgewogICAgICAgIGF1dG8gYnRlID0gdmFsdWVzLmVuZCgpOwogICAgICAgIGJ0ZS0tOwogICAgICAgIHN0ZDo6Y29weSh2YWx1ZXMuYmVnaW4oKSwgYnRlLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8VD4oc3N0ciwgIiwiKSk7CiAgICAgICAgc3N0ciA8PCB2YWx1ZXMuYmFjaygpOwogICAgfQogICAgc3N0ciA8PCAnXSc7CiAgICByZXR1cm4gc3N0ci5zdHIoKTsKfQoKc3RkOjpzdHJpbmcganNfc3RyaW5naWZ5KHN0ZDo6c3RyaW5nIGNvbnN0JiBuYW1lLCBzdGQ6OnN0cmluZyBjb25zdCYgdmFsdWUsIFN0cmluZ2lmaWNhdGlvbk9wdGlvbnMgPSBERUZBVUxUX09QVElPTlMsIGJvb2wgYXNfYXJyYXkgPSBmYWxzZSkKewogICAgaWYgKGFzX2FycmF5KQogICAgICAgIHJldHVybiBqc19zdHJpbmdpZnkobmFtZSwgc3RkOjp2ZWN0b3IgPHN0ZDo6c3RyaW5nOjp2YWx1ZV90eXBlPiB7dmFsdWUuYmVnaW4oKSwgdmFsdWUuZW5kKCl9KTsKCiAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzc3RyOwogICAgc3N0ciA8PCAiXCIiCiAgICAgICAgPDwgbmFtZQogICAgICAgIDw8ICJcIjpcIiIKICAgICAgICA8PCB2YWx1ZQogICAgICAgIDw8ICJcIiIKICAgIDsKICAgIHJldHVybiBzc3RyLnN0cigpOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yIDxpbnQ+IGMgPSB7MSwgMiwgM307CiAgICBzdGQ6OmNvdXQgPDwganNfc3RyaW5naWZ5KCJjIiwgYykgPDwgIlxuIjsKCXJldHVybiAwOwp9
compilation info
prog.cpp: In function ‘std::string js_stringify(const string&, const string&, StringificationOptions, bool)’:
prog.cpp:39:101: internal compiler error: in create_tmp_var, at gimplify.c:479
return js_stringify(name, std::vector <std::string::value_type> {value.begin(), value.end()});
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
Preprocessed source stored into /home/QMpCIc/ccgtR0HW.out file, please attach this to your bugreport.
stdout