prog.cpp:25:35: error: type/value mismatch at argument 2 in template parameter list for ‘template<unsigned int N, class types> using type_at_t = typename type_at::type’
typedef Target<type_at_t<N,types> type;
^
prog.cpp:25:35: error: expected a type, got ‘types’
prog.cpp:25:37: error: template argument 1 is invalid
typedef Target<type_at_t<N,types> type;
^
prog.cpp:25:11: warning: ‘typedef’ was ignored in this declaration [enabled by default]
typedef Target<type_at_t<N,types> type;
^
prog.cpp:28:8: error: redefinition of ‘struct nth_apply<Target, N, types<Ts ...> >’
struct nth_apply<Target,N,types<Ts...>>{
^
prog.cpp:24:8: error: previous definition of ‘struct nth_apply<Target, N, types<Ts ...> >’
struct nth_apply<Target,N,types<Ts...>>{
^
prog.cpp:40:14: error: expected identifier before ‘*’ token
operator R(*)(Args...)() const{
^
prog.cpp:40:28: error: ‘<invalid operator>’ declared as function returning a function
operator R(*)(Args...)() const{
^
prog.cpp:65:72: error: expected template-name before ‘<’ token
template<unsigned Max, unsigned... Is> struct make_indexes:make_indexea<Max-1,Max-1,Is...>{};
^
prog.cpp:65:72: error: expected ‘{’ before ‘<’ token
prog.cpp:65:72: error: expected unqualified-id before ‘<’ token
prog.cpp:68:59: error: expansion pattern ‘unsigned int’ contains no argument packs
std::array<spAlphabet(*)(), Alphabet_Types::value,unsigned...Is> factories(indexes<Is...>){
^
prog.cpp:68:64: error: wrong number of template arguments (3, should be 2)
std::array<spAlphabet(*)(), Alphabet_Types::value,unsigned...Is> factories(indexes<Is...>){
^
In file included from /usr/include/c++/4.8/tuple:39:0,
from /usr/include/c++/4.8/functional:55,
from /usr/include/c++/4.8/memory:79,
from prog.cpp:1:
/usr/include/c++/4.8/array:81:12: error: provided for ‘template<class _Tp, unsigned int _Nm> struct std::array’
struct array
^
prog.cpp:68:84: error: ‘Is’ was not declared in this scope
std::array<spAlphabet(*)(), Alphabet_Types::value,unsigned...Is> factories(indexes<Is...>){
^
prog.cpp:68:86: error: expected parameter pack before ‘...’
std::array<spAlphabet(*)(), Alphabet_Types::value,unsigned...Is> factories(indexes<Is...>){
^
prog.cpp:68:89: error: template argument 1 is invalid
std::array<spAlphabet(*)(), Alphabet_Types::value,unsigned...Is> factories(indexes<Is...>){
^
prog.cpp: In function ‘int factories(int)’:
prog.cpp:69:36: error: ‘Is’ was not declared in this scope
return {nth_apply_t<shared_maker,Is,Alphabet_Types>{}...};
^
prog.cpp:69:53: error: template argument 2 is invalid
return {nth_apply_t<shared_maker,Is,Alphabet_Types>{}...};
^
prog.cpp:69:59: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’ in return
return {nth_apply_t<shared_maker,Is,Alphabet_Types>{}...};
^
prog.cpp: In function ‘std::array<std::shared_ptr<Alphabet> (*)(), 2u> factories()’:
prog.cpp:72:56: error: invalid use of incomplete type ‘struct make_indexes<2u>’
return factories(make_indexes<Alphabet_Types::value>{});
^
prog.cpp:65:47: error: declaration of ‘struct make_indexes<2u>’
template<unsigned Max, unsigned... Is> struct make_indexes:make_indexea<Max-1,Max-1,Is...>{};
^
prog.cpp: In function ‘int factories(int)’:
prog.cpp:70:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
prog.cpp: In function ‘std::array<std::shared_ptr<Alphabet> (*)(), 2u> factories()’:
prog.cpp:73:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^