小编Wen*_*ell的帖子

可变参数模板参数推导 - 最近的铿锵声中的奇怪错误和段错误

以下代码剪切产生错误消息和随后的clang 5.0.0和当前分支的段错误.它适用于任何符合c ++ 11标准的g ++.

#include <initializer_list>

template <typename... T> struct B {};
template <typename T> struct gf {};
template <typename... A> B<A...> make_B(std::initializer_list<gf<A...>> const &V) { return {}; }

int main() {
  auto x = gf<int>{};
  auto b = make_B<int>({x, x, x}); // clang segfault
  //auto b = make_B({x, x, x}); // ok
}
Run Code Online (Sandbox Code Playgroud)

错误消息显示

test.cpp:5:26: error: too many template arguments for class template 'gf'
template <typename... A> B<A...> make_B(std::initializer_list<gf<A...>> const &V) { return {}; }
                                               ^ …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11 clang++

7
推荐指数
0
解决办法
167
查看次数

在生成器表达式中使用 cmake 选项

我想在生成器表达式中使用 cmake 选项来打开某个编译标志。从文档中我不清楚如何实现这一点。

我想写一些类似的东西

option(MYOPTION " ... " OFF)
...
add_compile_options($<$<MYOPTION>:-lblas>)
Run Code Online (Sandbox Code Playgroud)

这不起作用。

有没有办法实现这一目标?

cmake

7
推荐指数
1
解决办法
1933
查看次数

标签 统计

c++ ×1

c++11 ×1

clang++ ×1

cmake ×1

variadic-templates ×1