나는 문제가 아니라 이론적 알고 있지만 자리가 예를 들어 같은 템플릿으로 정의 할 것인지 생각 : 사용과왜 형식이 아닌 템플릿 매개 변수를 사용하여 std :: bind의 placeholder가 구현되지 않았습니까?
namespace std {
namespace placeholders {
template <size_t> struct placeholder { constexpr placeholder() {}; };
template <size_t N> constexpr placeholder<N> _{};
}
}
:
std::bind(foo, std::placeholders::_<1>, std::placeholders::_<2>);
또는 C++ 11 :
namespace std {
namespace placeholders {
template <size_t> struct _ { };
}
}
코드는 그 명확성을 잃지 않을 것이며 우리는 그것을 사용하여 멋진 메타 프로그래밍을 할 수있을 것입니다. 그럼 ... std::bind
의 자리 표시자가 비 형식 템플릿 매개 변수를 사용하여 구현되지 않은 이유는 무엇입니까?
구문이 유효하지 않습니다. '_ <1>'도 여전히 타입이며, 타입으로 값을 전달할 수 없습니다 : 최소한 _{}'이 필요합니다. 또는 템플릿 struct placeholder {constexpr placeholder() {};}; 템플릿 constexpr 자리 표시 자 _ {};'? 그리고 2 등분 할 때, C++ 11에는 존재하지 않는 변수 템플릿이 필요합니다. 그래서, 당신은 무엇을 알고 싶습니까? –
Yakk