templates 相关问题

模板标签用于多种上下文:通用编程(尤其是C ++),以及使用模板引擎生成数据/文档。在实现繁重的问题上使用此标记时 - 标记实现编写的代码语言。

如何实现一个函数来调用任何模板化 lambda 函数?

我有一个 value_t 将值包装为类型: 模板 struct value_t { static constexpr auto value = _v; }; 我可以使用 take_off 来提取类型和值: 模板 我有一个 value_t 将值包装为类型: template <auto _v> struct value_t { static constexpr auto value = _v; }; 我可以使用 take_off 来提取类型和值: template <typename T> struct take_off { using result = T; }; template <auto _v> struct take_off<value_t<_v>> { static constexpr auto result = _v; }; 现在我想通过调用 invoke(c++20 或 23)来调用具有任何模板参数和函数参数的任何 lambda 函数: auto test_fn = []<typename T, typename T2, T... Vs>(int a, int b){ (..., (std::cout << (T2)Vs << std::endl)); std::cout << a << b << std::endl; }; // template <typename...> // auto invoke(test_fn, ...) invoke<int, double, value_t<1>, value_t<2>, value_t<5>>(test_fn, 1, 2); 我的invoke实现是: template <typename... Ts> decltype(auto) invoke(auto _fn, auto... _args) { using ret_type = decltype(_fn.template operator()<take_off<Ts>::result...>(_args...)); if constexpr (std::is_void_v<ret_type>) { _fn.template operator()<take_off<Ts>::result...>(_args...); return; } else { return _fn.template operator()<take_off<Ts>::result...>(_args...); } } 它在 MSVC 上运行良好。 但是用clang编译的时候却出现了错误: error: missing 'typename' prior to dependent type name `take_off<Ts>::result` 如果我使用 invoke 代替,auto 将不再适用于 typename take_off<Ts>::result 模板参数。 那么有没有办法实现这个invoke? 您期望前 2 个 typename take_off<Ts>::result。 您可以将代码重写为 template <typename T1, typename T2, typename... Ts> decltype(auto) invoke(auto _fn, auto... _args) { return _fn.template operator()< typename take_off<T1>::result, typename take_off<T2>::result, take_off<Ts>::result...>(_args...); } 演示

回答 1 投票 0

C++ (03) SFINAE 方面编译器独立吗?

我有一个头文件,其功能在很大程度上依赖于SFINAE的成功。在目前的 g++ 4.6 中,它按预期工作。我是否应该假设,我的代码将以同样的方式无缝运行......

回答 2 投票 0

为什么允许此模板代码违反 C++ 的私有访问说明符?

在下面的代码中,我在这里找到了: http://bloglitb.blogspot.com/2010/07/access-to-private-members-thats-easy.html 它似乎直接跨越了 C++ 的私有访问说明符。它允许...

回答 1 投票 0

Jinja:如何覆盖超级块中的变量?

