Is it possible to call templated user-defined conversion operator with explicit template arguments?

前端 未结 2 378
死守一世寂寞
死守一世寂寞 2021-01-22 01:21

Lets consider the following code (compiles successfully with clang++ 7.0.0, compiler arguments are -std=c++17 -Wall -Wextra -Werror -pedantic-errors):

相关标签:
2条回答
  • 2021-01-22 01:34

    I understand that this question is for advanced scenari and is asking if the code is compliant with the standard but let's take a step back here for a second:

    Operator conversion is design to define "static-cast-like" operation. It doesn't really make sense to make a static cast depend on another templated type

    0 讨论(0)
  • 2021-01-22 01:49

    [temp.names](Names of template specializations)/1:

    A template specialization can be referred to by a template-id:

    simple-template-id:
        template-name < template-argument-listₒₚₜ >
    
    template-id:
        simple-template-id
        operator-function-id < template-argument-listₒₚₜ >
        literal-operator-id < template-argument-listₒₚₜ >
    
    template-name:
        identifier
    

    As you can see, there is no conversion-function-id

    conversion-function-id:
        operator conversion-type-id
    

    mentioned in the template-id grammar.

    0 讨论(0)
提交回复
热议问题