This is a way to compose template<int> from template<int, int>
I tried the following code, but it does not compile:
#include <iostream> template<int N, int M> struct A { enum E { n = N, m = M }; }; template<template<int> class C> struct B : public C<8> { }; int main(int argc, const char *argv[]) { typedef B< A<4> > T; T b; std::cout << T::n << std::endl; std::cout << T::m << std::endl; return 0; }
Error:
test3.cxx: In function 'int main(int, const char**): test3.cxx:10:23: error: wrong number of template arguments (1, should be 2) test3.cxx:3:12: error: provided for 'template<int N, int M> struct A test3.cxx:10:25: error: template argument 1 is invalid test3.cxx:10:28: error: invalid type in declaration before '; token test3.cxx:13:22: error: 'T is not a class or namespace test3.cxx:14:22: error: 'T is not a class or namespace
source share