使用下面的代码:
struct MyStructure {
MyStructure(char* d, int size) {}
template <typename T>
MyStructure(T&& rhs) : MyStructure(rhs.data(), rhs.size()) {}
};
如果data
和size
函数存在于传入的任何对象中,我如何才能只启用第二个构造函数?
Sam Varshavchik的意思是,这应该在c++ 11中工作:
struct MyStructure {
MyStructure(char* d, int size) {}
template <typename T,
decltype(static_cast<char*>(std::declval<T &&>().data())) = nullptr,
decltype(static_cast<int>(std::declval<T &&>().size())) = 0
>
MyStructure(T&& rhs) : MyStructure(rhs.data(), rhs.size()) {}
};