Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6238463
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T11:13:07+00:00 2026-05-24T11:13:07+00:00

Is it possible to somehow forbid using templated function for types for which specialization

  • 0

Is it possible to somehow forbid using templated function for types for which specialization was not explicitly written. I mean something like that

template <typename T>
void foo(){}

template <>
void foo<int>(){}

int main(int argc, char* argv[]){
    foo<int>(); //ok
    foo<char>(); //Wrong - no specialized version for char.
}

I cannot skip generic version of function, cause then compiler says, that foo is not a template function when i try to specialize. I could simply write something that does not compile in generic function, and add some comment explaining why, but this would be quite non-informative. What i would like to do, is to be able to directly cause compiler to go with error like “foo() is not defined”.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T11:13:08+00:00Added an answer on May 24, 2026 at 11:13 am

    Sure: just don’t define it and you’ll get a linker error if you try to use it:

    template <typename T>
    void foo(); // not defined
    
    template <>
    void foo<int>() { }
    

    Alternatively, you can use some variation of a static assert to give a “nicer” compile-time error. Here is an example using the C++0x static_assert. Note that you must make the false value dependent upon the template parameter, otherwise the static_assert may be triggered when the template is parsed.

    template <typename T>
    struct dependent_false { enum { value = false }; };
    
    template <typename T>
    void foo()
    {
        static_assert(dependent_false<T>::value, "Oops, you used the primary template");
    }
    

    Note that it’s usually best not to specialize function templates. Instead, it is better to delegate to a specialized class template:

    template <typename T>
    struct foo_impl
    {
        static_assert(dependent_false<T>::value, "Oops, you used the primary template");
    };
    
    template<>
    struct foo_impl<int>
    {
        static void foo() { }
    };
    
    template <typename T>
    void foo()
    {
        return foo_impl<T>::foo();
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

is it possible somehow to use the NOW() function or something similar in MYSQL
Is it possible somehow to close StreamReader after calling ReadToEnd method in construction like
is it somehow possible to call a rails function or to access a rails
I'm wondering, is it possible to somehow map a key-press event to act like
is this possible somehow? I would like to redirect to different pages depending on
Is this possible somehow? I mean for my own bundle? Thank you Misha p.s.
Sounds like silly idea but I was wondering if it's possible somehow. Is it
Is it somehow possible on Swing to set a TitledBorder transparent so that a
Is it somehow possible to customize or subclass System.Windows.Forms.ColorDialog to add a few buttons?
Is it possible to somehow use a .bat file to script the schema and/or

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.