title: C++ Google Type-Parameterized and Value-Parameterized Tests combined?
body: <p>I would like to be able to parameterize my tests for various types through the following code snippet:</p>
  <pre><code>template &lt;typename T&gt;
  class MyTestSuite : public testing::TestWithParam&lt;tuple&lt;T, vector&lt;vector&lt;T&gt;&gt;, T, T&gt;&gt;
  {
  public:
      MyTestSuite()
      {
          _var = get&lt;0&gt;(GetParam());
          // and the rest of the test params
      }
  protected:
      T _var;
  };
  TYPED_TEST_SUITE_P(MyTestSuite);
  TYPED_TEST_P(MyTestSuite, MyTests)
  {
      ASSERT_EQ(this-&gt;_expected, this-&gt;DoSomething(this-&gt;_var));
  }
  REGISTER_TYPED_TEST_SUITE_P(MyTestSuite,
                              MyTests);
  using MyTypes = ::testing::Types&lt;size_t&gt;;
  INSTANTIATE_TYPED_TEST_SUITE_P(
      MyGroup,
      MyTestSuite,
      ::testing::Combine(
          ::testing::Values(4, vector&lt;vector&lt;size_t&gt;&gt;{{1, 2}, {1, 3}, {3, 4}}, 1, 1),
          ::testing::Values(10, vector&lt;vector&lt;size_t&gt;&gt;{{1, 2}, {1, 3}, {3, 4}}, 1, 2),
          ::testing::Values(20, vector&lt;vector&lt;size_t&gt;&gt;{{1, 2}, {1, 3}, {3, 4}}, 1, 4)));
  </code></pre>
  <p>and bump into the following compilation error:</p>
  <pre><code>error: there are no arguments to ‘GetParam’ that depend on a template parameter, so a declaration of ‘GetParam’ must be available [-fpermissive]
  [build]   284 |                 _var = get&lt;0&gt;(GetParam());
  </code></pre>
  <p>This post has been quite some time: <a href="https://stackoverflow.com/questions/8507385/google-test-is-there-a-way-to-combine-a-test-which-is-both-type-parameterized-a">Google Test: Is there a way to combine a test which is both type parameterized and value parameterized?</a>
  Is it still not possible to kill these 2 birds with one stone, judging from the compilation error above?</p>