我有一个模板parent.tpl: {% 设置 myvar = 'AAA' %} {% 区块面值 %} {{ myvar }} {% 末端嵌段 %} 和一个孩子.tpl {% 扩展“parent.tpl”%} {% 区块面值 %} {% 设置 myvar = 'BBB' %} {{ 超级()...

回答 2 投票 0

如何在Struts 2中使用带<s:head>标签的CSS文件?

我正在使用 Struts 2。在我的 JSP 中,我有一个 标签。总之,这会触发 CSS 链接插入到最终的 HTML 文件中: 我正在使用 Struts 2。在我的 JSP 中,我有一个 <s:head /> 标签。无论如何,这会触发 CSS 链接插入到最终的 HTML 文件中: <link href="/app/styles/design.css" rel="stylesheet" type="text/css" media="all"/> <link href="/app/styles/print.css" rel="stylesheet" type="text/css" media="print"/> <link rel="stylesheet" href="css/flick/jquery-ui-1.10.0.xyz.min.css" /> Struts 如何知道这个文件?如何添加或更改其他 CSS 文件? Struts UI 标签通过执行 freemarker 模板生成 HTML 内容。默认模板位于核心包的 /template 文件夹下。 head 标签的默认模板是 head.ftl。 每个主题有多个文件。通过为您的标签、页面或应用程序选择主题来使用相应的模板。请参阅有关选择主题的更多信息。 如果您想更改某些模板,您需要创建一个模板文件夹并将其指定为templateDir。然后将您的 head.ftl 复制/粘贴到相应主题下的此文件夹中,例如 /template/xhtml/head.ftl。现在,当加载模板时,它将在此文件夹中搜索您覆盖的模板。 另一种解决方案可以通过扩展现有主题。您可以选择适合您的任何内容。 这是一件令人讨厌的事情。毕竟我发现应用程序正在使用 sitemesh 并且 在最终的 jsp 中使用 <s:head> 标签。这意味着前 3 个 CSS 文件来自 sitemesh 模板,struts/xhtml/styles.css 来自 xhtml fremarker 模板。

回答 2 投票 0

Excel 中的 Normal.dotm 等效项,用于引用相同的单个 VBA 代码

只是好奇。 到目前为止,我知道的唯一方法是使用代码创建一个加载项,将其放入某个受信任的目录中,并希望它在您需要时打开。缺点是有时打不开...

回答 2 投票 0

通过返回类型解决重载?

函数重载解析不考虑返回类型,但是我在 cppreference 上遇到了一段代码 撇开 SFINAE 不谈,这里是如何进行重载解析的: #包括 函数重载解析不考虑返回类型,但是我在 cppreference 上遇到了一段代码 SFINAE 不谈,这里是如何进行重载解析的: #include <iostream> // This overload is added to the set of overloads if C is // a class or reference-to-class type and F is a pointer to member function of C template<class C, class F> auto test(C c, F f) -> decltype((void)(c.*f)(), void()) { std::cout << "(1) Class/class reference overload called\n"; } // This overload is added to the set of overloads if C is a // pointer-to-class type and F is a pointer to member function of C template<class C, class F> auto test(C c, F f) -> decltype((void)((c->*f)()), void()) { std::cout << "(2) Pointer overload called\n"; } // This overload is always in the set of overloads: ellipsis // parameter has the lowest ranking for overload resolution void test(...) { std::cout << "(3) Catch-all overload called\n"; } int main() { struct X { void f() {} }; X x; X& rx = x; test(x, &X::f); // (1) test(rx, &X::f); // (1), creates a copy of x test(&x, &X::f); // (2) test(42, 1337); // (3) } 我已经查过了。这段代码有效。那么,这里是否使用尾随返回类型来进行重载解析? 重载解析不考虑返回类型 它们意味着,给定几个可行的重载,它们不会根据返回类型(是否与返回值的使用方式匹配,等等)消除歧义。 另一方面,当由于 SFINAE 捕获的错误而拒绝重载时,错误是在返回类型中还是在其他地方并不重要。

回答 1 投票 0

Django ListView 不显示数据库中的数据,尽管已填充模型

我是 Django 新手,正在尝试创建一个简单的博客应用程序。我有一个 ListView 应该显示数据库中的所有博客文章,但模板显示一个空页面。我已经确认了

回答 1 投票 0

创建对象时,什么是空模板参数<>?

以下是一些有效的语法: std::uniform_real_distribution<> 随机化器(0, 100); 它是如何工作的,它会自动推导出对象模板吗?为什么需要在...处写<>

回答 3 投票 0

MUI 免费主题仪表板存在许多错误

我正在尝试使用 React、MUI、SASS 和 typescript 创建一个新的前端项目,并使用 MUI 建议的仪表板模板(https://mui.com/material-ui/getting-started/templates/)。为此,我使用了...

回答 1 投票 0

如何在 OpenCL 内核中使用 C++ 模板?

我是OpenCL的新手。 我有一个使用模板的算法。它与 OpenMP 并行化配合得很好,但现在数据量已经增长,处理它的唯一方法是将其重写为...

回答 6 投票 0

Cygwin gcc 编译器使用 GAlib 进行模板实例化时出现问题

所有,我在 Win 7 pro x64 上使用 Cygwin gcc 4.8.1 和 Netbeans 7.3.1。我尝试构建 GAlib 项目但遇到模板实例化问题: g++ -g -Wall -I.. -c ex17.C ../嘎/

回答 1 投票 0

非模板类与模板类的多个定义

为什么编译器会抱怨多个 .cpp 文件中定义的非模板类,但对于其定义在各个 .cpp 文件中重复的模板类却没问题(通过包含...

回答 3 投票 0

模板循环包含

以下代码可以完美编译: // 我的文件.h #ifndef MYFILE_H_INCLUDED #定义 MYFILE_H_INCLUDED 模板 我的班级 { 民众: 无效我的方法(); } #inc...

回答 2 投票 0

将类型名传递给 lambda 最简洁的方法是什么?

我有兴趣编写一个 lambda 函数,除其他外,该函数将调用 std::make_unique。 要调用 std::make_unique 我需要一个类型名,但似乎为了直接传递

回答 2 投票 0

在 static_assert 输出中集成类型名称?

我喜欢提供有用的错误/消息,我也想为我的 static_asserts 这样做。问题是,它们依赖于模板参数。通常,这些参数会显示在 w...

回答 5 投票 0

在自定义可调用类模板中使用 decltype(auto) 作为返回类型

我正在自定义可调用类模板中尝试使用 decltype(auto) 来简化 std::function 的行为。我的目标是保持准确的返回类型,包括 cons 这样的限定符...

回答 1 投票 0

函数模板作为别名

我有一个带有可变参数的函数模板,我想将其实例化用作模板参数。 模板 constexpr auto foo (参数&&... 参数) noexc...

回答 1 投票 0

如果哈希映射的值也是哈希容器,例如unordered_map<int, unordered_set<...>>,如何为该值指定自定义哈希和等于?

现在我已经为 unordered_set 准备好了哈希函数和相等函数 自动 equalFunc = [](...){...}; 自动 hashFunc = [](...){...}; 如果单独使用 unordered_set,我知道我可以执行以下操作

回答 1 投票 0

有没有一种方法可以按照传统的代码调试方式来调试 Velocity 模板?

我们在 Web 应用程序中大量使用 Velocity。 虽然调试 Java 方面并确保正确填充 Velocity Context 很容易,但这是非常有价值的......

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.