// { dg-do compile { target c++14 } }
template<int A, int B>
  struct S1
  {
    static constexpr int a = A;
    static constexpr int b = B;
  };
template<class T>
  constexpr int var = T::a + T::b;
template<template<int,int> class T, int A>
  constexpr int var2 = var<T<A, A>> + A;
int main ()
{
  static_assert(var2<S1, 40> == 120, "");
}