【问题标题】:Is it possible to have a library implementation of is_trivially_constructible without relying on compiler builtins?是否可以在不依赖编译器内置函数的情况下实现 is_trivially_constructible 的库?
【发布时间】:2018-04-18 13:42:42
【问题描述】:

我正在使用不具有 is_trivially_constructible 类型特征的 gcc-4.9。查看 libstdc++ 源代码(type_traits),这取决于编译器本身实现的 __is_trivially_constructible。

我想知道是否可以将这个特性作为一个库来实现,而不是依赖编译器,这样我就可以在我的项目中使用它,而这个项目使用 gcc-4.9 卡住了。

【问题讨论】:

  • 我不这么认为。例如。在llvm implementation 中,使用了占位符is_scalar,这似乎是第一个近似值。
  • 作为记录,MSVC (2015) 也使用了内在函数。
  • @Jodocus LLVM 也使用内部函数:github.com/llvm-mirror/libcxx/blob/master/include/…
  • @Holt 是的,如果它不可用,它会退回到实际上是错误的东西上,这表明如果可能的话,libc++ 的作者会这样做。
  • @Jodocus,我也在寻找是否有一些近似的实现。这样一些类型会受益。

标签: c++ typetraits c++-standard-library libstdc++


【解决方案1】:

不,这是不可能的(否则我们可能已经在 libstdc++ 中完成了!)

我们不得不等待新的内置编译器被实现。

使用is_scalar 是一种保守的近似,但对于可简单构造的类类型显然是错误的。

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多