似乎调试符号和自动模式存在问题。
我有一个类中的自动函数:
当我使用G++(4.8.2)和-g编译时,我遇到了这个错误:
如果我删除-g或明确设置类型,则它可以完美运行。
clang++不应该是C++14功能完整的吗?
这些限制是否有解决方法,还是我已经失败了?
我有一个类中的自动函数:
#include <cstddef>
template <typename T>
struct binary_expr {
auto operator()(std::size_t i){
return 1;
}
};
int main(){
binary_expr<double> b;
return 0;
}
当我使用G++(4.8.2)和-g编译时,我遇到了这个错误:
g++ -g -std=c++1y auto.cpp
auto.cpp: In instantiation of ‘struct binary_expr<double>’:
auto.cpp:11:25: required from here
auto.cpp:4:8: internal compiler error: in gen_type_die_with_usage, at dwarf2out.c:19484
struct binary_expr {
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bugs.gentoo.org/> for instructions.
使用clang++ (3.4)和-g选项,我得到了以下结果:
clang++ -g -std=c++1y auto.cpp
error: debug information for auto is not yet supported
1 error generated.
如果我删除-g或明确设置类型,则它可以完美运行。
clang++不应该是C++14功能完整的吗?
这些限制是否有解决方法,还是我已经失败了?
operator()
返回一个T
,如果是这种情况,那么我不认为有任何理由使编译器推断返回类型。为什么不明确声明T
作为返回类型呢? - Shoe