Skip to content

Instantly share code, notes, and snippets.

@engie
Created September 26, 2010 12:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save engie/597890 to your computer and use it in GitHub Desktop.
Save engie/597890 to your computer and use it in GitHub Desktop.
template<typename Signature>
class callback
{
};
template<typename R , typename ARG_TYPE0>
class callback<R( ARG_TYPE0)>
{
public:
callback() {}
};
template< typename ARG_TYPE0>
class callback<void( ARG_TYPE0)>
{
public:
callback() {}
};
int main(int argc, char** argv)
{
callback<void(const int&)> op;
}
@engie
Copy link
Author

engie commented Sep 26, 2010

Clang (revision: 114794) produces error:

stephen@hanuman:~/ise/production$ ~/dev/bin/clang test.cpp 
clang: SemaTemplateInstantiate.cpp:962: clang::TypeSourceInfo* clang::Sema::SubstType(clang::TypeSourceInfo*, const clang::MultiLevelTemplateArgumentList&, clang::SourceLocation, clang::DeclarationName): Assertion `!ActiveTemplateInstantiations.empty() && "Cannot perform an instantiation without some context on the " "instantiation stack"' failed.
0  clang           0x000000000214fe41
1  clang           0x000000000214fc34
2  libpthread.so.0 0x00007f341098d8f0
3  libc.so.6       0x00007f340fc7ca75 gsignal + 53
4  libc.so.6       0x00007f340fc805c0 abort + 384
5  libc.so.6       0x00007f340fc75941 __assert_fail + 241
6  clang           0x000000000138b086 clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) + 132
7  clang           0x000000000138b587 clang::Sema::SubstParmVarDecl(clang::ParmVarDecl*, clang::MultiLevelTemplateArgumentList const&) + 127
8  clang           0x000000000138aca4
9  clang           0x000000000139160d
10 clang           0x000000000138de9a
11 clang           0x000000000138ac5d
12 clang           0x000000000138e7fa
13 clang           0x000000000138e268
14 clang           0x0000000001390c35
15 clang           0x000000000138d2e7 clang::Sema::Subst(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&, clang::MultiLevelTemplateArgumentList const&) + 105
16 clang           0x0000000001380e50
17 clang           0x0000000001384d4e clang::Sema::getMoreSpecializedPartialSpecialization(clang::ClassTemplatePartialSpecializationDecl*, clang::ClassTemplatePartialSpecializationDecl*, clang::SourceLocation) + 348
18 clang           0x000000000138c4dd clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) + 889
19 clang           0x00000000013bb1a5 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::PartialDiagnostic const&, std::pair) + 317
20 clang           0x00000000013bb623 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, unsigned int) + 167
21 clang           0x0000000001243bb6 clang::Sema::ActOnUninitializedDecl(clang::Decl*, bool) + 1344
22 clang           0x00000000011aaec5 clang::Parser::ParseDeclarationAfterDeclarator(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&) + 2363
23 clang           0x00000000011aa2bd clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*) + 741
24 clang           0x00000000011a9fb7 clang::Parser::ParseSimpleDeclaration(unsigned int, clang::SourceLocation&, clang::AttributeList*, bool) + 399
25 clang           0x00000000011a9dec clang::Parser::ParseDeclaration(unsigned int, clang::SourceLocation&, clang::CXX0XAttributeList) + 896
26 clang           0x0000000001199419 clang::Parser::ParseStatementOrDeclaration(bool) + 737
27 clang           0x000000000119a4d6 clang::Parser::ParseCompoundStatementBody(bool) + 248
28 clang           0x000000000119de0d clang::Parser::ParseFunctionStatementBody(clang::Decl*) + 115
29 clang           0x00000000011a40ab clang::Parser::ParseFunctionDefinition(clang::Parser::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&) + 1069
30 clang           0x00000000011aa1d6 clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*) + 510
31 clang           0x00000000011a3bf4 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&, clang::AttributeList*, clang::AccessSpecifier) + 1058
32 clang           0x00000000011a3c5f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::AttributeList*, clang::AccessSpecifier) + 95
33 clang           0x00000000011a35bf clang::Parser::ParseExternalDeclaration(clang::CXX0XAttributeList, clang::Parser::ParsingDeclSpec*) + 1681
34 clang           0x00000000011a2e9f clang::Parser::ParseTopLevelDecl(clang::OpaquePtr&) + 267
35 clang           0x000000000118cc88 clang::ParseAST(clang::Sema&, bool) + 328
36 clang           0x0000000000f0b020 clang::ASTFrontendAction::ExecuteAction() + 264
37 clang           0x000000000102b114 clang::CodeGenAction::ExecuteAction() + 988
38 clang           0x0000000000f0ac6a clang::FrontendAction::Execute() + 320
39 clang           0x0000000000ef4e68 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 752
40 clang           0x0000000000ea8aec clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 856
41 clang           0x0000000000e9bf5f cc1_main(char const**, char const**, char const*, void*) + 958
42 clang           0x0000000000ea48fa main + 499
43 libc.so.6       0x00007f340fc67c4d __libc_start_main + 253
44 clang           0x0000000000e9b619
Stack dump:
0.  Program arguments: /home/stephen/dev/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -S -disable-free -main-file-name test.cpp -mrelocation-model static -mdisable-fp-elim -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version 2.20.1 -resource-dir /home/stephen/dev/lib/clang/2.9 -ferror-limit 19 -fmessage-length 179 -fexceptions -fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/cc-tl45qE.s -x c++ test.cpp 
1.  test.cpp:22:34: current parser token ';'
2.  test.cpp:21:1: parsing function body 'main'
3.  test.cpp:21:1: in compound statement ('{}')
clang: error: clang frontend command failed due to signal 6 (use -v to see invocation)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment