我有多个类共享相同的公共typedef,如
struct A { using Container = std::array<A, 3>; };
struct B { using Container = std::vector<B>; };
struct C { using Container = std::array<C, 5>; };
Run Code Online (Sandbox Code Playgroud)
现在我有一个类,它获取一个只包含有效类的参数包,但它必须存储容器的元组.伪代码:
template <typename... Modules>
struct Collector
{
std::tuple<Modules...::Container> mContainers;
};
Run Code Online (Sandbox Code Playgroud)
::Container在打开包装时是否有一种优雅的方式来应用?
我目前正在尝试实现一个toString函数,该函数调用.toString()或std::to_string()取决于推导类型可用的函数
到目前为止,我有这个工作片段:
#include <iostream>
#include <string>
template <class T>
auto toString(const T& obj)
-> decltype(obj.toString(), std::string())
{
return obj.toString();
}
template <class T>
auto toString(const T& obj)
-> decltype(std::to_string(obj), std::string())
{
return std::to_string(obj);
}
template <class T>
auto toString(const T& obj)
-> decltype(std::string(obj))
{
return std::string(obj);
}
class Foo{
public:
std::string toString() const {
return "Hello";
}
};
int main()
{
Foo bar;
std::cout << toString(bar);
std::cout << toString(5);
std::cout << toString("Hello const char*"); …Run Code Online (Sandbox Code Playgroud)