我想把C流包装在一个模板类中,这样所有
你能改变下面的代码,使它编译时不会改变整体意图吗?
#include <iostream>
class Foo
{
private:
std::ostream& os;
public:
explicit Foo( std::ostream& os ) : os( os ) {};
template<class T>
Foo& operator<<( const T& t )
{
os << t << '!';
return *this;
}
};
int main()
{
Foo( std::cout ) << "test" << '\n'; // works fine
Foo( std::cout ) << "test" << std::endl; // compilation error
return 0;
}
我假设std::endl具有某种类型,因此被模板化方法“捕获”。
你也许应该用SFINAE来保护它,并完美地转发这个论点。
template<class T> auto operator<<(T &&t)
-> decltype(os << std::forward<T>(t) << '!', *this)
{
return os << std::forward<T>(t) << '!', *this;
}
现在,这应该接受每个参数 std::ostream
可以打印并且无法与其他所有内容一起编译。
正如kmdreko所建议的,您需要为模板函数添加一个重载
(std::endl是模板函数,不是类或简单类型)
像这样:
#include <iostream>
class Foo
{
private:
std::ostream& os;
public:
explicit Foo(std::ostream& os) : os(os) {};
// for classes
template<class T>
Foo& operator<<(const T& t)
{
os << t << '!';
return *this;
}
// for endl
Foo& operator<<(std::ostream& (*pf) (std::ostream&)) {
os << pf;
return *this;
}
};
问题内容: 有没有一种方法可以为使用模板的Cython包装的C ++类创建Python包装器?(即完全按照此处显示的内容进行操作,但要使用模板:http : //docs.cython.org/src/userguide/wrapping_CPlusPlus.html#create-cython- wrapper- class)。 我知道融合类型的变通方法(https://groups.googl
是否有一种方法可以将Thymeleaf模板存储在与类相同的包中而不是或?例如,这样的结构: 为了实现这一点,我必须如何配置Spring和Thymeleaf?
我有以下问题:一个类模板a,有几个模板参数,我想构建一个类B,它以a为模板参数,并提取a的第一个模板参数,以便在某种方法中使用它(想想从std::vector 中提取int并返回默认的int{})。 我知道这种天真的方法不会编译,但我不知道如何实现这样的东西。感谢任何提示。
还尝试在专门化的中进行模板方法专门化: 这一次它编译,但调用原始方法,即 解决方案
问题内容: 我试图将值放入“标题”模板中,例如标题和导航链接,但无法访问我从包含的模板发送到主模板的变量。 渲染模板: index.html模板: header.html模板: 显然,它不会那样工作。 也许有一种方法可以解析/获取模板并将变量放入其中,而无需将整个头文件放入代码中?然后,我可以将该模板作为变量发送到我的主模板。但这似乎并不是最好的方法。 问题答案: 您可以在调用模板时将上下文传递给
问题内容: 我最近开始学习Go。我有一个像网络应用程序这样的示例。我有: 我无法加载本地。当我写的时候它被加载了。如何加载本地js文件?我不擅长使用Go编写代码,也没有编写完整的代码。因此,请尝试解释非常简单。提前致谢! 问题答案: 您需要a 或a 来在请求时将文件内容()发送到Web浏览器。 您有3种选择: 手动执行 这是更复杂的解决方案。就像在处理程序函数中,您读取文件的内容,设置适当的响应内