fork(1) download
  1. #include <algorithm>
  2. #include <functional>
  3. #include <iostream>
  4. #include <memory>
  5. #include <string>
  6. #include <type_traits>
  7. #include <utility>
  8.  
  9. template <class T, template <class...> class TT>
  10. struct is_instantiation_of : std::false_type
  11. {};
  12.  
  13. template <template <class... > class TT, class... A>
  14. struct is_instantiation_of<TT<A...>, TT> : std::true_type
  15. {};
  16.  
  17. static_assert(is_instantiation_of<std::shared_ptr<int>, std::shared_ptr>::value, "int");
  18. static_assert(is_instantiation_of<std::shared_ptr<double>, std::shared_ptr>::value, "double");
  19. static_assert(is_instantiation_of<std::string, std::basic_string>::value, "str");
  20. static_assert(!is_instantiation_of<std::shared_ptr<int>, std::weak_ptr>::value, "NO");
  21.  
  22. int main()
  23. {
  24. }
Success #stdin #stdout 0s 3336KB
stdin
Standard input is empty
stdout
Standard output is empty