fork(1) download
  1. #include <iostream>
  2.  
  3. template<typename... T> using void_t = void;
  4.  
  5. template<typename T> struct TemporaryBindObject {};
  6.  
  7. template<template <typename...> class Dest, typename T, typename = void_t<>> struct toTypesOf
  8. : std::false_type
  9. {};
  10. template<template <typename...> class Dest, template<typename...> class Src, typename... Ts> struct toTypesOf<Dest, Src<Ts...>, void_t<Dest<Ts..., float>>>
  11. : std::true_type
  12. {};
  13.  
  14. template<typename T> struct OneParamStruct{};
  15. template<typename T1, typename T2> struct TwoParamStruct{};
  16.  
  17. int main()
  18. {
  19. std::cout << "Can bind to TwoParamStruct: " << toTypesOf<TwoParamStruct, TemporaryBindObject<int>>::value << std::endl;
  20. std::cout << "Can bind to OneParamStruct: " << toTypesOf<OneParamStruct, TemporaryBindObject<int>>::value << std::endl;
  21. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Can bind to TwoParamStruct: 1
Can bind to OneParamStruct: 0